1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-29 05:24:57 +03:00

Began refactoring unary predicates

This commit is contained in:
Graham Nelson 2020-08-24 00:22:48 +01:00
parent 108173535b
commit 23ff600463
61 changed files with 1388 additions and 635 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6R03 'Krypton' (23 August 2020)
v10.1.0-alpha.1+6R04 'Krypton' (24 August 2020)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 23 August 2020
Build Number: 6R03
Build Date: 24 August 2020
Build Number: 6R04

View file

@ -72,6 +72,7 @@ which use this module:
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">i6_schema_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">binary_predicate_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">bp_family_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">up_family_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">pcalc_term_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">pcalc_func_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">pcalc_prop_CLASS</span>
@ -80,6 +81,7 @@ which use this module:
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">bp_family</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_func</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
@ -107,6 +109,8 @@ 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">'r'</span><span class="plain-syntax">, </span><a href="2-up.html#SP3" 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">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><a href="2-tap.html#SP2" class="function-link"><span class="function-syntax">Calculus::Adjectival::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-tcp.html#SP2" class="function-link"><span class="function-syntax">Calculus::Creation::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ter.html#SP2" class="function-link"><span class="function-syntax">Calculus::Equality::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CalculusModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>

View file

@ -1019,7 +1019,7 @@ aren't being worn, or aren't even clothing.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bp.html#SP40">&#167;40</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-bpf.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresscurrent">bp</li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-ter.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-bpf.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresscurrent">bp</li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-ter.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -93,7 +93,7 @@ the predicate's implementation.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure bp_family is private to this section.</li></ul>
<ul class="endnotetexts"><li>The structure bp_family is accessed in 2/upf and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b><span class="extract"><span class="extract-syntax">STOCK_BPF_MTID</span></span> is for stocking up on relations. Stage 1 happens very early
in Inform's run, and allows built-in essentials such as equality to be created.
Stage 2 is later on, when the world model is complete but before code is compiled,
@ -106,12 +106,14 @@ and gives an opportunity to make, say, one relation for every value property.
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">STOCK_BPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicateFamilies::first_stock</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-upf.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::stock</span></a><span class="plain-syntax">(1);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_family</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_BPF_MTID</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">BinaryPredicateFamilies::second_stock</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-upf.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::stock</span></a><span class="plain-syntax">(2);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">bp_family</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_BPF_MTID</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
@ -248,7 +250,7 @@ something like "one-to-one".
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-up.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresscurrent">bpf</li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-bp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-tcp.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresscurrent">bpf</li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-bp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -135,7 +135,7 @@ error.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">involves_action_variables</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure annotated_i6_schema is accessed in 2/bpf.</li></ul>
<ul class="endnotetexts"><li>The structure annotated_i6_schema is accessed in 2/tap, 2/bpf.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Building schemas. </b>The following makes up a new schema from a <span class="extract"><span class="extract-syntax">printf</span></span>-style formatted string:
</p>
@ -525,7 +525,7 @@ in its kind.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-cm.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresscurrent">cs</li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-up.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-cm.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresscurrent">cs</li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-upf.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,221 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>The Adjectival Predicates</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
MathJax = {
tex: {
inlineMath: '$', '$'], ['\\(', '\\)'
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="index.html"><span class="selectedlink">calculus</span></a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'The Adjectival Predicates' generated by Inweb-->
<div class="breadcrumbs">
<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#2">Chapter 2: Predicates</a></li><li><b>The Adjectival Predicates</b></li></ul></div>
<p class="purpose">To define the predicates connected to limguistic adjectives.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Adjectival::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">Calculus::Adjectival::start</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax"> = </span><a href="2-upf.html#SP1" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::new</span></a><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">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPECHECK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP2" class="function-link"><span class="function-syntax">Calculus::Adjectival::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">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">INFER_KIND_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP2" class="function-link"><span class="function-syntax">Calculus::Adjectival::infer_kind</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">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">ASSERT_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP3" class="function-link"><span class="function-syntax">Calculus::Adjectival::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">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">TESTABLE_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP3" class="function-link"><span class="function-syntax">Calculus::Adjectival::testable</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">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">TEST_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP3" class="function-link"><span class="function-syntax">Calculus::Adjectival::test</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">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">SCHEMA_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP3" class="function-link"><span class="function-syntax">Calculus::Adjectival::get_schema</span></a><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">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tap.html#SP2" class="function-link"><span class="function-syntax">Calculus::Adjectival::log</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Adjectival::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">up_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="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"not-"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::get_nominative_singular</span><span class="plain-syntax">(</span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</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">"%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="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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Adjectival::infer_kind</span><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::first_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::get_domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</span><span class="plain-syntax">) *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</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">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">Calculus::Adjectival::typecheck</span><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="reserved-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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Propositions::Checker::type_check_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</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">return</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">return</span><span class="plain-syntax"> </span><span class="constant-syntax">DECLINE_TO_MATCH</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Next, asserting \(adjective(t)\). We know that \(t\) evaluates to a kind
of value over which \(adjective\) is defined, or the proposition would
not have survived type-checking. But only some adjectives can be asserted;
"open" can, but "visible" can't, for instance. <span class="extract"><span class="extract-syntax">Adjectives::Meanings::assert</span></span> returns a
success flag.
</p>
<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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Adjectival::assert</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::Adjectival::assert</span></span>:<br/><a href="2-tap.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">now_negated</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</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">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">found</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">parity</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Assert::subject_of_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ots</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Assert::spec_of_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inst</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::as_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inst</span><span class="plain-syntax">) </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">inst</span><span class="plain-syntax">);</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">try</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ox</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">try</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">try</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">try</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">try</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">domain_of_definition</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">domain_of_definition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">ots</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ox</span><span class="plain-syntax">) </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">ox</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ots</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">found</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">Propositions::Assert::issue_couldnt_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</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">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">Calculus::Adjectival::testable</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::Adjectival::testable</span></span>:<br/><a href="2-tap.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</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">Adjectives::Meanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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">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">Calculus::Adjectival::test</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">Calculus::Adjectival::test</span></span>:<br/><a href="2-tap.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">TERM_DOMAIN_CALCULUS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">about</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</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">Adjectives::Meanings::has_EORP_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::get_possession_marker</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">possessed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">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">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">possessed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Adjectival::get_schema</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">Calculus::Adjectival::get_schema</span></span>:<br/><a href="2-tap.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">up_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="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> redundant assignment to appease </span><span class="extract"><span class="extract-syntax">gcc -O2</span></span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">asch</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">negate_schema</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</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">TEST_ATOM_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEST_ADJECTIVE_TASK</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">NOW_ATOM_TRUE_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOW_ADJECTIVE_TRUE_TASK</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">NOW_ATOM_FALSE_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOW_ADJECTIVE_FALSE_TASK</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="identifier-syntax">asch</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">schema</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::get_i6_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">atask</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-up.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresscurrent">tap</li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-tcp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -0,0 +1,109 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>The Creation Predicates</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="index.html"><span class="selectedlink">calculus</span></a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'The Creation Predicates' generated by Inweb-->
<div class="breadcrumbs">
<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#2">Chapter 2: Predicates</a></li><li><b>The Creation Predicates</b></li></ul></div>
<p class="purpose">To define the predicates causing instances to be created.</p>
<ul class="toc"><li><a href="2-tcp.html#SP2">&#167;2. Family</a></li><li><a href="2-tcp.html#SP3">&#167;3. Initial stock</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This predicate plays a very special role in our calculus, and must always
exist.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">creation_up_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Family. </b>This is a minimal representation only: Inform adds other methods to the equality
family to handle its typechecking and so on.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Creation::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">Calculus::Creation::start</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">calling_up_family</span><span class="plain-syntax"> = </span><a href="2-upf.html#SP1" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::new</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">creation_up_family</span><span class="plain-syntax"> = </span><a href="2-upf.html#SP1" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::new</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">creation_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-tcp.html#SP3" class="function-link"><span class="function-syntax">Calculus::Creation::stock_creation</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Initial stock. </b>This relation is hard-wired in, and it is made in a slightly special way
since (alone among binary predicates) it has no distinct reversal.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Creation::stock_creation</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::Creation::stock_creation</span></span>:<br/><a href="2-tcp.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">up_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="comment-syntax"> make isakind, etc., here</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-tap.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresscurrent">tcp</li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-bpf.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -133,7 +133,7 @@ since (alone among binary predicates) it has no distinct reversal.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-bp.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresscurrent">ter</li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="3-trm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-bp.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresscurrent">ter</li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="3-trm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -73,15 +73,17 @@ also records its sense, i.e., positive or negative:
<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">unary_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">up_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">lcon_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">lcon</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure unary_predicate is private to this section.</li></ul>
<ul class="endnotetexts"><li>The structure unary_predicate is accessed in 2/upf, 3/prp and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicates::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">UnaryPredicates::new</span></span>:<br/>Terms - <a href="3-trm.html#SP10">&#167;10</a><br/>Atomic Propositions - <a href="3-ap.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</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">au</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Stock::to_lcon</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">in_stock</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) </span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lcon::set_sense</span><span class="plain-syntax">(</span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax">, </span><span class="identifier-syntax">POSITIVE_SENSE</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">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lcon::set_sense</span><span class="plain-syntax">(</span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax">, </span><span class="identifier-syntax">NEGATIVE_SENSE</span><span class="plain-syntax">);</span>
@ -90,6 +92,7 @@ also records its sense, i.e., positive or negative:
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicates::copy</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">au_from</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">au</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">au_from</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">au_from</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</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">au</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -109,12 +112,12 @@ also records its sense, i.e., positive or negative:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicates::get_adj</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">UnaryPredicates::get_adj</span></span>:<br/><a href="2-up.html#SP3">&#167;3</a><br/>Terms - <a href="3-trm.html#SP9">&#167;9</a><br/>Atomic Propositions - <a href="3-ap.html#SP20_2">&#167;20.2</a><br/>Binding and Substitution - <a href="3-bas.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">au</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicates::get_adj</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">UnaryPredicates::get_adj</span></span>:<br/><a href="2-up.html#SP3">&#167;3</a><br/>The Adjectival Predicates - <a href="2-tap.html#SP2">&#167;2</a>, <a href="2-tap.html#SP3">&#167;3</a><br/>Terms - <a href="3-trm.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">au</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">au</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Adjectives::from_lcon</span><span class="plain-syntax">(</span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</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">UnaryPredicates::get_parity</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">UnaryPredicates::get_parity</span></span>:<br/>Atomic Propositions - <a href="3-ap.html#SP20_2">&#167;20.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">au</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicates::get_parity</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">UnaryPredicates::get_parity</span></span>:<br/>The Adjectival Predicates - <a href="2-tap.html#SP2">&#167;2</a>, <a href="2-tap.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">au</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">au</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 adjective tested for positivity"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lcon::get_sense</span><span class="plain-syntax">(</span><span class="identifier-syntax">au</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lcon</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEGATIVE_SENSE</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>
@ -134,7 +137,7 @@ reverse its sense.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresscurrent">up</li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-bpf.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-upf.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-upf.html">upf</a></li><li class="progresscurrent">up</li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-tap.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,207 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unary Predicate Families</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="index.html"><span class="selectedlink">calculus</span></a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Unary Predicate Families' generated by Inweb-->
<div class="breadcrumbs">
<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#2">Chapter 2: Predicates</a></li><li><b>Unary Predicate Families</b></li></ul></div>
<p class="purpose">To create sets of unary predicates for different purposes.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Want to create a new unary predicate? First you'll need a family for it to
belong to.
</p>
<p class="commentary">A <a href="2-upf.html#SP1" class="internal">up_family</a> object is simply a receiver for the method calls providing
the predicate's implementation.
</p>
<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">up_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="identifier-syntax">method_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">methods</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">up_family</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicateFamilies::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">UnaryPredicateFamilies::new</span></span>:<br/>The Adjectival Predicates - <a href="2-tap.html#SP2">&#167;2</a><br/>The Creation Predicates - <a href="2-tcp.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">up_family</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">methods</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Methods::new_set</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">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure up_family is accessed in 2/bpf and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b><span class="extract"><span class="extract-syntax">STOCK_UPF_MTID</span></span> is for stocking up on unaries, and happens very early
in Inform's run.
</p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">STOCK_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">STOCK_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::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">UnaryPredicateFamilies::stock</span></span>:<br/>Binary Predicate Families - <a href="2-bpf.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">TYPECHECK_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">variable_type_assignment</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[26]; </span><span class="comment-syntax"> one for each of the 26 variables</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">INT_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPECHECK_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="reserved-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::typecheck</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">, </span><span class="reserved-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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">DECLINE_TO_MATCH</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">INT_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPECHECK_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure variable_type_assignment is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ASSERT_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">ASSERT_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">now_negated</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::assert</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">now_negated</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">ASSERT_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">TESTABLE_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">INT_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">TESTABLE_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::testable</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">rv</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">INT_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">TESTABLE_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</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">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">INT_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">TEST_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">TERM_DOMAIN_CALCULUS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">about</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::test</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="constant-syntax">TERM_DOMAIN_CALCULUS_TYPE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">about</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">rv</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">INT_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">TEST_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">about</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">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">SCHEMA_UPF_MTID</span>
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">SCHEMA_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::get_schema</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="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</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">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">SCHEMA_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">asch</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">INFER_KIND_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">INFER_KIND_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicateFamilies::infer_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">UnaryPredicateFamilies::infer_kind</span></span>:<br/>Binding and Substitution - <a href="3-bas.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</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">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">INFER_KIND_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">LOG_UPF_MTID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">LOG_UPF_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</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">up</span><span class="plain-syntax">)</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnaryPredicateFamilies::log</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">UnaryPredicateFamilies::log</span></span>:<br/>Atomic Propositions - <a href="3-ap.html#SP20_2">&#167;20.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_UPF_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresscurrent">upf</li><li class="progresssection"><a href="2-up.html">up</a></li><li class="progresssection"><a href="2-tap.html">tap</a></li><li class="progresssection"><a href="2-tcp.html">tcp</a></li><li class="progresssection"><a href="2-bpf.html">bpf</a></li><li class="progresssection"><a href="2-bp.html">bp</a></li><li class="progresssection"><a href="2-ter.html">ter</a></li><li class="progresschapter"><a href="3-trm.html">3</a></li><li class="progressnext"><a href="2-up.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -110,7 +110,7 @@ atomic is simply that their <span class="extract"><span class="extract-syntax">n
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">; </span><span class="comment-syntax"> next atom in the list for this proposition</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 3/prp, 3/bas and here.</li></ul>
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 2/tap, 3/prp, 3/bas and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Each atom is an instance of an "element", and its <span class="extract"><span class="extract-syntax">element</span></span> field is one
of the <span class="extract"><span class="extract-syntax">*_ATOM</span></span> numbers below. Those elements in turn occur in "groups".
</p>
@ -334,6 +334,11 @@ will be called.
</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">Atoms::is_CALLED</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">Atoms::is_CALLED</span></span>:<br/><a href="3-ap.html#SP20">&#167;20</a><br/>Propositions - <a href="3-prp.html#SP24">&#167;24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">CALLED_ATOM</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::CALLED_new</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">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP4" class="function-link"><span class="function-syntax">Atoms::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CALLED_ATOM</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">pt</span><span class="plain-syntax">;</span>
@ -342,7 +347,7 @@ will be called.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::CALLED_get_name</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">Atoms::CALLED_get_name</span></span>:<br/><a href="3-ap.html#SP20">&#167;20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::CALLED_get_name</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">Atoms::CALLED_get_name</span></span>:<br/><a href="3-ap.html#SP20">&#167;20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">calling_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -428,7 +433,7 @@ need \(t=x\), that is, variable 0.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP15" class="function-link"><span class="function-syntax">Atoms::from_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">negated</span><span class="plain-syntax">, </span><a href="3-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_variable</span></a><span class="plain-syntax">(0));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::to_adjectival_usage</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">Atoms::to_adjectival_usage</span></span>:<br/>Propositions - <a href="3-prp.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::to_adjectival_usage</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">Atoms::to_adjectival_usage</span></span>:<br/>Propositions - <a href="3-prp.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -436,7 +441,7 @@ need \(t=x\), that is, variable 0.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::binary_PREDICATE_new</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">Atoms::binary_PREDICATE_new</span></span>:<br/><a href="3-ap.html#SP17">&#167;17</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::binary_PREDICATE_new</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">Atoms::binary_PREDICATE_new</span></span>:<br/><a href="3-ap.html#SP17">&#167;17</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">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt1</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt2</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">prop</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP4" class="function-link"><span class="function-syntax">Atoms::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
@ -452,7 +457,7 @@ need \(t=x\), that is, variable 0.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">-&gt;</span><span class="element-syntax">predicate</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">Atoms::is_equality_predicate</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">Atoms::is_equality_predicate</span></span>:<br/><a href="3-ap.html#SP18">&#167;18</a><br/>Propositions - <a href="3-prp.html#SP11">&#167;11</a>, <a href="3-prp.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::is_equality_predicate</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">Atoms::is_equality_predicate</span></span>:<br/><a href="3-ap.html#SP18">&#167;18</a><br/>Propositions - <a href="3-prp.html#SP11">&#167;11</a>, <a href="3-prp.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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="3-ap.html#SP16" class="function-link"><span class="function-syntax">Atoms::is_binary_predicate</span></a><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">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="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>
@ -480,7 +485,7 @@ need \(t=x\), that is, variable 0.
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Validating atoms. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::validate</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">Atoms::validate</span></span>:<br/>Propositions - <a href="3-prp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::validate</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">Atoms::validate</span></span>:<br/>Propositions - <a href="3-prp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">group</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">group</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP2" class="function-link"><span class="function-syntax">Atoms::group</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax">);</span>
@ -505,12 +510,21 @@ need \(t=x\), that is, variable 0.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::log</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">Atoms::log</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::log</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Atoms::log</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-ap.html#SP20" class="function-link"><span class="function-syntax">Atoms::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::write</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">Atoms::write</span></span>:<br/>Propositions - <a href="3-prp.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::write</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">Atoms::write</span></span>:<br/>Propositions - <a href="3-prp.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</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">"&lt;null-atom&gt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP20_1" class="named-paragraph-link"><span class="named-paragraph">Use a special notation for equality</span><span class="named-paragraph-number">20.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP11" class="function-link"><span class="function-syntax">Atoms::is_CALLED</span></a><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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP11" class="function-link"><span class="function-syntax">Atoms::CALLED_get_name</span></a><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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"called='%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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assert_kind</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">"("</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assert_kind</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">")"</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="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</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">PREDICATE_ATOM:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</span><span class="plain-syntax">) {</span>
@ -525,16 +539,6 @@ need \(t=x\), that is, variable 0.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">); </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP20_4" class="named-paragraph-link"><span class="named-paragraph">Log a comma-separated list of terms for this atomic proposition</span><span class="named-paragraph-number">20.4</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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLED_ATOM:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP11" class="function-link"><span class="function-syntax">Atoms::CALLED_get_name</span></a><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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"called='%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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assert_kind</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">"("</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assert_kind</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">")"</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="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">KIND_ATOM:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Streams::I6_escapes_enabled</span><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"kind="</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assert_kind</span><span class="plain-syntax">);</span>
@ -580,9 +584,7 @@ need \(t=x\), that is, variable 0.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</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="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"not-"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::get_nominative_singular</span><span class="plain-syntax">(</span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tr</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">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-upf.html#SP8" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::log</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">tr</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP20">&#167;20</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP20_3" class="paragraph-anchor"></a><b>&#167;20.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log some suitable textual name for this binary predicate</span><span class="named-paragraph-number">20.3</span></span><span class="comment-syntax"> =</span>

View file

@ -513,7 +513,6 @@ here, but that's the assumption which the caller will have to make.)
</p>
<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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Binding::infer_kind_of_variable_0</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_PROPOSITION</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
@ -522,16 +521,13 @@ here, but that's the assumption which the caller will have to make.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</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">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</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">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">UnaryPredicates::get_adj</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::Meanings::first_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">Adjectives::Meanings::get_domain</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">predicate</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="2-upf.html#SP7" class="function-link"><span class="function-syntax">UnaryPredicateFamilies::infer_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</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">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
</pre>
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. Detect locals. </b>Properly speaking, this has nothing to do with variables,
but it solves a similar problem.

View file

@ -320,7 +320,7 @@ misconstructions tested for below, but numerous other defects can be tested:
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; Exists x: even (x) &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> true</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; NOT&gt; &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - too many close groups</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; Exists x &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> true</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; ForAll x &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - ends without domain of final quantifier</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; ForAll x &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - nonexistential quantifier without domain</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; ForAll x IN&lt; kind = number (x) IN&gt;: even (x) &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> true</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; NOT&lt; ^ NOT&gt; ^ NOT&gt; ^ NOT&lt; ^ even (x) &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - too many close groups</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; NOT&lt; ^ NOT&lt; ^ even (x) &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - 2 group(s) open</span>
@ -416,7 +416,7 @@ value to <span class="extract"><span class="extract-syntax">x</span></span>. Exa
<span class="plain-syntax">'</span><span class="element-syntax">new unary even</span><span class="plain-syntax">':</span><span class="string-syntax"> ok</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; NOT&gt; &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - too many close groups</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; Exists x &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> true</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; ForAll x &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - ends without domain of final quantifier</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; ForAll x &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> false - nonexistential quantifier without domain</span>
<span class="plain-syntax">'</span><span class="element-syntax">&lt;&lt; ForAll x IN&lt; kind = number (x) IN&gt;: even (x) &gt;&gt; is syntactically valid</span><span class="plain-syntax">':</span><span class="string-syntax"> true</span>
<span class="plain-syntax">'</span><span class="element-syntax">set A to &lt;&lt; Exists x &gt;&gt;</span><span class="plain-syntax">':</span><span class="string-syntax"> a set to &lt;&lt; Exists x &gt;&gt;</span>
<span class="plain-syntax">'</span><span class="element-syntax">set B to &lt;&lt; Exists x: even (x) &gt;&gt;</span><span class="plain-syntax">':</span><span class="string-syntax"> b set to &lt;&lt; Exists x : even(x) &gt;&gt;</span>
@ -672,7 +672,7 @@ a given arity, or both:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::prop_seek_atom</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">Propositions::prop_seek_atom</span></span>:<br/><a href="3-prp.html#SP24">&#167;24</a>, <a href="3-prp.html#SP25">&#167;25</a>, <a href="3-prp.html#SP27">&#167;27</a>, <a href="3-prp.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">atom_req</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">arity_req</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::prop_seek_atom</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">Propositions::prop_seek_atom</span></span>:<br/><a href="3-prp.html#SP24">&#167;24</a>, <a href="3-prp.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">atom_req</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">arity_req</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_PROPOSITION</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">atom_req</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">atom_req</span><span class="plain-syntax">)) &amp;&amp;</span>
@ -680,6 +680,16 @@ a given arity, or both:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::prop_seek_up_family</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">Propositions::prop_seek_up_family</span></span>:<br/><a href="3-prp.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">up_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_PROPOSITION</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</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">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</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">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">f</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</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>
</pre>
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>&#167;24. </b>Seeking different kinds of atom is now easy:
</p>
@ -709,7 +719,10 @@ a given arity, or both:
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::contains_callings</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">CALLED_ATOM</span><span class="plain-syntax">, -1)) </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="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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prop</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP11" class="function-link"><span class="function-syntax">Atoms::is_CALLED</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="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="SP25" class="paragraph-anchor"></a><b>&#167;25. </b>Here we try to find out the kind of value of variable 0 without the full
@ -738,7 +751,7 @@ expense of typechecking the proposition:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::describes_value</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Propositions::describes_value</span></span>:<br/><a href="3-prp.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::describes_value</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Propositions::describes_value</span></span>:<br/><a href="3-prp.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bl</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prop</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax">) {</span>
@ -765,17 +778,23 @@ expense of typechecking the proposition:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::contains_adjective</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prop</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</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">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</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">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::count_unary_predicates</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::count_adjectives</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ac</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</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">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)) != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-trm.html#SP8" class="function-link"><span class="function-syntax">Terms::variable_underlying</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0])) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ac</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prop</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="3-trm.html#SP8" class="function-link"><span class="function-syntax">Terms::variable_underlying</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0])) == </span><span class="constant-syntax">0</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">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</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">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">) </span><span class="identifier-syntax">ac</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">ac</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -809,8 +828,9 @@ is, variable 0.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</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">pct</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pct</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</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">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">predicate</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-trm.html#SP9" class="function-link"><span class="function-syntax">Terms::adj_to_noun_conversion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tr</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">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</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">up</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">adjectival_up_family</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-trm.html#SP9" class="function-link"><span class="function-syntax">Terms::adj_to_noun_conversion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</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">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">KIND_ATOM</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">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assert_kind</span><span class="plain-syntax">;</span>
@ -827,7 +847,7 @@ following are useful for looping through them:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::first_unary_predicate</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> **</span><span class="identifier-syntax">ppp</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_atom</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">PREDICATE_ATOM</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="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_up_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ppp</span><span class="plain-syntax">) *</span><span class="identifier-syntax">ppp</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP15" class="function-link"><span class="function-syntax">Atoms::to_adjectival_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
@ -835,7 +855,7 @@ following are useful for looping through them:
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::next_unary_predicate</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> **</span><span class="identifier-syntax">ppp</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ppp</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">"bad ppp"</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">prop</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_atom</span></a><span class="plain-syntax">((*</span><span class="identifier-syntax">ppp</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="constant-syntax">PREDICATE_ATOM</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP23" class="function-link"><span class="function-syntax">Propositions::prop_seek_up_family</span></a><span class="plain-syntax">((*</span><span class="identifier-syntax">ppp</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">adjectival_up_family</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">ppp</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP15" class="function-link"><span class="function-syntax">Atoms::to_adjectival_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
@ -853,7 +873,7 @@ and that they may be nested.
</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">Propositions::is_a_group</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">Propositions::is_a_group</span></span>:<br/><a href="3-prp.html#SP32">&#167;32</a>, <a href="3-prp.html#SP33">&#167;33</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">governing</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::is_a_group</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">Propositions::is_a_group</span></span>:<br/><a href="3-prp.html#SP32">&#167;32</a>, <a href="3-prp.html#SP33">&#167;33</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">governing</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">match</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP3" class="function-link"><span class="function-syntax">Atoms::counterpart</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">governing</span><span class="plain-syntax">), </span><span class="identifier-syntax">level</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">match</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Propositions::is_a_group called on unmatchable"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
@ -870,7 +890,7 @@ and that they may be nested.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::remove_topmost_group</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">Propositions::remove_topmost_group</span></span>:<br/><a href="3-prp.html#SP33">&#167;33</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::remove_topmost_group</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">Propositions::remove_topmost_group</span></span>:<br/><a href="3-prp.html#SP33">&#167;33</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</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_VARIABLE</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><a href="3-prp.html#SP31" class="function-link"><span class="function-syntax">Propositions::is_a_group</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">element</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to remove topmost group which wasn't there"</span><span class="plain-syntax">);</span>
@ -897,7 +917,7 @@ point in a proposition (which can continue after the close bracket).
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::ungroup_after</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">Propositions::ungroup_after</span></span>:<br/><a href="3-prp.html#SP35">&#167;35</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> **</span><span class="identifier-syntax">last</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::ungroup_after</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">Propositions::ungroup_after</span></span>:<br/><a href="3-prp.html#SP35">&#167;35</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">position</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> **</span><span class="identifier-syntax">last</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opener</span><span class="plain-syntax">, </span><span class="identifier-syntax">closer</span><span class="plain-syntax">, </span><span class="identifier-syntax">level</span><span class="plain-syntax">;</span>

View file

@ -98,11 +98,26 @@
<spon class="sectiontitle">Compilation Schemas</span></a> -
<span class="sectionpurpose">To create, and later expand upon, short prototypes of I6 syntax for such run-time tasks as the setting, unsetting or testing of a relation.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-upf.html">
<spon class="sectiontitle">Unary Predicate Families</span></a> -
<span class="sectionpurpose">To create sets of unary predicates for different purposes.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-up.html">
<spon class="sectiontitle">Unary Predicates</span></a> -
<span class="sectionpurpose">A lightweight structure to record uses of an adjective, either positively or negatively.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-tap.html">
<spon class="sectiontitle">The Adjectival Predicates</span></a> -
<span class="sectionpurpose">To define the predicates connected to limguistic adjectives.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-tcp.html">
<spon class="sectiontitle">The Creation Predicates</span></a> -
<span class="sectionpurpose">To define the predicates causing instances to be created.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-bpf.html">
<spon class="sectiontitle">Binary Predicate Families</span></a> -

File diff suppressed because one or more lines are too long

View file

@ -81,7 +81,7 @@ MathJax = {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#11">Chapter 11: Predicate Calculus</a></li><li><b>Sentence Conversions</b></li></ul></div>
<p class="purpose">The third of the three sources of propositions to conjure with: those which arise by the parsing of complex sentence trees in the S-grammar.</p>
<ul class="toc"><li><a href="11-sc.html#SP1">&#167;1. The meaning of a sentence</a></li><li><a href="11-sc.html#SP1_14">&#167;1.14. Simplification</a></li><li><a href="11-sc.html#SP3">&#167;3. The meaning of a noun phrase</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="11-sc.html#SP1">&#167;1. The meaning of a sentence</a></li><li><a href="11-sc.html#SP1_14">&#167;1.14. Simplification</a></li><li><a href="11-sc.html#SP2">&#167;2. The meaning of a noun phrase</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. The meaning of a sentence. </b>"Again and again Haddon thought he had found the key to the strange writings,
but always he was disappointed. And then one day &mdash; he was an old man of seventy
@ -188,7 +188,7 @@ making an S-proposition as required.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SV_not_SN</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"THERE subtree misplaced"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Binding::bind_existential</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP1">&#167;1</a>.</li></ul>
@ -313,13 +313,13 @@ we apply it independently to the SP and OP:
<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><span class="identifier-syntax">BinaryPredicates::term_kind</span><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="identifier-syntax">subject_phrase_prop</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&amp;</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="11-sc.html#SP2" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&amp;</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">object_K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicates::term_kind</span><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="identifier-syntax">object_phrase_prop</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&amp;</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="11-sc.html#SP2" class="function-link"><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</span></a><span class="plain-syntax">(&amp;</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><span class="identifier-syntax">object_K</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] subject NP: $0 such that: $D\n"</span><span class="plain-syntax">,</span>
@ -592,34 +592,7 @@ Still, rule (iii) can only be ensured by writing the routines carefully.
<span class="plain-syntax"> </span><span class="identifier-syntax">Binding::renumber</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> just for the sake of tidiness</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::FromSentences::xxxxxxsimplify</span><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sentence_prop</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">conv_log_depth</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">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP2" class="function-link"><span class="function-syntax">Calculus::Simplifications::nothing_constant</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP3" class="function-link"><span class="function-syntax">Calculus::Simplifications::use_listed_in</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP4" class="function-link"><span class="function-syntax">Calculus::Simplifications::negated_determiners_nonex</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP6" class="function-link"><span class="function-syntax">Calculus::Simplifications::negated_satisfiable</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP7" class="function-link"><span class="function-syntax">Calculus::Simplifications::make_kinds_of_value_explicit</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP8" class="function-link"><span class="function-syntax">Calculus::Simplifications::redundant_kinds</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP10" class="function-link"><span class="function-syntax">Calculus::Simplifications::turn_right_way_round</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP11" class="function-link"><span class="function-syntax">Calculus::Simplifications::region_containment</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP18" class="function-link"><span class="function-syntax">Calculus::Simplifications::everywhere_and_nowhere</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP12" class="function-link"><span class="function-syntax">Calculus::Simplifications::reduce_predicates</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP13" class="function-link"><span class="function-syntax">Calculus::Simplifications::eliminate_redundant_variables</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP14" class="function-link"><span class="function-syntax">Calculus::Simplifications::not_related_to_something</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP15" class="function-link"><span class="function-syntax">Calculus::Simplifications::convert_gerunds</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP16" class="function-link"><span class="function-syntax">Calculus::Simplifications::eliminate_to_have</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP18" class="function-link"><span class="function-syntax">Calculus::Simplifications::is_all_rooms</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">APPLY_SIMPLIFICATION</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><a href="11-sm.html#SP8" class="function-link"><span class="function-syntax">Calculus::Simplifications::redundant_kinds</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Binding::renumber</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> just for the sake of tidiness</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sentence_prop</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. The meaning of a noun phrase. </b>The First Rule tells us to translate a noun phrase (NP) into a pair of a term \(t\)
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. The meaning of a noun phrase. </b>The First Rule tells us to translate a noun phrase (NP) into a pair of a term \(t\)
and a proposition \(\phi\). We read this as "\(t\) such that \(\phi\) is true".
</p>
@ -636,33 +609,33 @@ but missing noun.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</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">Propositions::FromSentences::NP_subtree_to_proposition</span></span>:<br/><a href="11-sc.html#SP1_8">&#167;1.8</a>, <a href="11-sc.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::FromSentences::NP_subtree_to_proposition</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">Propositions::FromSentences::NP_subtree_to_proposition</span></span>:<br/><a href="11-sc.html#SP1_8">&#167;1.8</a>, <a href="11-sc.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Tell the debugging log about the NP-subtree</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Tell the debugging log about the NP-subtree</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">st</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_subject_term</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">st</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax"> = *</span><span class="identifier-syntax">st</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::copy</span><span class="plain-syntax">(</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description_like</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">This NP was parsed as a description</span><span class="named-paragraph-number">3.4</span></a></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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_5" class="named-paragraph-link"><span class="named-paragraph">This NP is only a ghostly presence</span><span class="named-paragraph-number">3.5</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">This NP was parsed as a value</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description_like</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">This NP was parsed as a description</span><span class="named-paragraph-number">2.4</span></a></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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_5" class="named-paragraph-link"><span class="named-paragraph">This NP is only a ghostly presence</span><span class="named-paragraph-number">2.5</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">This NP was parsed as a value</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_6" class="named-paragraph-link"><span class="named-paragraph">If we have a single adjective which could also be a noun, and a value is required, convert it to a noun</span><span class="named-paragraph-number">3.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_7" class="named-paragraph-link"><span class="named-paragraph">If we have a constant qualified by a substantive proposition, rewrite in terms of variable</span><span class="named-paragraph-number">3.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_8" class="named-paragraph-link"><span class="named-paragraph">Close any open domain group</span><span class="named-paragraph-number">3.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_6" class="named-paragraph-link"><span class="named-paragraph">If we have a single adjective which could also be a noun, and a value is required, convert it to a noun</span><span class="named-paragraph-number">2.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_7" class="named-paragraph-link"><span class="named-paragraph">If we have a constant qualified by a substantive proposition, rewrite in terms of variable</span><span class="named-paragraph-number">2.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_8" class="named-paragraph-link"><span class="named-paragraph">Close any open domain group</span><span class="named-paragraph-number">2.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Verify that the output satisfies the First Rule, throwing internal errors if not</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Verify that the output satisfies the First Rule, throwing internal errors if not</span><span class="named-paragraph-number">2.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">NP_prop</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>&#167;3.1. </b>Just as for SV-subtrees, we tell the debugging log at the start...
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b>Just as for SV-subtrees, we tell the debugging log at the start...
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tell the debugging log about the NP-subtree</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tell the debugging log about the NP-subtree</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -671,11 +644,11 @@ but missing noun.
<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] Starting Propositions::FromSentences::NP_subtree_to_proposition on: &lt;%W&gt;\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">W</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>&#167;3.2. </b>...and also at the end.
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>&#167;2.2. </b>...and also at the end.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Verify that the output satisfies the First Rule, throwing internal errors if not</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Verify that the output satisfies the First Rule, throwing internal errors if not</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -694,8 +667,8 @@ but missing noun.
<span class="plain-syntax"> </span><span class="identifier-syntax">conv_log_depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax">, </span><span class="identifier-syntax">NP_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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3" class="paragraph-anchor"></a><b>&#167;3.3. </b>Here we find a constant \(C\) and return \(t=C\) with a null \(\phi\), except
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </b>Here we find a constant \(C\) and return \(t=C\) with a null \(\phi\), except
in one case: where \(C\) is the name of an either/or property, such as
"closed". In the context of a value, this is a noun &mdash; it identifies
which property we are talking about &mdash; and this is why
@ -711,7 +684,7 @@ type-checking.
one arising below, which is to do with enumerated value properties.)
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">This NP was parsed as a value</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">This NP was parsed as a value</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -730,8 +703,8 @@ one arising below, which is to do with enumerated value properties.)
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_4" class="paragraph-anchor"></a><b>&#167;3.4. </b>If <span class="extract"><span class="extract-syntax">Propositions::FromSentences::from_spec</span></span> is given a constant value \(C\) then it returns the
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_4" class="paragraph-anchor"></a><b>&#167;2.4. </b>If <span class="extract"><span class="extract-syntax">Propositions::FromSentences::from_spec</span></span> is given a constant value \(C\) then it returns the
proposition \({\it is}(x, C)\): we look out for this and translate it to
\(t=C, \phi = T\). Otherwise, \(\phi\) can be exactly the proposition returned,
and the first term occurring in it will be chosen as the subject \(t\). (In
@ -739,12 +712,12 @@ particular, if \(\phi\) opens with a quantifier then \(t\) will be the variable
it binds.)
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">This NP was parsed as a description</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">This NP was parsed as a description</span><span class="named-paragraph-number">2.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::copy</span><span class="plain-syntax">(</span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::copy</span><span class="plain-syntax">(</span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Propositions::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">END_PROP_HERE</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">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::is_x_equals</span><span class="plain-syntax">(</span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax">);</span>
@ -758,8 +731,8 @@ it binds.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax">) *</span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::get_first_cited_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_5" class="paragraph-anchor"></a><b>&#167;3.5. </b>When Inform reads a condition so abbreviated that both the subject and
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_5" class="paragraph-anchor"></a><b>&#167;2.5. </b>When Inform reads a condition so abbreviated that both the subject and
the verb have been left out, it assumes the verb is "to be" and that the
subject will be whatever is being worked on. For instance,
</p>
@ -778,14 +751,14 @@ returns a specification which refers to this. From a predicate
calculus point of view, this is just another constant.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">This NP is only a ghostly presence</span><span class="named-paragraph-number">3.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">This NP is only a ghostly presence</span><span class="named-paragraph-number">2.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> *</span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Terms::new_constant</span><span class="plain-syntax">(</span><a href="14-rv.html#SP5" class="function-link"><span class="function-syntax">Rvalues::new_self_object_constant</span></a><span class="plain-syntax">());</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_6" class="paragraph-anchor"></a><b>&#167;3.6. </b>Suppose we have a situation like this:
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_6" class="paragraph-anchor"></a><b>&#167;2.6. </b>Suppose we have a situation like this:
</p>
<blockquote>
@ -836,7 +809,7 @@ that way, it assigns a score value of <span class="extract"><span class="extract
show this. (Score values otherwise aren't used for property names.)
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If we have a single adjective which could also be a noun, and a value is required, convert it to a noun</span><span class="named-paragraph-number">3.6</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If we have a single adjective which could also be a noun, and a value is required, convert it to a noun</span><span class="named-paragraph-number">2.6</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -846,8 +819,8 @@ show this. (Score values otherwise aren't used for property names.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pct</span><span class="plain-syntax">.</span><span class="identifier-syntax">constant</span><span class="plain-syntax">) { *</span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pct</span><span class="plain-syntax">; </span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_7" class="paragraph-anchor"></a><b>&#167;3.7. </b>If we have so far produced a constant term \(t = C\) and a non-null proposition
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_7" class="paragraph-anchor"></a><b>&#167;2.7. </b>If we have so far produced a constant term \(t = C\) and a non-null proposition
\(\phi\), then we convert \(t\) to a new free variable, say \(t = y\), we then bind
any free variable in the old \(\phi\) and then change to \(\exists y: {\it is}(y, C)\land\phi\).
For instance, if we are working on the OP "the box in a room" from this:
@ -861,7 +834,7 @@ For instance, if we are working on the OP "the box in a room" from this:
$\phi = \exists x: {\it room}(x)\land{\it is}(x, <span class="extract"><span class="extract-syntax">ContainerOf(box)</span></span>)$.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If we have a constant qualified by a substantive proposition, rewrite in terms of variable</span><span class="named-paragraph-number">3.7</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If we have a constant qualified by a substantive proposition, rewrite in terms of variable</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -879,8 +852,8 @@ $\phi = \exists x: {\it room}(x)\land{\it is}(x, <span class="extract"><span cla
<span class="plain-syntax"> </span><span class="identifier-syntax">conv_log_depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">subject_of_NP</span><span class="plain-syntax">, </span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_8" class="paragraph-anchor"></a><b>&#167;3.8. </b>If the NP was something like "at least four open doors", we will so far
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_8" class="paragraph-anchor"></a><b>&#167;2.8. </b>If the NP was something like "at least four open doors", we will so far
have built <span class="extract"><span class="extract-syntax">QUANTIFIER --&gt; DOMAIN_OPEN --&gt; KIND --&gt; PREDICATE</span></span>, and now that
we have reached the end of the noun phrase we need to add a <span class="extract"><span class="extract-syntax">DOMAIN_CLOSE</span></span>
atom. The following is written in a way that guarantees all such open groups
@ -888,7 +861,7 @@ are closed, but in fact there should only ever be one open, so <span class="extr
always evaluate to 0 or 1.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Close any open domain group</span><span class="named-paragraph-number">3.8</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Close any open domain group</span><span class="named-paragraph-number">2.8</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -903,14 +876,14 @@ always evaluate to 0 or 1.
<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">&lt;=</span><span class="identifier-syntax">nq</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">NP_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span><span class="identifier-syntax">NP_prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">DOMAIN_CLOSE_ATOM</span><span class="plain-syntax">));</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The following routine takes a SP and returns the best proposition it can,
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>The following routine takes a SP and returns the best proposition it can,
with a single unbound variable, to represent SP.
</p>
<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="constant-syntax">CORE_MODULE</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::FromSentences::from_spec</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">Propositions::FromSentences::from_spec</span></span>:<br/><a href="11-sc.html#SP1_3">&#167;1.3</a>, <a href="11-sc.html#SP3_4">&#167;3.4</a><br/>Deciding to Defer - <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP12">&#167;12</a>, <a href="12-dtd.html#SP14">&#167;14</a>, <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP21">&#167;21</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a><br/>Descriptions - <a href="14-ds.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::FromSentences::from_spec</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">Propositions::FromSentences::from_spec</span></span>:<br/><a href="11-sc.html#SP1_3">&#167;1.3</a>, <a href="11-sc.html#SP2_4">&#167;2.4</a><br/>Deciding to Defer - <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP12">&#167;12</a>, <a href="12-dtd.html#SP14">&#167;14</a>, <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP21">&#167;21</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a><br/>Descriptions - <a href="14-ds.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</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="comment-syntax"> the null description is universally true</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))</span>
@ -919,13 +892,13 @@ with a single unbound variable, to represent SP.
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">; </span><span class="comment-syntax"> a propositional form is already made</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">If this is an instance of a kind, but can be used adjectivally, convert it as such</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="11-sc.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">If it's an either-or property name, it must be being used adjectivally</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">It must be an ordinary noun</span><span class="named-paragraph-number">4.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">If this is an instance of a kind, but can be used adjectivally, convert it as such</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">If it's an either-or property name, it must be being used adjectivally</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">It must be an ordinary noun</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4_1" class="paragraph-anchor"></a><b>&#167;4.1. </b>For example, if we have written:
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>&#167;3.1. </b>For example, if we have written:
</p>
<blockquote>
@ -936,7 +909,7 @@ with a single unbound variable, to represent SP.
noun, we return the proposition testing it adjectivally: {\it pink}(\(x\)).
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If this is an instance of a kind, but can be used adjectivally, convert it as such</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">If this is an instance of a kind, but can be used adjectivally, convert it as such</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -945,15 +918,15 @@ noun, we return the proposition testing it adjectivally: {\it pink}(\(x\)).
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pname</span><span class="plain-syntax"> = </span><a href="15-cp.html#SP5" class="function-link"><span class="function-syntax">Properties::Conditions::get_coinciding_property</span></a><span class="plain-syntax">(</span><a href="6-ins.html#SP17" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::from_adjective_on_x</span><span class="plain-syntax">(</span><a href="6-ins.html#SP34" class="function-link"><span class="function-syntax">Instances::get_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</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="11-sc.html#SP4_1_1" class="named-paragraph-link"><span class="named-paragraph">Typecheck the propositional form, and return</span><span class="named-paragraph-number">4.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_1_1" class="named-paragraph-link"><span class="named-paragraph">Typecheck the propositional form, and return</span><span class="named-paragraph-number">3.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>&#167;4.2. </b>For example, if the SP is "scenery", we return the proposition {\it scenery}(\(x\)).
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>&#167;3.2. </b>For example, if the SP is "scenery", we return the proposition {\it scenery}(\(x\)).
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If it's an either-or property name, it must be being used adjectivally</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If it's an either-or property name, it must be being used adjectivally</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -962,35 +935,35 @@ noun, we return the proposition testing it adjectivally: {\it pink}(\(x\)).
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="15-pr.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::from_adjective_on_x</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="15-ep.html#SP8" class="function-link"><span class="function-syntax">Properties::EitherOr::get_aph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP4_1_1" class="named-paragraph-link"><span class="named-paragraph">Typecheck the propositional form, and return</span><span class="named-paragraph-number">4.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_1_1" class="named-paragraph-link"><span class="named-paragraph">Typecheck the propositional form, and return</span><span class="named-paragraph-number">3.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_3" class="paragraph-anchor"></a><b>&#167;4.3. </b>For example, if the SP is the number 17, we return the proposition {\it is}(\(x\), 17).
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3" class="paragraph-anchor"></a><b>&#167;3.3. </b>For example, if the SP is the number 17, we return the proposition {\it is}(\(x\), 17).
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">It must be an ordinary noun</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">It must be an ordinary noun</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::prop_x_is_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP4_1_1" class="named-paragraph-link"><span class="named-paragraph">Typecheck the propositional form, and return</span><span class="named-paragraph-number">4.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-sc.html#SP3_1_1" class="named-paragraph-link"><span class="named-paragraph">Typecheck the propositional form, and return</span><span class="named-paragraph-number">3.1.1</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_1_1" class="paragraph-anchor"></a><b>&#167;4.1.1. </b>In all cases, we finish by doing the following. In the one-atom noun cases
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1. </b>In all cases, we finish by doing the following. In the one-atom noun cases
it's a formality, but we want to enforce the rule that all propositions
created in Inform go through type-checking, so:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Typecheck the propositional form, and return</span><span class="named-paragraph-number">4.1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Typecheck the propositional form, and return</span><span class="named-paragraph-number">3.1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="11-tcp.html#SP4" class="function-link"><span class="function-syntax">Propositions::Checker::type_check</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><a href="11-tcp.html#SP2" class="function-link"><span class="function-syntax">Propositions::Checker::tc_no_problem_reporting</span></a><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">prop</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP4_1">&#167;4.1</a>, <a href="11-sc.html#SP4_2">&#167;4.2</a>, <a href="11-sc.html#SP4_3">&#167;4.3</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="11-sc.html#SP3_1">&#167;3.1</a>, <a href="11-sc.html#SP3_2">&#167;3.2</a>, <a href="11-sc.html#SP3_3">&#167;3.3</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="11-tc.html">&#10094;</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="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-rpt.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-am.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresscurrentchapter">11</li><li class="progresssection"><a href="11-tc.html">tc</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="11-sm.html">sm</a></li><li class="progresssection"><a href="11-tcp.html">tcp</a></li><li class="progresschapter"><a href="12-terr.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="11-sm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -124,7 +124,7 @@ but Google finds 223,000 hits for it.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::nothing_constant</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::Simplifications::nothing_constant</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::nothing_constant</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::Simplifications::nothing_constant</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -262,7 +262,7 @@ it's important that our code here should generate the correct proposition,
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::use_listed_in</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::Simplifications::use_listed_in</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::use_listed_in</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::Simplifications::use_listed_in</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -315,7 +315,7 @@ they make some of our later simplifications more applicable.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::negated_determiners_nonex</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::Simplifications::negated_determiners_nonex</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::negated_determiners_nonex</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::Simplifications::negated_determiners_nonex</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-sm.html#SP4" class="function-link"><span class="function-syntax">Calculus::Simplifications::negated_determiners</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">changed</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -405,7 +405,7 @@ substitution will later eliminate all of this anyway.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::negated_satisfiable</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">Calculus::Simplifications::negated_satisfiable</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::negated_satisfiable</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">Calculus::Simplifications::negated_satisfiable</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">quant_atom</span><span class="plain-syntax">, *</span><span class="identifier-syntax">predicate_atom</span><span class="plain-syntax">, *</span><span class="identifier-syntax">kind_atom</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">Propositions::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">,</span>
@ -458,7 +458,7 @@ because the code testing them is written to cope properly with bogus values.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::make_kinds_of_value_explicit</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">Calculus::Simplifications::make_kinds_of_value_explicit</span></span>:<br/>Tree Conversions - <a href="11-tc.html#SP3">&#167;3</a><br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::make_kinds_of_value_explicit</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">Calculus::Simplifications::make_kinds_of_value_explicit</span></span>:<br/>Tree Conversions - <a href="11-tc.html#SP3">&#167;3</a><br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</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>
@ -488,7 +488,7 @@ the line. For reasons to be revealed below, we run this process twice over:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::redundant_kinds</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">Calculus::Simplifications::redundant_kinds</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::redundant_kinds</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">Calculus::Simplifications::redundant_kinds</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">c1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">c2</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">prop</span><span class="plain-syntax"> = </span><a href="11-sm.html#SP9" class="function-link"><span class="function-syntax">Calculus::Simplifications::simp_redundant_kinds_dash</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">c1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sm.html#SP9" class="function-link"><span class="function-syntax">Calculus::Simplifications::simp_redundant_kinds_dash</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">c2</span><span class="plain-syntax">);</span>
@ -819,7 +819,7 @@ would matter if they were.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::turn_right_way_round</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">Calculus::Simplifications::turn_right_way_round</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::turn_right_way_round</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">Calculus::Simplifications::turn_right_way_round</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -860,7 +860,7 @@ direct and region containment, then
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::region_containment</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">Calculus::Simplifications::region_containment</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::region_containment</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">Calculus::Simplifications::region_containment</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
@ -918,7 +918,7 @@ why it was necessary to separate the two out.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::reduce_predicates</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">Calculus::Simplifications::reduce_predicates</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::reduce_predicates</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">Calculus::Simplifications::reduce_predicates</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -948,7 +948,7 @@ where this is safe.
<span class="definition-keyword">define</span> <span class="constant-syntax">BOUND_BY_SOMETHING_ELSE</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::eliminate_redundant_variables</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">Calculus::Simplifications::eliminate_redundant_variables</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::eliminate_redundant_variables</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">Calculus::Simplifications::eliminate_redundant_variables</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">level</span><span class="plain-syntax">, </span><span class="identifier-syntax">binding_status</span><span class="plain-syntax">[26], </span><span class="identifier-syntax">binding_level</span><span class="plain-syntax">[26], </span><span class="identifier-syntax">binding_sequence</span><span class="plain-syntax">[26];</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">position_of_binding</span><span class="plain-syntax">[26];</span>
@ -1095,7 +1095,7 @@ they have no "not a valid case" value analogous to the non-object <span class="e
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::not_related_to_something</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">Calculus::Simplifications::not_related_to_something</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::not_related_to_something</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">Calculus::Simplifications::not_related_to_something</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -1148,7 +1148,7 @@ accordingly.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::convert_gerunds</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">Calculus::Simplifications::convert_gerunds</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::convert_gerunds</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">Calculus::Simplifications::convert_gerunds</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
@ -1189,7 +1189,7 @@ sufficiently contrived sentences, this wouldn't be true.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::eliminate_to_have</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">Calculus::Simplifications::eliminate_to_have</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::eliminate_to_have</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">Calculus::Simplifications::eliminate_to_have</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
@ -1289,7 +1289,7 @@ have no other consequence.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::is_all_rooms</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">Calculus::Simplifications::is_all_rooms</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::is_all_rooms</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">Calculus::Simplifications::is_all_rooms</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">prop</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
@ -1357,7 +1357,7 @@ have no other consequence.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">endif</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::everywhere_and_nowhere</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">Calculus::Simplifications::everywhere_and_nowhere</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a>, <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Simplifications::everywhere_and_nowhere</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">Calculus::Simplifications::everywhere_and_nowhere</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP1_14">&#167;1.14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">changed</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">changed</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>

View file

@ -107,12 +107,12 @@ their existence.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::prop_to_set_kind</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::prop_to_set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::KIND_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Abstract::assert_kind_of_object</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="12-ap.html#SP4" class="function-link"><span class="function-syntax">Propositions::Assert::assert_true_about</span></a><span class="plain-syntax">(</span><a href="11-tc.html#SP2" class="function-link"><span class="function-syntax">Propositions::Abstract::prop_to_set_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="12-ap.html#SP4" class="function-link"><span class="function-syntax">Propositions::Assert::assert_true_about</span></a><span class="plain-syntax">(</span><a href="11-tc.html#SP2" class="function-link"><span class="function-syntax">Propositions::Abstract::prop_to_set_kind</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="6-ins.html#SP12" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -93,18 +93,12 @@ of value for the contents of the variables; such structures exist temporarily
on the stack while we work.
</p>
<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">variable_type_assignment</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[26]; </span><span class="comment-syntax"> one for each of the 26 variables</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure variable_type_assignment is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Problem reporting kit. </b>The caller to <span class="extract"><span class="extract-syntax">Propositions::Checker::type_check</span></span> has to fill this form out first. Paperwork,
what can you do, eh?
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Checker::tc_no_problem_reporting</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">Propositions::Checker::tc_no_problem_reporting</span></span>:<br/><a href="11-tcp.html#SP3">&#167;3</a><br/>Sentence Conversions - <a href="11-sc.html#SP4_1_1">&#167;4.1.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP12">&#167;12</a>, <a href="12-dtd.html#SP21">&#167;21</a><br/>Descriptions - <a href="14-ds.html#SP3">&#167;3</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP8">&#167;8</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a><br/>Dash - <a href="14-ds2.html#SP18_4">&#167;18.4</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5_3">&#167;4.3.5.3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4_1">&#167;4.1</a>, <a href="26-itc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Checker::tc_no_problem_reporting</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">Propositions::Checker::tc_no_problem_reporting</span></span>:<br/><a href="11-tcp.html#SP3">&#167;3</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_1_1">&#167;3.1.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP12">&#167;12</a>, <a href="12-dtd.html#SP21">&#167;21</a><br/>Descriptions - <a href="14-ds.html#SP3">&#167;3</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP8">&#167;8</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a><br/>Dash - <a href="14-ds2.html#SP18_4">&#167;18.4</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5_3">&#167;4.3.5.3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4_1">&#167;4.1</a>, <a href="26-itc.html#SP6">&#167;6</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">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">tck</span><span class="plain-syntax">.</span><span class="identifier-syntax">issue_error</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">tck</span><span class="plain-syntax">.</span><span class="identifier-syntax">ew_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">; </span><span class="identifier-syntax">tck</span><span class="plain-syntax">.</span><span class="identifier-syntax">intention</span><span class="plain-syntax"> = </span><span class="string-syntax">"be silent checking"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">tck</span><span class="plain-syntax">.</span><span class="identifier-syntax">log_to_I6_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">tck</span><span class="plain-syntax">.</span><span class="identifier-syntax">flag_problem</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">tck</span><span class="plain-syntax">;</span>
@ -137,9 +131,9 @@ sense of the proposition by changing it, it will do so.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Checker::type_check</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">Propositions::Checker::type_check</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP4_1_1">&#167;4.1.1</a><br/>Assert Propositions - <a href="12-ap.html#SP8_3">&#167;8.3</a><br/>Deciding to Defer - <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP12">&#167;12</a>, <a href="12-dtd.html#SP21">&#167;21</a>, <a href="12-dtd.html#SP28">&#167;28</a><br/>Descriptions - <a href="14-ds.html#SP3">&#167;3</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP8">&#167;8</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a><br/>Dash - <a href="14-ds2.html#SP18_4">&#167;18.4</a><br/>Measurement Adjectives - <a href="15-ma.html#SP12">&#167;12</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5_3">&#167;4.3.5.3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4_1">&#167;4.1</a>, <a href="26-itc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">tck_s</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Checker::type_check</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">Propositions::Checker::type_check</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP3_1_1">&#167;3.1.1</a><br/>Assert Propositions - <a href="12-ap.html#SP8_3">&#167;8.3</a><br/>Deciding to Defer - <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP12">&#167;12</a>, <a href="12-dtd.html#SP21">&#167;21</a>, <a href="12-dtd.html#SP28">&#167;28</a><br/>Descriptions - <a href="14-ds.html#SP3">&#167;3</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP8">&#167;8</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a><br/>Dash - <a href="14-ds2.html#SP18_4">&#167;18.4</a><br/>Measurement Adjectives - <a href="15-ma.html#SP12">&#167;12</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5_3">&#167;4.3.5.3</a><br/>Internal Test Cases - <a href="26-itc.html#SP4_1">&#167;4.1</a>, <a href="26-itc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">tck_s</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><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">variable_type_assignment</span><span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">variable_type_assignment</span><span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">;</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"> = &amp;</span><span class="identifier-syntax">tck_s</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">MATCHING</span><span class="plain-syntax">, </span><span class="string-syntax">"Type-checking proposition: $D\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
@ -151,7 +145,7 @@ sense of the proposition by changing it, it will do so.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">First make sure any constants in the proposition have themselves been typechecked</span><span class="named-paragraph-number">4.1</span></a></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">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax">&lt;26; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="element-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax">&lt;26; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Look at KIND atoms to see what kinds of value are asserted for the variables</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">Look at KIND atoms to reject unarticled shockers</span><span class="named-paragraph-number">4.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_4" class="named-paragraph-link"><span class="named-paragraph">Assume any still-unfathomable variables represent objects</span><span class="named-paragraph-number">4.4</span></a></span><span class="plain-syntax">;</span>
@ -247,7 +241,7 @@ treat it as a piece of nonsense, like "if Wednesday is not custard".
<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"> &gt;= </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">new_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">assert_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="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">new_kind</span><span class="plain-syntax">)) </span><span class="identifier-syntax">new_kind</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">old_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="element-syntax">assigned_kinds</span><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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">old_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="identifier-syntax">assigned_kinds</span><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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_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::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">old_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_kind</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">tck</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">log_to_I6_text</span><span class="plain-syntax">)</span>
@ -257,7 +251,7 @@ treat it as a piece of nonsense, like "if Wednesday is not custard".
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">new_kind</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">new_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">old_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="element-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">v</span><span class="plain-syntax">] = </span><span class="identifier-syntax">new_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">v</span><span class="plain-syntax">] = </span><span class="identifier-syntax">new_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
@ -317,8 +311,8 @@ or various other kinds of value.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax">&lt;26; </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><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="element-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</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">vta</span><span class="plain-syntax">.</span><span class="element-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</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">vta</span><span class="plain-syntax">.</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</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">vta</span><span class="plain-syntax">.</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="11-tcp.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_1_1" class="paragraph-anchor"></a><b>&#167;4.1.1. </b>The following is really rather paranoid; it ought to be certain that a
@ -381,7 +375,8 @@ but not meaningless.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="11-tcp.html#SP8" class="function-link"><span class="function-syntax">Propositions::Checker::type_check_unary_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, &amp;</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="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">UnaryPredicateFamilies::typecheck</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">, &amp;</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">tck</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">log_to_I6_text</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Adjective $o cannot be applied\n"</span><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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -510,7 +505,7 @@ of success.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">var_states</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] != </span><span class="identifier-syntax">UNUSED_VST</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">"%c%s - %u. "</span><span class="plain-syntax">, </span><span class="identifier-syntax">pcalc_vars</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">var_states</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] == </span><span class="identifier-syntax">FREE_VST</span><span class="plain-syntax">)?</span><span class="string-syntax">" (free)"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">.</span><span class="element-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</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">vta</span><span class="plain-syntax">.</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]); </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">&gt;0) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
</pre>
@ -522,7 +517,7 @@ which is why the routine is here and not in the Terms section.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Checker::kind_of_term</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::kind_of_term</span></span>:<br/><a href="11-tcp.html#SP4">&#167;4</a>, <a href="11-tcp.html#SP4_5">&#167;4.5</a>, <a href="11-tcp.html#SP4_8">&#167;4.8</a>, <a href="11-tcp.html#SP4_9">&#167;4.9</a>, <a href="11-tcp.html#SP4_10">&#167;4.10</a>, <a href="11-tcp.html#SP4_11">&#167;4.11</a>, <a href="11-tcp.html#SP6">&#167;6</a>, <a href="11-tcp.html#SP8">&#167;8</a>, <a href="11-tcp.html#SP9">&#167;9</a>, <a href="11-tcp.html#SP9_2">&#167;9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Checker::kind_of_term</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::kind_of_term</span></span>:<br/><a href="11-tcp.html#SP4">&#167;4</a>, <a href="11-tcp.html#SP4_5">&#167;4.5</a>, <a href="11-tcp.html#SP4_8">&#167;4.8</a>, <a href="11-tcp.html#SP4_9">&#167;4.9</a>, <a href="11-tcp.html#SP4_10">&#167;4.10</a>, <a href="11-tcp.html#SP4_11">&#167;4.11</a>, <a href="11-tcp.html#SP6">&#167;6</a>, <a href="11-tcp.html#SP8">&#167;8</a>, <a href="11-tcp.html#SP9">&#167;9</a>, <a href="11-tcp.html#SP9_2">&#167;9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">, </span><span class="identifier-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</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">K</span><span class="plain-syntax"> = </span><a href="11-tcp.html#SP6" class="function-link"><span class="function-syntax">Propositions::Checker::kind_of_term_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pt</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="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">term_checked_as_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
@ -538,10 +533,10 @@ versa; so we have to check that \(s\) lies in \(R\) (or \(S\), respectively).
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Checker::kind_of_term_inner</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">Propositions::Checker::kind_of_term_inner</span></span>:<br/><a href="11-tcp.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Checker::kind_of_term_inner</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">Propositions::Checker::kind_of_term_inner</span></span>:<br/><a href="11-tcp.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">, </span><span class="identifier-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">constant</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="14-sp.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">constant</span><span 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">-&gt;</span><span class="identifier-syntax">variable</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-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">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">variable</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">vta</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">assigned_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-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">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">function</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">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">function</span><span class="plain-syntax">-&gt;</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">kind_found</span><span class="plain-syntax"> = </span><a href="11-tcp.html#SP5" class="function-link"><span class="function-syntax">Propositions::Checker::kind_of_term</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">function</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">fn_of</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>
@ -583,7 +578,7 @@ only produce a problem message when the worst happens.
</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">Propositions::Checker::type_check_unary_predicate</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">Propositions::Checker::type_check_unary_predicate</span></span>:<br/><a href="11-tcp.html#SP4_6">&#167;4.6</a>, <a href="11-tcp.html#SP4_7">&#167;4.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Checker::type_check_unary_predicate</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">Propositions::Checker::type_check_unary_predicate</span></span>:<br/><a href="11-tcp.html#SP4_7">&#167;4.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</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">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnaryPredicates::get_adj</span><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">);</span>
@ -613,7 +608,7 @@ like "is" &mdash; are polymorphic. Here goes:
</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">Propositions::Checker::type_check_binary_predicate</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">Propositions::Checker::type_check_binary_predicate</span></span>:<br/><a href="11-tcp.html#SP4_7">&#167;4.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="reserved-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Checker::type_check_binary_predicate</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">Propositions::Checker::type_check_binary_predicate</span></span>:<br/><a href="11-tcp.html#SP4_7">&#167;4.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">variable_type_assignment</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vta</span><span class="plain-syntax">,</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">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">-&gt;</span><span class="identifier-syntax">predicate</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">[2], *</span><span class="identifier-syntax">kinds_required</span><span class="plain-syntax">[2];</span>

View file

@ -192,6 +192,34 @@ of the variables &mdash; this is called the "identification slate".
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last_couldnt_assert_at</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">Propositions::Assert::issue_couldnt_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_couldnt_assert_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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::get_nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantAssertAdjective</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, you ask me to arrange for something not to be "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'%2' at the start of play. This is only possible when an adjective "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"talks about an either/or property, like 'open'/'closed' - if there "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"are three or more possibilities then it's ambiguous. Even if there "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"are only two possibilities, I can't always fix them just on your "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"request - 'visible'/'invisible', for instance, is something I can "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"test during play at any time, but not something I can arrange at "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the start."</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, you ask me to arrange for something to be '%2' "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"at the start of play. There are some adjectives ('open' or 'dark', "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"for instance) which I can fix, but others are just too vague. For "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"example, saying 'Peter is visible.' isn't allowed, because it "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"doesn't tell me where Peter is. Like 'visible', being '%2' is "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"something I can test during play at any time, but not something "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"I can arrange at the start."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_couldnt_assert_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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>The second entrance, then, keeps track of the recursion depth but also
ensures that the identification slate is always correct, stacking them
@ -282,9 +310,6 @@ its nesting in negation brackets, which is nice and easy to write:
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HERE_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_9" class="named-paragraph-link"><span class="named-paragraph">Assert the truth or falsity of a HERE atom</span><span class="named-paragraph-number">8.9</span></a></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">EVERYWHERE_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_7" class="named-paragraph-link"><span class="named-paragraph">Assert the truth or falsity of an EVERYWHERE atom</span><span class="named-paragraph-number">8.7</span></a></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">NOWHERE_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_8" class="named-paragraph-link"><span class="named-paragraph">Assert the truth or falsity of a NOWHERE atom</span><span class="named-paragraph-number">8.8</span></a></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">ISAKIND_ATOM:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ISAVAR_ATOM:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ISACONST_ATOM:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"ISA... atoms cannot be negated"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -424,9 +449,10 @@ interpret no indication of a kind as meaning "object".
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</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">lookahead</span><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">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">variable</span><span class="plain-syntax"> == </span><span class="identifier-syntax">v</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::CALLED_get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">KIND_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">assert_kind</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">CALLED_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::CALLED_get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">lookahead</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">ISAKIND_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_a_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lookahead</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">assert_kind</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">ISAVAR_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_a_var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="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">ISACONST_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_a_const</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -586,68 +612,12 @@ problem aside for now.
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_10" class="paragraph-anchor"></a><b>&#167;8.10. Asserting predicates. </b>First, asserting \(adjective(t)\). We know that \(t\) evaluates to a kind
of value over which \(adjective\) is defined, or the proposition would
not have survived type-checking. But only some adjectives can be asserted;
"open" can, but "visible" can't, for instance. <span class="extract"><span class="extract-syntax">Adjectives::Meanings::assert</span></span> returns a
success flag.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of a unary predicate</span><span class="named-paragraph-number">8.10</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP8_10" class="paragraph-anchor"></a><b>&#167;8.10. Asserting predicates. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of a unary predicate</span><span class="named-paragraph-number">8.10</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnaryPredicates::get_adj</span><span class="plain-syntax">(</span><span class="identifier-syntax">tr</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">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">found</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">UnaryPredicates::get_parity</span><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">parity</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</span><span class="plain-syntax"> = </span><a href="12-ap.html#SP11" class="function-link"><span class="function-syntax">Propositions::Assert::subject_of_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ots</span><span class="plain-syntax"> = </span><a href="12-ap.html#SP10" class="function-link"><span class="function-syntax">Propositions::Assert::spec_of_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><a href="16-is.html#SP20" class="function-link"><span class="function-syntax">InferenceSubjects::domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inst</span><span class="plain-syntax"> = </span><a href="16-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_object_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inst</span><span class="plain-syntax">) </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><a href="6-ins.html#SP17" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inst</span><span class="plain-syntax">);</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">try</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ox</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">try</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax"> = </span><a href="16-is.html#SP20" class="function-link"><span class="function-syntax">InferenceSubjects::domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">try</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">try</span><span class="plain-syntax"> = </span><a href="16-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">try</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">domain_of_definition</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">domain_of_definition</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">ots</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ox</span><span class="plain-syntax">) </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><a href="7-am.html#SP14" class="function-link"><span class="function-syntax">Adjectives::Meanings::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">ox</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><a href="7-am.html#SP14" class="function-link"><span class="function-syntax">Adjectives::Meanings::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_of_definition</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ots</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">found</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">last_couldnt_assert_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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Adjectives::get_nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantAssertAdjective</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, you ask me to arrange for something not to be "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'%2' at the start of play. This is only possible when an adjective "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"talks about an either/or property, like 'open'/'closed' - if there "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"are three or more possibilities then it's ambiguous. Even if there "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"are only two possibilities, I can't always fix them just on your "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"request - 'visible'/'invisible', for instance, is something I can "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"test during play at any time, but not something I can arrange at "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the start."</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, you ask me to arrange for something to be '%2' "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"at the start of play. There are some adjectives ('open' or 'dark', "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"for instance) which I can fix, but others are just too vague. For "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"example, saying 'Peter is visible.' isn't allowed, because it "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"doesn't tell me where Peter is. Like 'visible', being '%2' is "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"something I can test during play at any time, but not something "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"I can arrange at the start."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_couldnt_assert_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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">UnaryPredicateFamilies::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_11" class="paragraph-anchor"></a><b>&#167;8.11. </b>Binary predicates, unlike unary ones, can only be asserted positively. This
@ -802,7 +772,7 @@ slate &mdash; that was its whole purpose. So the only case left is a constant:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Assert::spec_of_term</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">Propositions::Assert::spec_of_term</span></span>:<br/><a href="12-ap.html#SP8_10">&#167;8.10</a>, <a href="12-ap.html#SP8_11">&#167;8.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Assert::spec_of_term</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">Propositions::Assert::spec_of_term</span></span>:<br/><a href="12-ap.html#SP8_11">&#167;8.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span 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="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">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">variable</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_interpretation_as_spec</span><span class="plain-syntax">[</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">variable</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">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">constant</span><span class="plain-syntax">;</span>
@ -824,7 +794,7 @@ but just in case.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Assert::subject_of_term</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">Propositions::Assert::subject_of_term</span></span>:<br/><a href="12-ap.html#SP8_6">&#167;8.6</a>, <a href="12-ap.html#SP8_7">&#167;8.7</a>, <a href="12-ap.html#SP8_8">&#167;8.8</a>, <a href="12-ap.html#SP8_9">&#167;8.9</a>, <a href="12-ap.html#SP8_10">&#167;8.10</a>, <a href="12-ap.html#SP8_11">&#167;8.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Assert::subject_of_term</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">Propositions::Assert::subject_of_term</span></span>:<br/><a href="12-ap.html#SP8_6">&#167;8.6</a>, <a href="12-ap.html#SP8_7">&#167;8.7</a>, <a href="12-ap.html#SP8_8">&#167;8.8</a>, <a href="12-ap.html#SP8_9">&#167;8.9</a>, <a href="12-ap.html#SP8_11">&#167;8.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span 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="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">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">variable</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_interpretation_as_infs</span><span class="plain-syntax">[</span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="identifier-syntax">variable</span><span class="plain-syntax">];</span>
@ -876,10 +846,8 @@ necessary for the implications code to work.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ale</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnaryPredicates::get_adj</span><span class="plain-syntax">(</span><span class="identifier-syntax">ale</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="7-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">prn</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="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">UnaryPredicateFamilies::testable</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP12">&#167;12</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. </b>And the actual test:
@ -913,18 +881,8 @@ necessary for the implications code to work.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ale</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnaryPredicates::get_adj</span><span class="plain-syntax">(</span><span class="identifier-syntax">ale</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnaryPredicates::get_parity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ale</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="7-am.html#SP13" class="function-link"><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</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">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax"> = </span><a href="15-pr.html#SP23" class="function-link"><span class="function-syntax">Properties::get_possession_marker</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">possessed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">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">adj</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">possessed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</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="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">UnaryPredicateFamilies::test</span><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">about</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP13">&#167;13</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">

View file

@ -210,9 +210,9 @@ so we terminate with that if making true or false.
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">.</span><span class="identifier-syntax">negate_schema</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">asch</span><span class="plain-syntax">.</span><span class="identifier-syntax">pt0</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0]; </span><span class="identifier-syntax">asch</span><span class="plain-syntax">.</span><span class="identifier-syntax">pt1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[1];</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">.</span><span class="identifier-syntax">involves_action_variables</span><span class="plain-syntax"> = </span><a href="12-ca.html#SP5" class="function-link"><span class="function-syntax">Atoms::Compile::atom_involves_action_variables</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">CALLED_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a CALLED atom</span><span class="named-paragraph-number">4.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">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a CALLED atom</span><span class="named-paragraph-number">4.1</span></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="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">KIND_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a KIND atom</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EVERYWHERE_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for an EVERYWHERE atom</span><span class="named-paragraph-number">4.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOWHERE_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_4" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a NOWHERE atom</span><span class="named-paragraph-number">4.4</span></a></span><span class="plain-syntax">;</span>
@ -378,23 +378,11 @@ adjective apparatus.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> redundant assignment to appease </span><span class="extract"><span class="extract-syntax">gcc -O2</span></span>
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnaryPredicates::get_adj</span><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">UnaryPredicates::get_parity</span><span class="plain-syntax">(</span><span class="identifier-syntax">tr</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">asch</span><span class="plain-syntax">.</span><span class="identifier-syntax">negate_schema</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">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">constant</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">term_checked_as_kind</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">term_checked_as_kind</span><span class="plain-syntax"> = </span><a href="14-sp.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">constant</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">task</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">TEST_ATOM_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="constant-syntax">TEST_ADJECTIVE_TASK</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">NOW_ATOM_TRUE_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="constant-syntax">NOW_ADJECTIVE_TRUE_TASK</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">NOW_ATOM_FALSE_TASK:</span><span class="plain-syntax"> </span><span class="identifier-syntax">atask</span><span class="plain-syntax"> = </span><span class="constant-syntax">NOW_ADJECTIVE_FALSE_TASK</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="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">PREDICATE_CALCULUS_WORKINGS</span><span class="plain-syntax">, </span><span class="string-syntax">"Unary predicate: $o, on: %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">term_checked_as_kind</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">.</span><span class="identifier-syntax">schema</span><span class="plain-syntax"> = </span><a href="7-am.html#SP30" class="function-link"><span class="function-syntax">Adjectives::Meanings::get_i6_schema</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">term_checked_as_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">atask</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_unary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">predicate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">UnaryPredicateFamilies::get_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">tr</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">asch</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">term_checked_as_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">asch</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4">&#167;4</a>.</li></ul>

View file

@ -670,6 +670,9 @@ I6 code as we go, but preserving the Invariant.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_deferred_callings</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> how many </span><span class="extract"><span class="extract-syntax">CALLED</span></span><span class="comment-syntax"> atoms have been found to date</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">proposition</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-cdp.html#SP2_1_6_1_2_3_8" class="named-paragraph-link"><span class="named-paragraph">Push the C-stack</span><span class="named-paragraph-number">2.1.6.1.2.3.8</span></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="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">NEGATION_OPEN_ATOM:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEGATION_CLOSE_ATOM:</span>
@ -692,9 +695,6 @@ I6 code as we go, but preserving the Invariant.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-cdp.html#SP2_1_6_1_2_3_3" class="named-paragraph-link"><span class="named-paragraph">End a run of predicate-like conditions, if one is under way</span><span class="named-paragraph-number">2.1.6.1.2.3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-cdp.html#SP2_1_6_1_2_2" class="named-paragraph-link"><span class="named-paragraph">Pop the R-stack</span><span class="named-paragraph-number">2.1.6.1.2.2</span></a></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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLED_ATOM:</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-cdp.html#SP2_1_6_1_2_3_8" class="named-paragraph-link"><span class="named-paragraph">Push the C-stack</span><span class="named-paragraph-number">2.1.6.1.2.3.8</span></a></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="identifier-syntax">default:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R_stack_reason</span><span class="plain-syntax">[</span><span class="identifier-syntax">R_sp</span><span class="plain-syntax">-1] == </span><span class="constant-syntax">NOW_ASSERTION_DEFER</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-cdp.html#SP2_1_6_1_2_3_4" class="named-paragraph-link"><span class="named-paragraph">Compile code to force the atom</span><span class="named-paragraph-number">2.1.6.1.2.3.4</span></a></span>
@ -702,7 +702,7 @@ I6 code as we go, but preserving the Invariant.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">last_in_run</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">first_in_run</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">run_of_conditions</span><span class="plain-syntax">++ &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">first_in_run</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ex</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ex</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CALLED_ATOM</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ex</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ex</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">ex</span><span class="plain-syntax">))) </span><span class="identifier-syntax">ex</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ex</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ex</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">ex</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">NEGATION_OPEN_ATOM:</span>

View file

@ -391,16 +391,11 @@ get to the setting of <span class="extract"><span class="extract-syntax">t_2</sp
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Deferrals::count_callings_in_condition</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">Calculus::Deferrals::count_callings_in_condition</span></span>:<br/><a href="12-dtd.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</span><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">calling_count</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">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">CALLED_ATOM:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</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">calling_count</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -410,25 +405,22 @@ get to the setting of <span class="extract"><span class="extract-syntax">t_2</sp
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">downs</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">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">CALLED_ATOM:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-dtd.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Find which local variable in R needs the value, creating it if necessary</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">calling_count</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">NC</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SEQUENTIAL_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">++; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><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">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-dtd.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Find which local variable in R needs the value, creating it if necessary</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">calling_count</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">NC</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SEQUENTIAL_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">++; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</span><span class="plain-syntax">(</span><a href="27-em.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">local_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</span><span class="plain-syntax">(</span><a href="27-em.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">local_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::val_iname</span><span class="plain-syntax">(</span><a href="27-em.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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DEFERRED_CALLING_LIST_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">calling_count</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::up</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::val_iname</span><span class="plain-syntax">(</span><a href="27-em.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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DEFERRED_CALLING_LIST_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">calling_count</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::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="24-lv.html#SP42" class="function-link"><span class="function-syntax">LocalVariables::add_calling_to_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">local</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="24-lv.html#SP42" class="function-link"><span class="function-syntax">LocalVariables::add_calling_to_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">local</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">downs</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">--; }</span>
@ -441,24 +433,21 @@ get to the setting of <span class="extract"><span class="extract-syntax">t_2</sp
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax">=0;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</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">CALLED_ATOM:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-dtd.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Find which local variable in R needs the value, creating it if necessary</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SEQUENTIAL_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><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">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-dtd.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Find which local variable in R needs the value, creating it if necessary</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SEQUENTIAL_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</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">local_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</span><span class="plain-syntax">(</span><a href="27-em.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">local_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</span><span class="plain-syntax">(</span><a href="27-em.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">local_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::val_iname</span><span class="plain-syntax">(</span><a href="27-em.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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DEFERRED_CALLING_LIST_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax">++);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::val_iname</span><span class="plain-syntax">(</span><a href="27-em.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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DEFERRED_CALLING_LIST_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">calling_count</span><span class="plain-syntax">++);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">calling_count</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
@ -519,7 +508,7 @@ consistency assertions and writes to the debugging log.
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"VMD on non-variable"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matches</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matches</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="14-sp.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::KIND_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0)), </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
@ -628,17 +617,18 @@ does not have run-time object or value creation.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">quantifier_count</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLED_ATOM:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantForceCalling</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"a 'now' is not allowed to call names"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and it wouldn't really make sense to do so anyway. 'if "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"a person (called the victim) is in the Trap Room' makes "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"sense, because it gives a name - 'victim' - to someone "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"whose identity we don't know. But 'now a person (called "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the victim) is in the Trap Room' won't be allowed, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because 'now' can only talk about people or things whose "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"identities we do know."</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantForceCalling</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"a 'now' is not allowed to call names"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and it wouldn't really make sense to do so anyway. 'if "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"a person (called the victim) is in the Trap Room' makes "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"sense, because it gives a name - 'victim' - to someone "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"whose identity we don't know. But 'now a person (called "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the victim) is in the Trap Room' won't be allowed, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"because 'now' can only talk about people or things whose "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"identities we do know."</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>
</pre>
@ -687,7 +677,7 @@ from absolutely anywhere. Hence the following:
<span class="plain-syntax"> </span><span class="string-syntax">"as a description value, but not 'three numbers' or 'most numbers'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">negate</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEGATION_OPEN_ATOM</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">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEGATION_CLOSE_ATOM</span><span class="plain-syntax">));</span>
@ -761,7 +751,7 @@ defer it to a proposition with reason <span class="extract"><span class="extract
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">NUMBER_OF_DUSAGE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP28" class="function-link"><span class="function-syntax">Calculus::Deferrals::prop_verify_descriptive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="string-syntax">"a number of things matching a description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP15" class="function-link"><span class="function-syntax">Calculus::Deferrals::emit_call_to_deferred_desc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">NUMBER_OF_DEFER</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -827,7 +817,7 @@ defer it to a proposition with reason <span class="extract"><span class="extract
<span class="plain-syntax"> </span><a href="13-rsfk.html#SP14" class="function-link"><span class="function-syntax">Kinds::RunTime::emit_strong_id_as_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::unary_construction_material</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::up</span><span class="plain-syntax">(</span><a href="27-em.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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP28" class="function-link"><span class="function-syntax">Calculus::Deferrals::prop_verify_descriptive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="string-syntax">"a list of things matching a description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP15" class="function-link"><span class="function-syntax">Calculus::Deferrals::emit_call_to_deferred_desc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">LIST_OF_DEFER</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -860,7 +850,7 @@ defer it to a proposition with reason <span class="extract"><span class="extract
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">RANDOM_OF_DUSAGE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP28" class="function-link"><span class="function-syntax">Calculus::Deferrals::prop_verify_descriptive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="string-syntax">"a random thing matching a description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::describes_kind</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">) &amp;&amp; (</span><a href="12-dtd.html#SP18" class="function-link"><span class="function-syntax">Calculus::Deferrals::has_finite_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
@ -918,7 +908,7 @@ a loop traverses.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP28" class="function-link"><span class="function-syntax">Calculus::Deferrals::prop_verify_descriptive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"a total property value for things matching a description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP15" class="function-link"><span class="function-syntax">Calculus::Deferrals::emit_call_to_deferred_desc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">TOTAL_DEFER</span><span class="plain-syntax">,</span>
@ -942,7 +932,7 @@ the "substitution variable") is within the domain.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP6" class="function-link"><span class="function-syntax">Calculus::Deferrals::emit_test_of_proposition</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax">, </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">in</span><span class="plain-syntax">, </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
@ -952,7 +942,7 @@ the "substitution variable") is within the domain.
<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::Deferrals::emit_substitution_now</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Calculus::Deferrals::emit_substitution_now</span></span>:<br/>Compile Invocations Inline - <a href="25-cii.html#SP3_5_6">&#167;3.5.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">in</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Binding::substitute_var_0_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">in</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="11-tcp.html#SP4" class="function-link"><span class="function-syntax">Propositions::Checker::type_check</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="11-tcp.html#SP2" class="function-link"><span class="function-syntax">Propositions::Checker::tc_no_problem_reporting</span></a><span class="plain-syntax">());</span>
@ -1002,7 +992,7 @@ over identifying which superlative is meant. We get here from code like
<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">measurement_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mdef_found</span><span class="plain-syntax"> = </span><a href="15-ma.html#SP5" class="function-link"><span class="function-syntax">Properties::Measurement::retrieve</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">sign</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mdef_found</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP28" class="function-link"><span class="function-syntax">Calculus::Deferrals::prop_verify_descriptive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"an extreme case of something matching a description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="12-dtd.html#SP15" class="function-link"><span class="function-syntax">Calculus::Deferrals::emit_call_to_deferred_desc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTREMAL_DEFER</span><span class="plain-syntax">,</span>
@ -1067,7 +1057,7 @@ until it returns 0, when the domain is exhausted.
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">domain_prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">use_as_is</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><a href="12-dtd.html#SP15" class="function-link"><span class="function-syntax">Calculus::Deferrals::spec_is_variable_of_kind_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><span class="identifier-syntax">use_as_is</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="identifier-syntax">domain_prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">domain_prop</span><span class="plain-syntax"> = </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Propositions::contains_callings</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain_prop</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-dtd.html#SP23_1" class="named-paragraph-link"><span class="named-paragraph">Issue called in repeat problem</span><span class="named-paragraph-number">23.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>

View file

@ -94,7 +94,7 @@ node beneath it of kind "description of K":
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::to_proposition</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">Descriptions::to_proposition</span></span>:<br/><a href="14-ds.html#SP3">&#167;3</a>, <a href="14-ds.html#SP4">&#167;4</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP6">&#167;6</a>, <a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP8">&#167;8</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a>, <a href="14-ds.html#SP12_1">&#167;12.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP4">&#167;4</a><br/>Specifications - <a href="14-sp.html#SP3">&#167;3</a><br/>Dash - <a href="14-ds2.html#SP24">&#167;24</a><br/>Describing Phrase Type Data - <a href="22-dptd.html#SP20_2_3">&#167;20.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::to_proposition</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">Descriptions::to_proposition</span></span>:<br/><a href="14-ds.html#SP3">&#167;3</a>, <a href="14-ds.html#SP4">&#167;4</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP6">&#167;6</a>, <a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP8">&#167;8</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a>, <a href="14-ds.html#SP12_1">&#167;12.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3">&#167;3</a><br/>Specifications - <a href="14-sp.html#SP3">&#167;3</a><br/>Dash - <a href="14-ds2.html#SP24">&#167;24</a><br/>Describing Phrase Type Data - <a href="22-dptd.html#SP20_2_3">&#167;20.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to extract proposition from non-description"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-rv.html#SP19" class="function-link"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CON_description</span><span class="plain-syntax">))</span>
@ -260,7 +260,7 @@ a list. It's sometimes convenient to loop through this list:
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Descriptions::number_of_adjectives_applied_to</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">Descriptions::number_of_adjectives_applied_to</span></span>:<br/><a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP12_3">&#167;12.3</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP7">&#167;7</a>, <a href="5-rpt.html#SP7_3">&#167;7.3</a>, <a href="5-rpt.html#SP11_8_2_3_1">&#167;11.8.2.3.1</a>, <a href="5-rpt.html#SP11_8_2_5_1">&#167;11.8.2.5.1</a><br/>Property Knowledge - <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Deciding to Defer - <a href="12-dtd.html#SP17">&#167;17</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::count_unary_predicates</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">Propositions::count_adjectives</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
@ -318,7 +318,7 @@ a list. It's sometimes convenient to loop through this list:
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::ungroup_after</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::get_quantified_prop</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">Descriptions::get_quantified_prop</span></span>:<br/>Refine Parse Tree - <a href="5-rpt.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
@ -329,7 +329,7 @@ a list. It's sometimes convenient to loop through this list:
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::ungroup_after</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-sc.html#SP4" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="11-sc.html#SP3" class="function-link"><span class="function-syntax">Propositions::FromSentences::from_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">quantifier</span><span class="plain-syntax"> *</span><span class="function-syntax">Descriptions::get_quantifier</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Descriptions::get_quantifier</span></span>:<br/><a href="14-ds.html#SP8">&#167;8</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP11_8_2_3">&#167;11.8.2.3</a>, <a href="5-rpt.html#SP11_8_2_3_1">&#167;11.8.2.3.1</a><br/>Deciding to Defer - <a href="12-dtd.html#SP12">&#167;12</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_2_3_3">&#167;10.9.1.2.3.3</a>, <a href="14-ds2.html#SP18_5_3">&#167;18.5.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
@ -362,7 +362,7 @@ a list. It's sometimes convenient to loop through this list:
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Descriptions::get_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax"> = </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">); </span><span class="identifier-syntax">pp</span><span class="plain-syntax">; </span><span class="identifier-syntax">pp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CALLED_ATOM</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</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">Atoms::CALLED_get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -371,7 +371,7 @@ a list. It's sometimes convenient to loop through this list:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev_pp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pp</span><span class="plain-syntax"> = </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">); </span><span class="identifier-syntax">pp</span><span class="plain-syntax">; </span><span class="identifier-syntax">prev_pp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">pp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CALLED_ATOM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_CALLED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="14-ds.html#SP2" class="function-link"><span class="function-syntax">Descriptions::set_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::delete_atom</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">prev_pp</span><span class="plain-syntax">));</span>

View file

@ -135,7 +135,7 @@ pointers:
<span class="reserved-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_constant_phrase</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_constant_phrase</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP22_6">&#167;22.6</a>, <a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Phrases as Values - <a href="22-pav.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">constant_phrase</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">equation</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_equation</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">Rvalues::to_equation</span></span>:<br/><a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Type Expressions and Values - <a href="10-teav.html#SP11_2">&#167;11.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_7_3">&#167;3.7.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">equation</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_named_rulebook_outcome</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">Rvalues::to_named_rulebook_outcome</span></span>:<br/><a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Focus and Outcome - <a href="21-fao.html#SP8">&#167;8</a>, <a href="21-fao.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">named_rulebook_outcome</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_property</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">Rvalues::to_property</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP22_3">&#167;22.3</a>, <a href="14-rv.html#SP23_3_1">&#167;23.3.1</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_8_2">&#167;6.3.8.2</a>, <a href="5-ass.html#SP6_3_41_4">&#167;6.3.41.4</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a>, <a href="11-sc.html#SP4_2">&#167;4.2</a><br/>Simplifications - <a href="11-sm.html#SP16_1">&#167;16.1</a>, <a href="11-sm.html#SP17">&#167;17</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a>, <a href="14-lv.html#SP11_5">&#167;11.5</a>, <a href="14-lv.html#SP13_3">&#167;13.3</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a>, <a href="14-ds2.html#SP10_9_1_2_3">&#167;10.9.1.2.3</a>, <a href="14-ds2.html#SP12">&#167;12</a>, <a href="14-ds2.html#SP18_3">&#167;18.3</a><br/>Properties - <a href="15-pr.html#SP3">&#167;3</a><br/>The Provision Relation - <a href="15-tpr.html#SP5">&#167;5</a>, <a href="15-tpr.html#SP6">&#167;6</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</a>, <a href="25-cii.html#SP3_7">&#167;3.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_property</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">Rvalues::to_property</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP22_3">&#167;22.3</a>, <a href="14-rv.html#SP23_3_1">&#167;23.3.1</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_8_2">&#167;6.3.8.2</a>, <a href="5-ass.html#SP6_3_41_4">&#167;6.3.41.4</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Sentence Conversions - <a href="11-sc.html#SP2_3">&#167;2.3</a>, <a href="11-sc.html#SP3_2">&#167;3.2</a><br/>Simplifications - <a href="11-sm.html#SP16_1">&#167;16.1</a>, <a href="11-sm.html#SP17">&#167;17</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a>, <a href="14-lv.html#SP11_5">&#167;11.5</a>, <a href="14-lv.html#SP13_3">&#167;13.3</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a>, <a href="14-ds2.html#SP10_9_1_2_3">&#167;10.9.1.2.3</a>, <a href="14-ds2.html#SP12">&#167;12</a>, <a href="14-ds2.html#SP18_3">&#167;18.3</a><br/>Properties - <a href="15-pr.html#SP3">&#167;3</a><br/>The Provision Relation - <a href="15-tpr.html#SP5">&#167;5</a>, <a href="15-tpr.html#SP6">&#167;6</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</a>, <a href="25-cii.html#SP3_7">&#167;3.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rule</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">Rvalues::to_rule</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Assertions - <a href="5-ass.html#SP6_3_41_6">&#167;6.3.41.6</a><br/>Rules - <a href="21-rl.html#SP5">&#167;5</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rulebook</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_rulebook</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Assertions - <a href="5-ass.html#SP6_3_18">&#167;6.3.18</a>, <a href="5-ass.html#SP6_3_25_2">&#167;6.3.25.2</a><br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">table</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_table</span></span>:<br/><a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">table</span><span class="plain-syntax">) }</span>
@ -157,7 +157,7 @@ objects.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_instance</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_instance</span></span>:<br/><a href="14-rv.html#SP4">&#167;4</a>, <a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP22_1">&#167;22.1</a>, <a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Supplementary Quotes - <a href="2-sq.html#SP4">&#167;4</a><br/>Assertions - <a href="5-ass.html#SP6_3_39">&#167;6.3.39</a>, <a href="5-ass.html#SP6_3_40_1">&#167;6.3.40.1</a>, <a href="5-ass.html#SP6_3_41_5">&#167;6.3.41.5</a><br/>Instances - <a href="6-ins.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP26_4">&#167;26.4</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP8_1">&#167;8.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP4_1">&#167;4.1</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP5_5">&#167;5.5</a><br/>Specifications - <a href="14-sp.html#SP4">&#167;4</a><br/>Descriptions - <a href="14-ds.html#SP5">&#167;5</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_1">&#167;10.9.1.1.5.1.1</a><br/>Inference Subjects - <a href="16-is.html#SP16">&#167;16</a><br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP5">&#167;5</a><br/>Local Variables - <a href="24-lv.html#SP33">&#167;33</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_instance</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_instance</span></span>:<br/><a href="14-rv.html#SP4">&#167;4</a>, <a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP22_1">&#167;22.1</a>, <a href="14-rv.html#SP23_3">&#167;23.3</a><br/>Supplementary Quotes - <a href="2-sq.html#SP4">&#167;4</a><br/>Assertions - <a href="5-ass.html#SP6_3_39">&#167;6.3.39</a>, <a href="5-ass.html#SP6_3_40_1">&#167;6.3.40.1</a>, <a href="5-ass.html#SP6_3_41_5">&#167;6.3.41.5</a><br/>Instances - <a href="6-ins.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP26_4">&#167;26.4</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP8_1">&#167;8.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_1">&#167;3.1</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP5_5">&#167;5.5</a><br/>Specifications - <a href="14-sp.html#SP4">&#167;4</a><br/>Descriptions - <a href="14-ds.html#SP5">&#167;5</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_1">&#167;10.9.1.1.5.1.1</a><br/>Inference Subjects - <a href="16-is.html#SP16">&#167;16</a><br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP5">&#167;5</a><br/>Local Variables - <a href="24-lv.html#SP33">&#167;33</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax">) }</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>An instance of a subkind of <span class="extract"><span class="extract-syntax">K_object</span></span> is called an "object":
</p>
@ -181,7 +181,7 @@ special annotations.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::new_self_object_constant</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Rvalues::new_self_object_constant</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP3_5">&#167;3.5</a><br/>Dash - <a href="14-ds2.html#SP18_3_1_1">&#167;18.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::new_self_object_constant</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Rvalues::new_self_object_constant</span></span>:<br/>Sentence Conversions - <a href="11-sc.html#SP2_5">&#167;2.5</a><br/>Dash - <a href="14-ds2.html#SP18_3_1_1">&#167;18.3.1.1</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">self_object_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
@ -416,7 +416,7 @@ in the proposition.
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Testing. </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">Rvalues::is_CONSTANT_construction</span><button class="popup" onclick="togglePopup('usagePopup49')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup49">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></span>:<br/><a href="14-rv.html#SP18">&#167;18</a>, <a href="14-rv.html#SP21">&#167;21</a>, <a href="14-rv.html#SP22">&#167;22</a><br/>New Property Requests - <a href="4-npr.html#SP5_11_1">&#167;5.11.1</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_2">&#167;6.2</a>, <a href="5-ass.html#SP6_3_18">&#167;6.3.18</a>, <a href="5-ass.html#SP6_3_25">&#167;6.3.25</a>, <a href="5-ass.html#SP6_3_41">&#167;6.3.41</a>, <a href="5-ass.html#SP6_3_41_4">&#167;6.3.41.4</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a>, <a href="11-sc.html#SP3_6">&#167;3.6</a>, <a href="11-sc.html#SP4_2">&#167;4.2</a><br/>Simplifications - <a href="11-sm.html#SP16">&#167;16</a>, <a href="11-sm.html#SP17">&#167;17</a><br/>Deciding to Defer - <a href="12-dtd.html#SP17">&#167;17</a><br/>Specifications - <a href="14-sp.html#SP3">&#167;3</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a>, <a href="14-ds.html#SP2">&#167;2</a><br/>Dash - <a href="14-ds2.html#SP9_1_1_3_1_3">&#167;9.1.1.3.1.3</a>, <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1">&#167;10.9.1.1.5.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a>, <a href="14-ds2.html#SP12">&#167;12</a>, <a href="14-ds2.html#SP18_3">&#167;18.3</a><br/>Properties - <a href="15-pr.html#SP4_2">&#167;4.2</a><br/>Rules - <a href="21-rl.html#SP5">&#167;5</a>, <a href="21-rl.html#SP26">&#167;26</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a><br/>Phrases as Values - <a href="22-pav.html#SP3">&#167;3</a><br/>Local Variables - <a href="24-lv.html#SP33">&#167;33</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_construction</span><button class="popup" onclick="togglePopup('usagePopup49')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup49">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></span>:<br/><a href="14-rv.html#SP18">&#167;18</a>, <a href="14-rv.html#SP21">&#167;21</a>, <a href="14-rv.html#SP22">&#167;22</a><br/>New Property Requests - <a href="4-npr.html#SP5_11_1">&#167;5.11.1</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_2">&#167;6.2</a>, <a href="5-ass.html#SP6_3_18">&#167;6.3.18</a>, <a href="5-ass.html#SP6_3_25">&#167;6.3.25</a>, <a href="5-ass.html#SP6_3_41">&#167;6.3.41</a>, <a href="5-ass.html#SP6_3_41_4">&#167;6.3.41.4</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Sentence Conversions - <a href="11-sc.html#SP2_3">&#167;2.3</a>, <a href="11-sc.html#SP2_6">&#167;2.6</a>, <a href="11-sc.html#SP3_2">&#167;3.2</a><br/>Simplifications - <a href="11-sm.html#SP16">&#167;16</a>, <a href="11-sm.html#SP17">&#167;17</a><br/>Deciding to Defer - <a href="12-dtd.html#SP17">&#167;17</a><br/>Specifications - <a href="14-sp.html#SP3">&#167;3</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a>, <a href="14-ds.html#SP2">&#167;2</a><br/>Dash - <a href="14-ds2.html#SP9_1_1_3_1_3">&#167;9.1.1.3.1.3</a>, <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1">&#167;10.9.1.1.5.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a>, <a href="14-ds2.html#SP12">&#167;12</a>, <a href="14-ds2.html#SP18_3">&#167;18.3</a><br/>Properties - <a href="15-pr.html#SP4_2">&#167;4.2</a><br/>Rules - <a href="21-rl.html#SP5">&#167;5</a>, <a href="21-rl.html#SP26">&#167;26</a><br/>Activities - <a href="21-ac.html#SP9">&#167;9</a><br/>Phrases as Values - <a href="22-pav.html#SP3">&#167;3</a><br/>Local Variables - <a href="24-lv.html#SP33">&#167;33</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">con</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -138,7 +138,7 @@ but "12" is not.
</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">Specifications::is_description_like</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">Specifications::is_description_like</span></span>:<br/>Adjective Meanings - <a href="7-am.html#SP26_4">&#167;26.4</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP3_2">&#167;3.2</a>, <a href="10-varc.html#SP8_1">&#167;8.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::is_description_like</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">Specifications::is_description_like</span></span>:<br/>Adjective Meanings - <a href="7-am.html#SP26_4">&#167;26.4</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP3_2">&#167;3.2</a>, <a href="10-varc.html#SP8_1">&#167;8.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</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><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="identifier-syntax">g</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><a href="14-rv.html#SP4" class="function-link"><span class="function-syntax">Rvalues::is_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="identifier-syntax">g</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -146,13 +146,13 @@ but "12" is not.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</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">Specifications::is_description</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">Specifications::is_description</span></span>:<br/><a href="14-sp.html#SP1">&#167;1</a>, <a href="14-sp.html#SP4">&#167;4</a>, <a href="14-sp.html#SP7">&#167;7</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_1">&#167;4.1.1</a><br/>New Property Requests - <a href="4-npr.html#SP5_8_1">&#167;5.8.1</a>, <a href="4-npr.html#SP5_8_3">&#167;5.8.3</a>, <a href="4-npr.html#SP5_11_1">&#167;5.11.1</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP2">&#167;2</a>, <a href="5-rpt.html#SP11_8_2">&#167;11.8.2</a><br/>The Creator - <a href="5-tc.html#SP4_6">&#167;4.6</a><br/>Assertions - <a href="5-ass.html#SP6_3_26">&#167;6.3.26</a>, <a href="5-ass.html#SP6_3_39">&#167;6.3.39</a><br/>New Property Assertions - <a href="5-npa.html#SP2_1_1_1">&#167;2.1.1.1</a><br/>Property Knowledge - <a href="5-pk.html#SP3">&#167;3</a>, <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Constants and Descriptions - <a href="10-cad.html#SP19_3">&#167;19.3</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP12_4_1">&#167;12.4.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP4">&#167;4</a><br/>Assert Propositions - <a href="12-ap.html#SP11">&#167;11</a><br/>Conditions - <a href="14-cn.html#SP12">&#167;12</a>, <a href="14-cn.html#SP15">&#167;15</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a>, <a href="14-ds.html#SP2">&#167;2</a>, <a href="14-ds.html#SP4">&#167;4</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP6">&#167;6</a>, <a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP10_9_1_2_3">&#167;10.9.1.2.3</a>, <a href="14-ds2.html#SP18_5_3">&#167;18.5.3</a>, <a href="14-ds2.html#SP18_6_2">&#167;18.6.2</a>, <a href="14-ds2.html#SP24">&#167;24</a><br/>Properties - <a href="15-pr.html#SP4_2">&#167;4.2</a><br/>Tables - <a href="19-tb.html#SP22_2">&#167;22.2</a><br/>Rulebooks - <a href="21-rl2.html#SP13">&#167;13</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP12">&#167;12</a><br/>Describing Phrase Type Data - <a href="22-dptd.html#SP3_1_2_1">&#167;3.1.2.1</a><br/>Local Variables - <a href="24-lv.html#SP33">&#167;33</a><br/>Parse Invocations - <a href="25-pi.html#SP4_2">&#167;4.2</a>, <a href="25-pi.html#SP5_2">&#167;5.2</a><br/>Compile Invocations - <a href="25-ci.html#SP2_2_3_4_1_1_1">&#167;2.2.3.4.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::is_description</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">Specifications::is_description</span></span>:<br/><a href="14-sp.html#SP1">&#167;1</a>, <a href="14-sp.html#SP4">&#167;4</a>, <a href="14-sp.html#SP7">&#167;7</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_1">&#167;4.1.1</a><br/>New Property Requests - <a href="4-npr.html#SP5_8_1">&#167;5.8.1</a>, <a href="4-npr.html#SP5_8_3">&#167;5.8.3</a>, <a href="4-npr.html#SP5_11_1">&#167;5.11.1</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP2">&#167;2</a>, <a href="5-rpt.html#SP11_8_2">&#167;11.8.2</a><br/>The Creator - <a href="5-tc.html#SP4_6">&#167;4.6</a><br/>Assertions - <a href="5-ass.html#SP6_3_26">&#167;6.3.26</a>, <a href="5-ass.html#SP6_3_39">&#167;6.3.39</a><br/>New Property Assertions - <a href="5-npa.html#SP2_1_1_1">&#167;2.1.1.1</a><br/>Property Knowledge - <a href="5-pk.html#SP3">&#167;3</a>, <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Constants and Descriptions - <a href="10-cad.html#SP19_3">&#167;19.3</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP12_4_1">&#167;12.4.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3">&#167;3</a><br/>Assert Propositions - <a href="12-ap.html#SP11">&#167;11</a><br/>Conditions - <a href="14-cn.html#SP12">&#167;12</a>, <a href="14-cn.html#SP15">&#167;15</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a>, <a href="14-ds.html#SP2">&#167;2</a>, <a href="14-ds.html#SP4">&#167;4</a>, <a href="14-ds.html#SP5">&#167;5</a>, <a href="14-ds.html#SP6">&#167;6</a>, <a href="14-ds.html#SP7">&#167;7</a>, <a href="14-ds.html#SP9">&#167;9</a>, <a href="14-ds.html#SP10">&#167;10</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP10_9_1_2_3">&#167;10.9.1.2.3</a>, <a href="14-ds2.html#SP18_5_3">&#167;18.5.3</a>, <a href="14-ds2.html#SP18_6_2">&#167;18.6.2</a>, <a href="14-ds2.html#SP24">&#167;24</a><br/>Properties - <a href="15-pr.html#SP4_2">&#167;4.2</a><br/>Tables - <a href="19-tb.html#SP22_2">&#167;22.2</a><br/>Rulebooks - <a href="21-rl2.html#SP13">&#167;13</a><br/>Activities - <a href="21-ac.html#SP6">&#167;6</a>, <a href="21-ac.html#SP12">&#167;12</a><br/>Describing Phrase Type Data - <a href="22-dptd.html#SP3_1_2_1">&#167;3.1.2.1</a><br/>Local Variables - <a href="24-lv.html#SP33">&#167;33</a><br/>Parse Invocations - <a href="25-pi.html#SP4_2">&#167;4.2</a>, <a href="25-pi.html#SP5_2">&#167;5.2</a><br/>Compile Invocations - <a href="25-ci.html#SP2_2_3_4_1_1_1">&#167;2.2.3.4.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">TEST_VALUE_NT</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="14-rv.html#SP19" class="function-link"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">CON_description</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="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Specifications::to_proposition</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">Specifications::to_proposition</span></span>:<br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_1_2">&#167;4.1.1.2</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP11_8_2_3_1">&#167;11.8.2.3.1</a><br/>The Creator - <a href="5-tc.html#SP5_2_1">&#167;5.2.1</a><br/>Assertions - <a href="5-ass.html#SP6_3_8">&#167;6.3.8</a><br/>Property Knowledge - <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP12_3">&#167;12.3</a><br/>Sentence Conversions - <a href="11-sc.html#SP3">&#167;3</a>, <a href="11-sc.html#SP4">&#167;4</a><br/>Deciding to Defer - <a href="12-dtd.html#SP5">&#167;5</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP23">&#167;23</a><br/>Conditions - <a href="14-cn.html#SP14">&#167;14</a>, <a href="14-cn.html#SP15">&#167;15</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a><br/>Dash - <a href="14-ds2.html#SP18_4">&#167;18.4</a><br/>Chronology - <a href="24-ch.html#SP6_4_1">&#167;6.4.1</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_2">&#167;4.3.2</a><br/>Internal Test Cases - <a href="26-itc.html#SP4_1">&#167;4.1</a>, <a href="26-itc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Specifications::to_proposition</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">Specifications::to_proposition</span></span>:<br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_1_2">&#167;4.1.1.2</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP11_8_2_3_1">&#167;11.8.2.3.1</a><br/>The Creator - <a href="5-tc.html#SP5_2_1">&#167;5.2.1</a><br/>Assertions - <a href="5-ass.html#SP6_3_8">&#167;6.3.8</a><br/>Property Knowledge - <a href="5-pk.html#SP3_2">&#167;3.2</a><br/>Verbal and Relative Clauses - <a href="10-varc.html#SP12_3">&#167;12.3</a><br/>Sentence Conversions - <a href="11-sc.html#SP2">&#167;2</a>, <a href="11-sc.html#SP3">&#167;3</a><br/>Deciding to Defer - <a href="12-dtd.html#SP5">&#167;5</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP23">&#167;23</a><br/>Conditions - <a href="14-cn.html#SP14">&#167;14</a>, <a href="14-cn.html#SP15">&#167;15</a><br/>Descriptions - <a href="14-ds.html#SP1">&#167;1</a><br/>Dash - <a href="14-ds2.html#SP18_4">&#167;18.4</a><br/>Chronology - <a href="24-ch.html#SP6_4_1">&#167;6.4.1</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_2">&#167;4.3.2</a><br/>Internal Test Cases - <a href="26-itc.html#SP4_1">&#167;4.1</a>, <a href="26-itc.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="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><a href="14-sp.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="14-ds.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>

View file

@ -237,7 +237,7 @@ becomes the name of a property.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">can_coincide_with_property</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Conditions::get_coinciding_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">Properties::Conditions::get_coinciding_property</span></span>:<br/><a href="15-cp.html#SP3">&#167;3</a><br/>Assertions - <a href="5-ass.html#SP6_3_41">&#167;6.3.41</a>, <a href="5-ass.html#SP6_3_41_5">&#167;6.3.41.5</a><br/>Instances - <a href="6-ins.html#SP5">&#167;5</a>, <a href="6-ins.html#SP9">&#167;9</a>, <a href="6-ins.html#SP35">&#167;35</a>, <a href="6-ins.html#SP36">&#167;36</a><br/>Sentence Conversions - <a href="11-sc.html#SP4_1">&#167;4.1</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP2_1">&#167;2.1</a>, <a href="12-terr.html#SP5">&#167;5</a>, <a href="12-terr.html#SP5_1">&#167;5.1</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_1">&#167;10.9.1.1.5.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a><br/>Comparative Relations - <a href="15-cr.html#SP3">&#167;3</a>, <a href="15-cr.html#SP5_1">&#167;5.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">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Conditions::get_coinciding_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">Properties::Conditions::get_coinciding_property</span></span>:<br/><a href="15-cp.html#SP3">&#167;3</a><br/>Assertions - <a href="5-ass.html#SP6_3_41">&#167;6.3.41</a>, <a href="5-ass.html#SP6_3_41_5">&#167;6.3.41.5</a><br/>Instances - <a href="6-ins.html#SP5">&#167;5</a>, <a href="6-ins.html#SP9">&#167;9</a>, <a href="6-ins.html#SP35">&#167;35</a>, <a href="6-ins.html#SP36">&#167;36</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_1">&#167;3.1</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP2_1">&#167;2.1</a>, <a href="12-terr.html#SP5">&#167;5</a>, <a href="12-terr.html#SP5_1">&#167;5.1</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_1">&#167;10.9.1.1.5.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a><br/>Comparative Relations - <a href="15-cr.html#SP3">&#167;3</a>, <a href="15-cr.html#SP5_1">&#167;5.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">coinciding_property</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -251,7 +251,7 @@ around), but not to break one.
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_aph</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::get_aph</span></span>:<br/><a href="15-ep.html#SP9">&#167;9</a><br/>Implications - <a href="5-imp.html#SP6_1_3">&#167;6.1.3</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a>, <a href="11-sc.html#SP4_2">&#167;4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_aph</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::get_aph</span></span>:<br/><a href="15-ep.html#SP9">&#167;9</a><br/>Implications - <a href="5-imp.html#SP6_1_3">&#167;6.1.3</a><br/>Sentence Conversions - <a href="11-sc.html#SP2_3">&#167;2.3</a>, <a href="11-sc.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-EO property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_registered</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -536,7 +536,7 @@ of the other:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_either_or</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::is_either_or</span></span>:<br/><a href="15-pr.html#SP20">&#167;20</a>, <a href="15-pr.html#SP22">&#167;22</a>, <a href="15-pr.html#SP24">&#167;24</a>, <a href="15-pr.html#SP25">&#167;25</a>, <a href="15-pr.html#SP26">&#167;26</a><br/>New Property Requests - <a href="4-npr.html#SP5_8_1">&#167;5.8.1</a>, <a href="4-npr.html#SP5_8_3">&#167;5.8.3</a>, <a href="4-npr.html#SP5_11_2">&#167;5.11.2</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Property Knowledge - <a href="5-pk.html#SP4">&#167;4</a><br/>Implications - <a href="5-imp.html#SP5">&#167;5</a><br/>Instances - <a href="6-ins.html#SP9">&#167;9</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a>, <a href="11-sc.html#SP4_2">&#167;4.2</a><br/>RValues - <a href="14-rv.html#SP23_3_1">&#167;23.3.1</a><br/>Lvalues - <a href="14-lv.html#SP11_5">&#167;11.5</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_2_3">&#167;10.9.1.2.3</a>, <a href="14-ds2.html#SP12">&#167;12</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">&#167;4.1</a><br/>Emit Property Values - <a href="15-epv.html#SP2">&#167;2</a>, <a href="15-epv.html#SP2_1">&#167;2.1</a>, <a href="15-epv.html#SP3">&#167;3</a><br/>Property Permissions - <a href="16-pp.html#SP7">&#167;7</a><br/>Inferences - <a href="16-in.html#SP13">&#167;13</a>, <a href="16-in.html#SP15">&#167;15</a>, <a href="16-in.html#SP16">&#167;16</a>, <a href="16-in.html#SP18">&#167;18</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="16-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_either_or</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Properties::is_either_or</span></span>:<br/><a href="15-pr.html#SP20">&#167;20</a>, <a href="15-pr.html#SP22">&#167;22</a>, <a href="15-pr.html#SP24">&#167;24</a>, <a href="15-pr.html#SP25">&#167;25</a>, <a href="15-pr.html#SP26">&#167;26</a><br/>New Property Requests - <a href="4-npr.html#SP5_8_1">&#167;5.8.1</a>, <a href="4-npr.html#SP5_8_3">&#167;5.8.3</a>, <a href="4-npr.html#SP5_11_2">&#167;5.11.2</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Property Knowledge - <a href="5-pk.html#SP4">&#167;4</a><br/>Implications - <a href="5-imp.html#SP5">&#167;5</a><br/>Instances - <a href="6-ins.html#SP9">&#167;9</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP2_3">&#167;2.3</a>, <a href="11-sc.html#SP3_2">&#167;3.2</a><br/>RValues - <a href="14-rv.html#SP23_3_1">&#167;23.3.1</a><br/>Lvalues - <a href="14-lv.html#SP11_5">&#167;11.5</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_2_3">&#167;10.9.1.2.3</a>, <a href="14-ds2.html#SP12">&#167;12</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">&#167;4.1</a><br/>Emit Property Values - <a href="15-epv.html#SP2">&#167;2</a>, <a href="15-epv.html#SP2_1">&#167;2.1</a>, <a href="15-epv.html#SP3">&#167;3</a><br/>Property Permissions - <a href="16-pp.html#SP7">&#167;7</a><br/>Inferences - <a href="16-in.html#SP13">&#167;13</a>, <a href="16-in.html#SP15">&#167;15</a>, <a href="16-in.html#SP16">&#167;16</a>, <a href="16-in.html#SP18">&#167;18</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2">&#167;1.2.2</a>, <a href="16-cmw.html#SP1_2_2_1_1">&#167;1.2.2.1.1</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::is_value_property</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::is_value_property</span></span>:<br/>Dash - <a href="14-ds2.html#SP9_1_1_3_1_3">&#167;9.1.1.3.1.3</a>, <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP18_3_1">&#167;18.3.1</a><br/>The Provision Relation - <a href="15-tpr.html#SP6_1">&#167;6.1</a><br/>Same Property Relation - <a href="15-spr.html#SP2">&#167;2</a><br/>Inferences - <a href="16-in.html#SP19_3_3">&#167;19.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
@ -748,7 +748,7 @@ on implications. Here we only make it available as storage.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::get_possession_marker</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Properties::get_possession_marker</span></span>:<br/>Implications - <a href="5-imp.html#SP4_1">&#167;4.1</a>, <a href="5-imp.html#SP5_1">&#167;5.1</a>, <a href="5-imp.html#SP6_1">&#167;6.1</a><br/>Assert Propositions - <a href="12-ap.html#SP13_2">&#167;13.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">possession_marker</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::get_possession_marker</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Properties::get_possession_marker</span></span>:<br/>Implications - <a href="5-imp.html#SP4_1">&#167;4.1</a>, <a href="5-imp.html#SP5_1">&#167;5.1</a>, <a href="5-imp.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &amp;(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pom</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -183,7 +183,7 @@ to the end user.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::kind</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::kind</span></span>:<br/><a href="15-vp.html#SP11">&#167;11</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2_1">&#167;4.2.1</a><br/>New Property Requests - <a href="4-npr.html#SP5_11">&#167;5.11</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_25">&#167;6.3.25</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>New Property Assertions - <a href="5-npa.html#SP2_1">&#167;2.1</a><br/>Property Knowledge - <a href="5-pk.html#SP4">&#167;4</a><br/>Instances - <a href="6-ins.html#SP9">&#167;9</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a><br/>RValues - <a href="14-rv.html#SP22_3">&#167;22.3</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a>, <a href="14-lv.html#SP11_5">&#167;11.5</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP12">&#167;12</a>, <a href="14-ds2.html#SP18_3_1">&#167;18.3.1</a><br/>Properties - <a href="15-pr.html#SP14">&#167;14</a><br/>Measurement Adjectives - <a href="15-ma.html#SP7_2">&#167;7.2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP8">&#167;8</a>, <a href="15-spr2.html#SP9">&#167;9</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Inferences - <a href="16-in.html#SP13">&#167;13</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::kind</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::kind</span></span>:<br/><a href="15-vp.html#SP11">&#167;11</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_2_1">&#167;4.2.1</a><br/>New Property Requests - <a href="4-npr.html#SP5_11">&#167;5.11</a><br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_25">&#167;6.3.25</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>New Property Assertions - <a href="5-npa.html#SP2_1">&#167;2.1</a><br/>Property Knowledge - <a href="5-pk.html#SP4">&#167;4</a><br/>Instances - <a href="6-ins.html#SP9">&#167;9</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">&#167;7.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP2_3">&#167;2.3</a><br/>RValues - <a href="14-rv.html#SP22_3">&#167;22.3</a><br/>Lvalues - <a href="14-lv.html#SP10">&#167;10</a>, <a href="14-lv.html#SP11_5">&#167;11.5</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_2_1">&#167;10.9.1.1.2.1</a>, <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP12">&#167;12</a>, <a href="14-ds2.html#SP18_3_1">&#167;18.3.1</a><br/>Properties - <a href="15-pr.html#SP14">&#167;14</a><br/>Measurement Adjectives - <a href="15-ma.html#SP7_2">&#167;7.2</a><br/>Setting Property Relation - <a href="15-spr2.html#SP8">&#167;8</a>, <a href="15-spr2.html#SP9">&#167;9</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Inferences - <a href="16-in.html#SP13">&#167;13</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_11">&#167;3.1.1.4.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> for better type-checking Problems</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">property_value_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -233,7 +233,7 @@ then say that a thing has a weight: that makes a property also called
<span class="plain-syntax"> </span><a href="6-ins.html#SP8" class="function-link"><span class="function-syntax">Instances::make_kind_coincident</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::coincides_with_kind</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::coincides_with_kind</span></span>:<br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_25">&#167;6.3.25</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_3">&#167;3.3</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Valued::coincides_with_kind</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::Valued::coincides_with_kind</span></span>:<br/>The Creator - <a href="5-tc.html#SP4_5">&#167;4.5</a><br/>Assertions - <a href="5-ass.html#SP6_3_25">&#167;6.3.25</a>, <a href="5-ass.html#SP6_3_41_7">&#167;6.3.41.7</a><br/>Sentence Conversions - <a href="11-sc.html#SP2_3">&#167;2.3</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_3_1_1">&#167;10.9.1.1.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">either_or</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">also_a_type</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -337,7 +337,7 @@ operations scaling the subject tree, we use the following:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></span>:<br/>Property Knowledge - <a href="5-pk.html#SP3_1">&#167;3.1</a><br/>Assemblies - <a href="5-ass2.html#SP11">&#167;11</a><br/>Implications - <a href="5-imp.html#SP5">&#167;5</a>, <a href="5-imp.html#SP6">&#167;6</a><br/>Instances - <a href="6-ins.html#SP17">&#167;17</a><br/>Adjective Meanings - <a href="7-am.html#SP22">&#167;22</a><br/>Assert Propositions - <a href="12-ap.html#SP8_10">&#167;8.10</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP6">&#167;6</a>, <a href="13-kak.html#SP7">&#167;7</a><br/>Properties - <a href="15-pr.html#SP24">&#167;24</a><br/>Properties of Values - <a href="15-pov.html#SP4">&#167;4</a><br/>Emit Property Values - <a href="15-epv.html#SP1">&#167;1</a>, <a href="15-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Property Permissions - <a href="16-pp.html#SP7">&#167;7</a><br/>Inferences - <a href="16-in.html#SP13">&#167;13</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1">&#167;1.2.2.1</a><br/>Instance Counting - <a href="16-ic.html#SP11_3">&#167;11.3</a>, <a href="16-ic.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></span>:<br/>Property Knowledge - <a href="5-pk.html#SP3_1">&#167;3.1</a><br/>Assemblies - <a href="5-ass2.html#SP11">&#167;11</a><br/>Implications - <a href="5-imp.html#SP5">&#167;5</a>, <a href="5-imp.html#SP6">&#167;6</a><br/>Instances - <a href="6-ins.html#SP17">&#167;17</a><br/>Adjective Meanings - <a href="7-am.html#SP22">&#167;22</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP6">&#167;6</a>, <a href="13-kak.html#SP7">&#167;7</a><br/>Properties - <a href="15-pr.html#SP24">&#167;24</a><br/>Properties of Values - <a href="15-pov.html#SP4">&#167;4</a><br/>Emit Property Values - <a href="15-epv.html#SP1">&#167;1</a>, <a href="15-epv.html#SP1_1_4">&#167;1.1.4</a><br/>Property Permissions - <a href="16-pp.html#SP7">&#167;7</a><br/>Inferences - <a href="16-in.html#SP13">&#167;13</a>, <a href="16-in.html#SP15">&#167;15</a><br/>Complete Model World - <a href="16-cmw.html#SP1_2_2_1">&#167;1.2.2.1</a><br/>Instance Counting - <a href="16-ic.html#SP11_3">&#167;11.3</a>, <a href="16-ic.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">narrow</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">broader_than</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -452,7 +452,7 @@ arise.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_object_instance</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_object_instance</span></span>:<br/><a href="16-is.html#SP17">&#167;17</a>, <a href="16-is.html#SP19">&#167;19</a><br/>Supplementary Quotes - <a href="2-sq.html#SP2">&#167;2</a><br/>Anaphoric References - <a href="3-ar.html#SP3">&#167;3</a><br/>Adjective Meanings - <a href="7-am.html#SP22">&#167;22</a><br/>Assert Propositions - <a href="12-ap.html#SP8_6">&#167;8.6</a>, <a href="12-ap.html#SP8_7">&#167;8.7</a>, <a href="12-ap.html#SP8_8">&#167;8.8</a>, <a href="12-ap.html#SP8_9">&#167;8.9</a>, <a href="12-ap.html#SP8_10">&#167;8.10</a>, <a href="12-ap.html#SP9">&#167;9</a><br/>Lvalues - <a href="14-lv.html#SP13_3_1">&#167;13.3.1</a><br/>Inferences - <a href="16-in.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_object_instance</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_object_instance</span></span>:<br/><a href="16-is.html#SP17">&#167;17</a>, <a href="16-is.html#SP19">&#167;19</a><br/>Supplementary Quotes - <a href="2-sq.html#SP2">&#167;2</a><br/>Anaphoric References - <a href="3-ar.html#SP3">&#167;3</a><br/>Adjective Meanings - <a href="7-am.html#SP22">&#167;22</a><br/>Assert Propositions - <a href="12-ap.html#SP8_6">&#167;8.6</a>, <a href="12-ap.html#SP8_7">&#167;8.7</a>, <a href="12-ap.html#SP8_8">&#167;8.8</a>, <a href="12-ap.html#SP8_9">&#167;8.9</a>, <a href="12-ap.html#SP9">&#167;9</a><br/>Lvalues - <a href="14-lv.html#SP13_3_1">&#167;13.3.1</a><br/>Inferences - <a href="16-in.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kind_of_infs</span><span class="plain-syntax"> == </span><span class="constant-syntax">INST_SUB</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">represents</span><span class="plain-syntax">);</span>
<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><a href="6-ins.html#SP17" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nc</span><span class="plain-syntax">)))</span>
@ -521,7 +521,7 @@ from kinds actually do.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::domain</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::domain</span></span>:<br/><a href="16-is.html#SP4">&#167;4</a>, <a href="16-is.html#SP17">&#167;17</a><br/>Anaphoric References - <a href="3-ar.html#SP3">&#167;3</a><br/>New Property Requests - <a href="4-npr.html#SP5_6">&#167;5.6</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP1_1">&#167;1.1</a>, <a href="5-rpt.html#SP11_6">&#167;11.6</a><br/>The Creator - <a href="5-tc.html#SP4_2">&#167;4.2</a><br/>Assertions - <a href="5-ass.html#SP6_3_8">&#167;6.3.8</a>, <a href="5-ass.html#SP6_3_32">&#167;6.3.32</a><br/>New Property Assertions - <a href="5-npa.html#SP1_1">&#167;1.1</a><br/>Property Knowledge - <a href="5-pk.html#SP3_1">&#167;3.1</a><br/>Relation Knowledge - <a href="5-rk.html#SP3_2">&#167;3.2</a><br/>Assemblies - <a href="5-ass2.html#SP10">&#167;10</a>, <a href="5-ass2.html#SP11">&#167;11</a><br/>Implications - <a href="5-imp.html#SP4">&#167;4</a>, <a href="5-imp.html#SP6_1_3">&#167;6.1.3</a><br/>Relations - <a href="7-rlt.html#SP14_4">&#167;14.4</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Assert Propositions - <a href="12-ap.html#SP8_10">&#167;8.10</a><br/>Either-Or Properties - <a href="15-ep.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::domain</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::domain</span></span>:<br/><a href="16-is.html#SP4">&#167;4</a>, <a href="16-is.html#SP17">&#167;17</a><br/>Anaphoric References - <a href="3-ar.html#SP3">&#167;3</a><br/>New Property Requests - <a href="4-npr.html#SP5_6">&#167;5.6</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP1_1">&#167;1.1</a>, <a href="5-rpt.html#SP11_6">&#167;11.6</a><br/>The Creator - <a href="5-tc.html#SP4_2">&#167;4.2</a><br/>Assertions - <a href="5-ass.html#SP6_3_8">&#167;6.3.8</a>, <a href="5-ass.html#SP6_3_32">&#167;6.3.32</a><br/>New Property Assertions - <a href="5-npa.html#SP1_1">&#167;1.1</a><br/>Property Knowledge - <a href="5-pk.html#SP3_1">&#167;3.1</a><br/>Relation Knowledge - <a href="5-rk.html#SP3_2">&#167;3.2</a><br/>Assemblies - <a href="5-ass2.html#SP10">&#167;10</a>, <a href="5-ass2.html#SP11">&#167;11</a><br/>Implications - <a href="5-imp.html#SP4">&#167;4</a>, <a href="5-imp.html#SP6_1_3">&#167;6.1.3</a><br/>Relations - <a href="7-rlt.html#SP14_4">&#167;14.4</a><br/>Tree Conversions - <a href="11-tc.html#SP2">&#167;2</a><br/>Either-Or Properties - <a href="15-ep.html#SP3">&#167;3</a><br/>Indefinite Appearance - <a href="15-ia.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="16-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -97,7 +97,7 @@ description only, whereas B could be any subtree of an assertion.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">possession_certainty</span><span class="plain-syntax">; </span><span class="comment-syntax"> ditto</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">possession_marker</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure possession_marker is accessed in 12/ap and here.</li></ul>
<ul class="endnotetexts"><li>The structure possession_marker is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Implications are gathered during the main parse tree traverses, but all we do
is to store them and sit on them.
</p>

View file

@ -547,7 +547,7 @@ specialised than which other ones, and by making a call, we can find out.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::to_kind</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Instances::to_kind</span></span>:<br/><a href="6-ins.html#SP11">&#167;11</a>, <a href="6-ins.html#SP14_1">&#167;14.1</a>, <a href="6-ins.html#SP14_2">&#167;14.2</a>, <a href="6-ins.html#SP18">&#167;18</a>, <a href="6-ins.html#SP20">&#167;20</a>, <a href="6-ins.html#SP24">&#167;24</a>, <a href="6-ins.html#SP32">&#167;32</a>, <a href="6-ins.html#SP33">&#167;33</a>, <a href="6-ins.html#SP35">&#167;35</a>, <a href="6-ins.html#SP36">&#167;36</a>, <a href="6-ins.html#SP37_1">&#167;37.1</a><br/>Supplementary Quotes - <a href="2-sq.html#SP2">&#167;2</a>, <a href="2-sq.html#SP4">&#167;4</a><br/>Assertions - <a href="5-ass.html#SP6_3_40_1">&#167;6.3.40.1</a>, <a href="5-ass.html#SP6_3_41_5">&#167;6.3.41.5</a><br/>Index Physical World - <a href="6-ipw.html#SP3_3_1">&#167;3.3.1</a>, <a href="6-ipw.html#SP3_3_1_1">&#167;3.3.1.1</a>, <a href="6-ipw.html#SP3_4">&#167;3.4</a>, <a href="6-ipw.html#SP3_8">&#167;3.8</a><br/>Adjective Meanings - <a href="7-am.html#SP23">&#167;23</a><br/>Extension Files - <a href="9-ef.html#SP8_2">&#167;8.2</a><br/>Sentence Conversions - <a href="11-sc.html#SP4_1">&#167;4.1</a><br/>Assert Propositions - <a href="12-ap.html#SP8_10">&#167;8.10</a><br/>RValues - <a href="14-rv.html#SP3">&#167;3</a>, <a href="14-rv.html#SP22_1">&#167;22.1</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_1">&#167;10.9.1.1.5.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a><br/>Condition Properties - <a href="15-cp.html#SP3">&#167;3</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1">&#167;1.1</a>, <a href="15-epv.html#SP1_1_1">&#167;1.1.1</a><br/>Inference Subjects - <a href="16-is.html#SP18">&#167;18</a><br/>Instance Counting - <a href="16-ic.html#SP11_3">&#167;11.3</a>, <a href="16-ic.html#SP11_3_1">&#167;11.3.1</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5">&#167;4.3.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::to_kind</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Instances::to_kind</span></span>:<br/><a href="6-ins.html#SP11">&#167;11</a>, <a href="6-ins.html#SP14_1">&#167;14.1</a>, <a href="6-ins.html#SP14_2">&#167;14.2</a>, <a href="6-ins.html#SP18">&#167;18</a>, <a href="6-ins.html#SP20">&#167;20</a>, <a href="6-ins.html#SP24">&#167;24</a>, <a href="6-ins.html#SP32">&#167;32</a>, <a href="6-ins.html#SP33">&#167;33</a>, <a href="6-ins.html#SP35">&#167;35</a>, <a href="6-ins.html#SP36">&#167;36</a>, <a href="6-ins.html#SP37_1">&#167;37.1</a><br/>Supplementary Quotes - <a href="2-sq.html#SP2">&#167;2</a>, <a href="2-sq.html#SP4">&#167;4</a><br/>Assertions - <a href="5-ass.html#SP6_3_40_1">&#167;6.3.40.1</a>, <a href="5-ass.html#SP6_3_41_5">&#167;6.3.41.5</a><br/>Index Physical World - <a href="6-ipw.html#SP3_3_1">&#167;3.3.1</a>, <a href="6-ipw.html#SP3_3_1_1">&#167;3.3.1.1</a>, <a href="6-ipw.html#SP3_4">&#167;3.4</a>, <a href="6-ipw.html#SP3_8">&#167;3.8</a><br/>Adjective Meanings - <a href="7-am.html#SP23">&#167;23</a><br/>Extension Files - <a href="9-ef.html#SP8_2">&#167;8.2</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_1">&#167;3.1</a><br/>RValues - <a href="14-rv.html#SP3">&#167;3</a>, <a href="14-rv.html#SP22_1">&#167;22.1</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_1">&#167;10.9.1.1.5.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a><br/>Condition Properties - <a href="15-cp.html#SP3">&#167;3</a><br/>Emit Property Values - <a href="15-epv.html#SP1_1">&#167;1.1</a>, <a href="15-epv.html#SP1_1_1">&#167;1.1.1</a><br/>Inference Subjects - <a href="16-is.html#SP18">&#167;18</a><br/>Instance Counting - <a href="16-ic.html#SP11_3">&#167;11.3</a>, <a href="16-ic.html#SP11_3_1">&#167;11.3.1</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5">&#167;4.3.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax"> = </span><a href="16-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="16-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax">);</span>
@ -902,7 +902,7 @@ property, but we don't go there in Inform.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::get_adjective</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">Instances::get_adjective</span></span>:<br/>Verbal and Relative Clauses - <a href="10-varc.html#SP8_1">&#167;8.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP4_1">&#167;4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::get_adjective</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">Instances::get_adjective</span></span>:<br/>Verbal and Relative Clauses - <a href="10-varc.html#SP8_1">&#167;8.1</a><br/>Sentence Conversions - <a href="11-sc.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_as_aph</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -440,7 +440,7 @@ or an either/or property? If so we return the earliest known.
<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">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</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">Adjectives::Meanings::has_EORP_meaning</span></span>:<br/>Implications - <a href="5-imp.html#SP3_2_3">&#167;3.2.3</a>, <a href="5-imp.html#SP6_1">&#167;6.1</a><br/>Assert Propositions - <a href="12-ap.html#SP12_1">&#167;12.1</a>, <a href="12-ap.html#SP13_2">&#167;13.2</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::has_EORP_meaning</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">Adjectives::Meanings::has_EORP_meaning</span></span>:<br/>Implications - <a href="5-imp.html#SP3_2_3">&#167;3.2.3</a>, <a href="5-imp.html#SP6_1">&#167;6.1</a><br/>Dash - <a href="14-ds2.html#SP10_9_1_1_5_1_2">&#167;10.9.1.1.5.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">aph</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">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_meanings</span><span class="plain-syntax">.</span><span class="element-syntax">possible_meanings</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_meaning</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_form</span><span class="plain-syntax"> == </span><span class="constant-syntax">EORP_KADJ</span><span class="plain-syntax">) {</span>
@ -486,7 +486,7 @@ none of those which did could be asserted for it.
</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">Adjectives::Meanings::assert</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">Adjectives::Meanings::assert</span></span>:<br/>Assert Propositions - <a href="12-ap.html#SP8_10">&#167;8.10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_domain</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_domain</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_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="7-am.html#SP15" class="function-link"><span class="function-syntax">Adjectives::Meanings::sort</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">);</span>
@ -505,7 +505,7 @@ sorts the possibles list into the sorted list.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::sort</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">Adjectives::Meanings::sort</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP35_1">&#167;35.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::sort</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">Adjectives::Meanings::sort</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP35_1">&#167;35.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">aph</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 sort meanings for null APH"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_meanings</span><span class="plain-syntax">.</span><span class="element-syntax">sorted_meanings</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="7-am.html#SP17" class="function-link"><span class="function-syntax">Adjectives::Meanings::list_sort</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_meanings</span><span class="plain-syntax">.</span><span class="element-syntax">possible_meanings</span><span class="plain-syntax">);</span>
@ -515,7 +515,7 @@ sorts the possibles list into the sorted list.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_sorted_definition_list</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">Adjectives::Meanings::get_sorted_definition_list</span></span>:<br/><a href="7-am.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_sorted_definition_list</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">Adjectives::Meanings::get_sorted_definition_list</span></span>:<br/><a href="7-am.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</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">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_meanings</span><span class="plain-syntax">.</span><span class="element-syntax">sorted_meanings</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -527,7 +527,7 @@ sorts the possibles list into the sorted list.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_meanings</span><span class="plain-syntax">.</span><span class="element-syntax">possible_meanings</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::list_sort</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">Adjectives::Meanings::list_sort</span></span>:<br/><a href="7-am.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">unsorted_head</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::list_sort</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">Adjectives::Meanings::list_sort</span></span>:<br/><a href="7-am.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">unsorted_head</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sorted_head</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">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, *</span><span class="identifier-syntax">am2</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">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">unsorted_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_meaning</span><span class="plain-syntax">)</span>
@ -576,7 +576,7 @@ appropriate APH.
below) &mdash; this makes coding what the adjective compiles to much easier.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::new</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">Adjectives::Meanings::new</span></span>:<br/>Instances - <a href="6-ins.html#SP37_2">&#167;37.2</a><br/>Either-Or Properties - <a href="15-ep.html#SP12">&#167;12</a><br/>Measurement Adjectives - <a href="15-ma.html#SP10_5">&#167;10.5</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">form</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">details</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">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::new</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">Adjectives::Meanings::new</span></span>:<br/>Instances - <a href="6-ins.html#SP37_2">&#167;37.2</a><br/>Either-Or Properties - <a href="15-ep.html#SP12">&#167;12</a><br/>Measurement Adjectives - <a href="15-ma.html#SP10_5">&#167;10.5</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">form</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">details</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defined_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">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_index_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
@ -610,7 +610,7 @@ those are inherited.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::negate</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">Adjectives::Meanings::negate</span></span>:<br/>Adjectival Definitions - <a href="23-ad.html#SP4_4">&#167;4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::negate</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">Adjectives::Meanings::negate</span></span>:<br/>Adjectival Definitions - <a href="23-ad.html#SP4_4">&#167;4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">neg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">neg</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defined_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">neg</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_index_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_index_text</span><span class="plain-syntax">;</span>
@ -637,7 +637,7 @@ those are inherited.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">neg</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::get_form</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">Adjectives::Meanings::get_form</span></span>:<br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::get_form</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">Adjectives::Meanings::get_form</span></span>:<br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_form</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -671,7 +671,7 @@ make a weak match.
</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">Adjectives::Meanings::domain_weak_match</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">Adjectives::Meanings::domain_weak_match</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP35_2_1">&#167;35.2.1</a>, <a href="7-am.html#SP36">&#167;36</a></span></button><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><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::domain_weak_match</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">Adjectives::Meanings::domain_weak_match</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP35_2_1">&#167;35.2.1</a>, <a href="7-am.html#SP36">&#167;36</a></span></button><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><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="13-rsfk.html#SP10" class="function-link"><span class="function-syntax">Kinds::RunTime::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">) == </span><a href="13-rsfk.html#SP10" class="function-link"><span class="function-syntax">Kinds::RunTime::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="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>
@ -682,7 +682,7 @@ within the domain of an adjective meaning.
</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">Adjectives::Meanings::domain_subj_compare</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">Adjectives::Meanings::domain_subj_compare</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::domain_subj_compare</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">Adjectives::Meanings::domain_subj_compare</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="16-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::as_object_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> == </span><a href="13-kak.html#SP1" class="function-link"><span class="function-syntax">Kinds::Knowledge::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</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>
@ -713,13 +713,13 @@ over specific constructed kinds.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_domain_text</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_domain_text</span></span>:<br/>Measurement Adjectives - <a href="15-ma.html#SP10_5">&#167;10.5</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">Adjectives::Meanings::set_domain_text</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">Adjectives::Meanings::set_domain_text</span></span>:<br/>Measurement Adjectives - <a href="15-ma.html#SP10_5">&#167;10.5</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="7-am.html#SP26" class="function-link"><span class="function-syntax">Adjectives::Meanings::set_definition_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_domain_from_instance</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_domain_from_instance</span></span>:<br/>Instances - <a href="6-ins.html#SP37_2">&#167;37.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_domain_from_instance</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">Adjectives::Meanings::set_domain_from_instance</span></span>:<br/>Instances - <a href="6-ins.html#SP37_2">&#167;37.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> = </span><a href="13-kak.html#SP1" class="function-link"><span class="function-syntax">Kinds::Knowledge::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
@ -737,7 +737,7 @@ disambiguation is used when applying adjectives to objects.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_domain_from_kind</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">Adjectives::Meanings::set_domain_from_kind</span></span>:<br/>Instances - <a href="6-ins.html#SP37_2">&#167;37.2</a><br/>Either-Or Properties - <a href="15-ep.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_domain_from_kind</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_domain_from_kind</span></span>:<br/>Instances - <a href="6-ins.html#SP37_2">&#167;37.2</a><br/>Either-Or Properties - <a href="15-ep.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> = </span><a href="13-kak.html#SP1" class="function-link"><span class="function-syntax">Kinds::Knowledge::as_subject</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">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
@ -748,12 +748,12 @@ disambiguation is used when applying adjectives to objects.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_domain</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::get_domain</span></span>:<br/><a href="7-am.html#SP12">&#167;12</a>, <a href="7-am.html#SP14">&#167;14</a>, <a href="7-am.html#SP29">&#167;29</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP31">&#167;31</a>, <a href="7-am.html#SP34">&#167;34</a>, <a href="7-am.html#SP35_2_1">&#167;35.2.1</a>, <a href="7-am.html#SP36">&#167;36</a><br/>Either-Or Properties - <a href="15-ep.html#SP15">&#167;15</a><br/>Measurement Adjectives - <a href="15-ma.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_domain</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">Adjectives::Meanings::get_domain</span></span>:<br/><a href="7-am.html#SP12">&#167;12</a>, <a href="7-am.html#SP14">&#167;14</a>, <a href="7-am.html#SP29">&#167;29</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP31">&#167;31</a>, <a href="7-am.html#SP34">&#167;34</a>, <a href="7-am.html#SP35_2_1">&#167;35.2.1</a>, <a href="7-am.html#SP36">&#167;36</a><br/>Either-Or Properties - <a href="15-ep.html#SP15">&#167;15</a><br/>Measurement Adjectives - <a href="15-ma.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_domain_forcing</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">Adjectives::Meanings::get_domain_forcing</span></span>:<br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_domain_forcing</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">Adjectives::Meanings::get_domain_forcing</span></span>:<br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="7-am.html#SP26" class="function-link"><span class="function-syntax">Adjectives::Meanings::set_definition_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_kind</span><span class="plain-syntax">;</span>
@ -766,7 +766,7 @@ actually needed.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_definition_domain</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_definition_domain</span></span>:<br/><a href="7-am.html#SP12">&#167;12</a>, <a href="7-am.html#SP17">&#167;17</a>, <a href="7-am.html#SP23">&#167;23</a>, <a href="7-am.html#SP25">&#167;25</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP35_1">&#167;35.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">early</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_definition_domain</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">Adjectives::Meanings::set_definition_domain</span></span>:<br/><a href="7-am.html#SP12">&#167;12</a>, <a href="7-am.html#SP17">&#167;17</a>, <a href="7-am.html#SP23">&#167;23</a>, <a href="7-am.html#SP25">&#167;25</a>, <a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP35_1">&#167;35.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">early</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</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">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defined_at</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_text</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"undeclared domain kind for AM"</span><span class="plain-syntax">);</span>
@ -918,7 +918,7 @@ between them.
</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">Adjectives::Meanings::compare</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compare</span></span>:<br/><a href="7-am.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am1</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::compare</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">Adjectives::Meanings::compare</span></span>:<br/><a href="7-am.html#SP17">&#167;17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am1</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">am2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">am1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">am2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">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">am1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">am2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">domain_infs</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
@ -1036,7 +1036,7 @@ can choose to go via a support routine or not.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::set_i6_schema</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_i6_schema</span></span>:<br/><a href="7-am.html#SP32">&#167;32</a><br/>Instances - <a href="6-ins.html#SP37_3">&#167;37.3</a><br/>Either-Or Properties - <a href="15-ep.html#SP15_1">&#167;15.1</a>, <a href="15-ep.html#SP15_2">&#167;15.2</a><br/>Measurement Adjectives - <a href="15-ma.html#SP11">&#167;11</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::set_i6_schema</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_i6_schema</span></span>:<br/><a href="7-am.html#SP32">&#167;32</a><br/>Instances - <a href="6-ins.html#SP37_3">&#167;37.3</a><br/>Either-Or Properties - <a href="15-ep.html#SP15_1">&#167;15.1</a>, <a href="15-ep.html#SP15_2">&#167;15.2</a><br/>Measurement Adjectives - <a href="15-ma.html#SP11">&#167;11</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">via_support</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="7-am.html#SP25" class="function-link"><span class="function-syntax">Adjectives::Meanings::get_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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>
@ -1058,7 +1058,7 @@ that to issue a suitable problem message.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_i6_schema</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::get_i6_schema</span></span>:<br/><a href="7-am.html#SP31">&#167;31</a><br/>Compile Atoms - <a href="12-ca.html#SP4_6">&#167;4.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::get_i6_schema</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::get_i6_schema</span></span>:<br/><a href="7-am.html#SP31">&#167;31</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</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">kind_domain</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">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_domain</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">kind_domain</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
@ -1111,7 +1111,7 @@ objects, if there is one; otherwise the first-declared meaning.
</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">Adjectives::Meanings::write_adjective_test_routine</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::write_adjective_test_routine</span></span>:<br/>Compile Invocations Inline - <a href="25-cii.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::write_adjective_test_routine</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::write_adjective_test_routine</span></span>:<br/>Compile Invocations Inline - <a href="25-cii.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_id</span><span class="plain-syntax"> = </span><a href="13-rsfk.html#SP10" class="function-link"><span class="function-syntax">Kinds::RunTime::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
@ -1133,7 +1133,7 @@ task.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::pass_task_to_support_routine</span></span>:<br/>Measurement Adjectives - <a href="15-ma.html#SP10_5">&#167;10.5</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::pass_task_to_support_routine</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::pass_task_to_support_routine</span></span>:<br/>Measurement Adjectives - <a href="15-ma.html#SP10_5">&#167;10.5</a><br/>Adjectives by Raw Phrase - <a href="23-abrp.html#SP2">&#167;2</a><br/>Adjectives by Raw Condition - <a href="23-abrc.html#SP2">&#167;2</a><br/>Adjectives by Phrase - <a href="23-abp.html#SP1">&#167;1</a><br/>Adjectives by Condition - <a href="23-abc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="7-am.html#SP29" class="function-link"><span class="function-syntax">Adjectives::Meanings::set_i6_schema</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1143,10 +1143,10 @@ before first compilation, but only once. For those, the ready flag is available:
</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">Adjectives::Meanings::get_ready_flag</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::get_ready_flag</span></span>:<br/>Either-Or Properties - <a href="15-ep.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::get_ready_flag</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::get_ready_flag</span></span>:<br/>Either-Or Properties - <a href="15-ep.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">am_ready_flag</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">Adjectives::Meanings::set_ready_flag</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_ready_flag</span></span>:<br/>Either-Or Properties - <a href="15-ep.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::set_ready_flag</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::set_ready_flag</span></span>:<br/>Either-Or Properties - <a href="15-ep.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">am_ready_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -1158,7 +1158,7 @@ skipping over any which have been dealt with already.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::list_next_domain_kind</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::list_next_domain_kind</span></span>:<br/><a href="7-am.html#SP35">&#167;35</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::list_next_domain_kind</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::list_next_domain_kind</span></span>:<br/><a href="7-am.html#SP35">&#167;35</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">am</span><span class="plain-syntax">) &amp;&amp; ((</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defined_already</span><span class="plain-syntax">) || (</span><a href="7-am.html#SP40" class="function-link"><span class="function-syntax">Adjectives::Meanings::compilation_possible</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</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">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_sorted</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax"> == </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>
@ -1175,7 +1175,7 @@ many AMs.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::compile_support_code</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compile_support_code</span></span>:<br/>Construction Sequence - <a href="22-cs.html#SP11_4">&#167;11.4</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">Adjectives::Meanings::compile_support_code</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compile_support_code</span></span>:<br/>Construction Sequence - <a href="22-cs.html#SP11_4">&#167;11.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-am.html#SP35_1" class="named-paragraph-link"><span class="named-paragraph">Ensure, just in case, that domains exist and are sorted on</span><span class="named-paragraph-number">35.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</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">T</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">T</span><span class="plain-syntax">&lt;=</span><span class="constant-syntax">NO_ADJECTIVE_TASKS</span><span class="plain-syntax">; </span><span class="identifier-syntax">T</span><span class="plain-syntax">++) {</span>
@ -1303,7 +1303,7 @@ have multiple definitions is "object", but that may change.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::list_compile</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::list_compile</span></span>:<br/><a href="7-am.html#SP35_2">&#167;35.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::list_compile</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::list_compile</span></span>:<br/><a href="7-am.html#SP35_2">&#167;35.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t0_s</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax">; </span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_sorted</span><span class="plain-syntax">)</span>
@ -1364,7 +1364,7 @@ claim if the sense is \(1\); some never claim at all.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::parse</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::parse</span></span>:<br/>Adjectival Definitions - <a href="23-ad.html#SP4_4">&#167;4.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="function-syntax">Adjectives::Meanings::parse</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::parse</span></span>:<br/>Adjectival Definitions - <a href="23-ad.html#SP4_4">&#167;4.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">am</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><a href="15-ep.html#SP13" class="function-link"><span class="function-syntax">Properties::EitherOr::ADJ_parse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">sense</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">DNW</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONW</span><span class="plain-syntax">, </span><span class="identifier-syntax">CALLW</span><span class="plain-syntax">);</span>
@ -1384,7 +1384,7 @@ at the last minute, but there is no obligation. There is also no return value.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::compiling_soon</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compiling_soon</span></span>:<br/><a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP40">&#167;40</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::compiling_soon</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compiling_soon</span></span>:<br/><a href="7-am.html#SP30">&#167;30</a>, <a href="7-am.html#SP40">&#167;40</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">adjective_form</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">CONDITION_KADJ:</span><span class="plain-syntax"> </span><a href="23-abc.html#SP1" class="function-link"><span class="function-syntax">Phrases::Condition::ADJ_compiling_soon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">detailed_meaning</span><span class="plain-syntax">), </span><span class="identifier-syntax">T</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -1414,11 +1414,11 @@ tell Inform that the task is impossible.
</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">Adjectives::Meanings::emit_meaning</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::emit_meaning</span></span>:<br/><a href="7-am.html#SP36">&#167;36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::emit_meaning</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::emit_meaning</span></span>:<br/><a href="7-am.html#SP36">&#167;36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="7-am.html#SP40" class="function-link"><span class="function-syntax">Adjectives::Meanings::compile_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">phsf</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">Adjectives::Meanings::compilation_possible</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compilation_possible</span></span>:<br/><a href="7-am.html#SP34">&#167;34</a>, <a href="7-am.html#SP36">&#167;36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::compilation_possible</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::compilation_possible</span></span>:<br/><a href="7-am.html#SP34">&#167;34</a>, <a href="7-am.html#SP36">&#167;36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">return</span><span class="plain-syntax"> </span><a href="7-am.html#SP40" class="function-link"><span class="function-syntax">Adjectives::Meanings::compile_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1472,7 +1472,7 @@ asserted, which will trigger a problem message.
</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">Adjectives::Meanings::assert_single</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::assert_single</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::assert_single</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::assert_single</span></span>:<br/><a href="7-am.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">meaning_parity</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">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">am_negated_from</span><span class="plain-syntax">; </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">parity</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
@ -1580,7 +1580,7 @@ prefaced "(of a rulebook)", "(of an activity)", and so on.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::agreements</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::agreements</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">Adjectives::Meanings::agreements</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::agreements</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Projects::get_language_of_play</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::project</span></a><span class="plain-syntax">()) == </span><span class="identifier-syntax">DefaultLanguage::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</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">aph</span><span class="plain-syntax">, </span><span class="identifier-syntax">adjective</span><span class="plain-syntax">) {</span>
@ -1702,7 +1702,7 @@ prefaced "(of a rulebook)", "(of an activity)", and so on.
<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">Adjectives::Meanings::emit</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::emit</span></span>:<br/>Compile Invocations - <a href="25-ci.html#SP2_1">&#167;2.1</a>, <a href="25-ci.html#SP2_2_3_3_1">&#167;2.2.3.3.1</a>, <a href="25-ci.html#SP2_2_3_4_1">&#167;2.2.3.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Adjectives::Meanings::emit</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Adjectives::Meanings::emit</span></span>:<br/>Compile Invocations - <a href="25-ci.html#SP2_1">&#167;2.1</a>, <a href="25-ci.html#SP2_2_3_3_1">&#167;2.2.3.3.1</a>, <a href="25-ci.html#SP2_2_3_4_1">&#167;2.2.3.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aph</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">aph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">aph_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.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">Produce::val_iname</span><span class="plain-syntax">(</span><a href="27-em.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><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRIOR_NAMED_NOUN_HL</span><span class="plain-syntax">));</span>

View file

@ -1327,7 +1327,7 @@ We don't do that because (for reasons to do with "here" and with how work
is shared among the plugins) the progenitors are determined in an undefined
order; if we made the object tree as we went along, the spatial model would
be perfectly correct, but siblings &mdash; say, the three things on the grass in
the Croquet Lawn &mdash; would be compiled in the I6 code in some undefined
the Croquet Lawn &mdash; would be compiled in the Inter code in some undefined
order. This order matters because it affects the text produced by typical
room descriptions: "You can also see a box, a ball and a peg here." might
become "You can also see a ball, a box and a peg here."
@ -1374,9 +1374,10 @@ the absence of other information.)
<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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">portable</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">portable</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::assert</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_fixed_in_place</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-sm.html#SP38">&#167;38</a>.</li></ul>

View file

@ -1,6 +1,6 @@
Total memory consumption was 256343K = 250 MB
62.4% was used for 1330234 objects, in 273429 frames in 200 x 800K = 160000K = 156 MB:
62.4% was used for 1330248 objects, in 273443 frames in 200 x 800K = 160000K = 156 MB:
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
@ -48,6 +48,7 @@ Total memory consumption was 256343K = 250 MB
---- index_lexicon_entry 395 objects, 142200 bytes
---- nonterminal 754 objects, 138736 bytes
---- action_pattern_array 6 x 100 = 600 objects, 129792 bytes
---- unary_predicate_array 8 x 1000 = 8000 objects, 128256 bytes
---- documentation_ref 1275 objects, 112200 bytes
---- hierarchy_location 730 objects, 105120 bytes
---- noun_usage 2401 objects, 96040 bytes
@ -73,7 +74,6 @@ Total memory consumption was 256343K = 250 MB
---- activity_list_array 1 x 1000 objects, 40032 bytes
---- response_message 407 objects, 35816 bytes
---- production_list 617 objects, 34552 bytes
---- unary_predicate_array 8 x 1000 = 8000 objects, 32192 bytes
---- regions_data 668 objects, 32064 bytes
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
---- property 146 objects, 31536 bytes
@ -94,7 +94,7 @@ Total memory consumption was 256343K = 250 MB
---- plugin 23 objects, 13432 bytes
---- literal_text 147 objects, 12936 bytes
---- stopwatch_timer 148 objects, 11840 bytes
---- method 235 objects, 11280 bytes
---- method 243 objects, 11664 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
---- pathname 262 objects, 10480 bytes
---- adjective 137 objects, 9864 bytes
@ -130,12 +130,12 @@ Total memory consumption was 256343K = 250 MB
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
---- semver_range 22 objects, 2288 bytes
---- method_set 67 objects, 2144 bytes
---- method_set 70 objects, 2240 bytes
---- use_option 29 objects, 1856 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- plugin_call_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- kind_interaction 39 objects, 1560 bytes
---- inter_annotation_form 37 objects, 1480 bytes
---- pipeline_step 12 objects, 1440 bytes
@ -154,8 +154,8 @@ Total memory consumption was 256343K = 250 MB
---- cached_understanding 21 objects, 840 bytes
---- runtime_kind_structure 13 objects, 832 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- target_vm 6 objects, 816 bytes
---- pipeline_stage 17 objects, 816 bytes
---- target_vm 6 objects, 816 bytes
---- generated_segment 25 objects, 800 bytes
---- inter_data_type 14 objects, 784 bytes
---- submodule_identity 23 objects, 736 bytes
@ -163,25 +163,25 @@ Total memory consumption was 256343K = 250 MB
---- rulebook_outcome 17 objects, 680 bytes
---- inform_language 6 objects, 672 bytes
---- inter_warehouse_room 10 objects, 640 bytes
---- I6T_intervention 8 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- I6T_intervention 8 objects, 640 bytes
---- nascent_array 7 objects, 616 bytes
---- named_rulebook_outcome 15 objects, 600 bytes
---- inbuild_search_result 15 objects, 600 bytes
---- named_rulebook_outcome 15 objects, 600 bytes
---- label_namespace 10 objects, 560 bytes
---- small_word_set 11 objects, 528 bytes
---- inform_kit 5 objects, 520 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- equation 4 objects, 416 bytes
---- module_package 10 objects, 400 bytes
---- dval_written 10 objects, 400 bytes
---- module_package 10 objects, 400 bytes
---- article_usage 8 objects, 384 bytes
---- source_file 5 objects, 360 bytes
---- bp_family 11 objects, 352 bytes
---- inbuild_genre 7 objects, 336 bytes
---- pronoun 8 objects, 320 bytes
---- grammatical_category 8 objects, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- build_step 4 objects, 288 bytes
---- door_to_notice 5 objects, 280 bytes
---- inform_pipeline 4 objects, 256 bytes
@ -194,23 +194,24 @@ Total memory consumption was 256343K = 250 MB
---- inform_project 1 object, 176 bytes
---- pointer_allocation 2 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- code_generation_target 4 objects, 160 bytes
---- link_instruction 4 objects, 160 bytes
---- element_activation 4 objects, 128 bytes
---- code_generation_target 4 objects, 160 bytes
---- codegen_pipeline 1 object, 128 bytes
---- element_activation 4 objects, 128 bytes
---- inbuild_nest 3 objects, 120 bytes
---- inform_kit_ittt 2 objects, 96 bytes
---- up_family 3 objects, 96 bytes
---- list_together_routine 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- article 2 objects, 80 bytes
---- list_together_routine 2 objects, 80 bytes
---- inter_warehouse 1 object, 56 bytes
---- build_methodology 1 object, 56 bytes
---- blorb_figure 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- star_invention 1 object, 48 bytes
---- kind_template_definition 1 object, 40 bytes
---- loop_over_scope 1 object, 40 bytes
---- parse_name_notice 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
37.5% was used for memory not allocated for objects:
@ -231,5 +232,5 @@ Total memory consumption was 256343K = 250 MB
---- emitter array storage 14368 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
20.1% was overhead - 52787328 bytes = 51550K = 50 MB
20.0% was overhead - 52690688 bytes = 51455K = 50 MB

View file

@ -1,35 +1,36 @@
100.0% in inform7 run
67.1% in compilation to Inter
25.5% in //Phrases::Manager::compile_first_block//
8.8% in //Phrases::Manager::compile_as_needed//
6.8% in //Strings::compile_responses//
6.1% in //World::Compile::compile//
4.4% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
1.9% in //Phrases::Manager::RulePrintingRule_routine//
67.5% in compilation to Inter
25.6% in //Phrases::Manager::compile_first_block//
9.0% in //Phrases::Manager::compile_as_needed//
6.9% in //Strings::compile_responses//
6.2% in //World::Compile::compile//
4.3% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
2.0% in //Phrases::Manager::RulePrintingRule_routine//
1.9% in //Phrases::Manager::rulebooks_array//
1.0% in //VerbsAtRunTime::ConjugateVerb//
0.8% in //Phrases::Manager::traverse//
0.5% in //Phrases::Manager::compile_rulebooks//
0.5% in //Phrases::Manager::parse_rule_parameters//
0.5% in //World::complete//
0.3% in //MajorNodes::pass_2//
0.3% in //Phrases::Manager::compile_rulebooks//
0.3% in //Relations::compile_defined_relations//
0.1% in //Kinds::RunTime::compile_data_type_support_routines//
0.1% in //PL::Parsing::Verbs::compile_all//
0.1% in //Task::make_built_in_kind_constructors//
3.5% not specifically accounted for
30.3% in running Inter pipeline
3.4% not specifically accounted for
30.1% in running Inter pipeline
9.7% in inter step 2/12: link
9.7% in step preparation
7.0% in inter step 12/12: generate inform6 -> auto.inf
9.5% in step preparation
7.1% in inter step 12/12: generate inform6 -> auto.inf
0.3% in inter step 9/12: make-identifiers-unique
0.1% in inter step 10/12: reconcile-verbs
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 6/12: assimilate
0.1% in inter step 7/12: resolve-external-symbols
0.1% in inter step 8/12: inspect-plugs
2.5% not specifically accounted for
2.1% in supervisor
2.2% not specifically accounted for
1.9% in supervisor
0.4% not specifically accounted for

View file

@ -17,9 +17,6 @@ of value for the contents of the variables; such structures exist temporarily
on the stack while we work.
=
typedef struct variable_type_assignment {
struct kind *assigned_kinds[26]; /* one for each of the 26 variables */
} variable_type_assignment;
@h Problem reporting kit.
The caller to |Propositions::Checker::type_check| has to fill this form out first. Paperwork,
@ -255,7 +252,8 @@ but not meaningless.
@ See below, of course.
@<A unary predicate is required to have an interpretation matching the kind of its term@> =
if (Propositions::Checker::type_check_unary_predicate(pl, &vta, tck) == NEVER_MATCH) {
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(pl->predicate);
if (UnaryPredicateFamilies::typecheck(up, pl, &vta, tck) == NEVER_MATCH) {
if (tck->log_to_I6_text) LOG("Adjective $o cannot be applied\n", pl);
return NEVER_MATCH;
}

View file

@ -104,6 +104,34 @@ parse_node **current_interpretation_as_spec = NULL; /* must point to a 26-elemen
=
parse_node *last_couldnt_assert_at = NULL;
void Propositions::Assert::issue_couldnt_problem(adjective *aph, int parity) {
if (last_couldnt_assert_at != current_sentence) {
wording W = Adjectives::get_nominative_singular(aph);
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_CantAssertAdjective));
if (parity == FALSE) Problems::issue_problem_segment(
"In the sentence %1, you ask me to arrange for something not to be "
"'%2' at the start of play. This is only possible when an adjective "
"talks about an either/or property, like 'open'/'closed' - if there "
"are three or more possibilities then it's ambiguous. Even if there "
"are only two possibilities, I can't always fix them just on your "
"request - 'visible'/'invisible', for instance, is something I can "
"test during play at any time, but not something I can arrange at "
"the start.");
else Problems::issue_problem_segment(
"In the sentence %1, you ask me to arrange for something to be '%2' "
"at the start of play. There are some adjectives ('open' or 'dark', "
"for instance) which I can fix, but others are just too vague. For "
"example, saying 'Peter is visible.' isn't allowed, because it "
"doesn't tell me where Peter is. Like 'visible', being '%2' is "
"something I can test during play at any time, but not something "
"I can arrange at the start.");
Problems::issue_problem_end();
last_couldnt_assert_at = current_sentence;
}
}
@ The second entrance, then, keeps track of the recursion depth but also
ensures that the identification slate is always correct, stacking them
so that an inner |Propositions::Assert::prop_true_in_model| has an independent slate from an outer
@ -184,9 +212,6 @@ void Propositions::Assert::prop_true_in_model(pcalc_prop *prop) {
case HERE_ATOM: @<Assert the truth or falsity of a HERE atom@>; break;
case EVERYWHERE_ATOM: @<Assert the truth or falsity of an EVERYWHERE atom@>; break;
case NOWHERE_ATOM: @<Assert the truth or falsity of a NOWHERE atom@>; break;
case ISAKIND_ATOM: case ISAVAR_ATOM: case ISACONST_ATOM:
if (now_negated) internal_error("ISA... atoms cannot be negated");
break;
}
}
}
@ -297,9 +322,10 @@ interpret no indication of a kind as meaning "object".
TRAVERSE_VARIABLE(lookahead);
TRAVERSE_PROPOSITION(lookahead, pl)
if ((lookahead->arity == 1) && (lookahead->terms[0].variable == v)) {
switch(lookahead->element) {
if (Atoms::is_CALLED(lookahead)) {
NW = Atoms::CALLED_get_name(lookahead);
} else switch(lookahead->element) {
case KIND_ATOM: K = lookahead->assert_kind; break;
case CALLED_ATOM: NW = Atoms::CALLED_get_name(lookahead); break;
case ISAKIND_ATOM: is_a_kind = TRUE; K = lookahead->assert_kind; break;
case ISAVAR_ATOM: is_a_var = TRUE; break;
case ISACONST_ATOM: is_a_const = TRUE; break;
@ -430,64 +456,10 @@ problem aside for now.
#endif
@h Asserting predicates.
First, asserting $adjective(t)$. We know that $t$ evaluates to a kind
of value over which $adjective$ is defined, or the proposition would
not have survived type-checking. But only some adjectives can be asserted;
"open" can, but "visible" can't, for instance. |Adjectives::Meanings::assert| returns a
success flag.
@<Assert the truth or falsity of a unary predicate@> =
unary_predicate *tr = RETRIEVE_POINTER_unary_predicate(pl->predicate);
adjective *aph = UnaryPredicates::get_adj(tr);
int parity = (now_negated)?FALSE:TRUE, found;
if (UnaryPredicates::get_parity(tr) == FALSE) parity = (parity)?FALSE:TRUE;
inference_subject *ox = Propositions::Assert::subject_of_term(pl->terms[0]);
parse_node *ots = Propositions::Assert::spec_of_term(pl->terms[0]);
kind *domain_of_definition = InferenceSubjects::domain(ox);
if (domain_of_definition == NULL) {
instance *inst = InferenceSubjects::as_object_instance(ox);
if (inst) domain_of_definition = Instances::to_kind(inst);
}
inference_subject *try = ox;
while ((domain_of_definition == NULL) && (try)) {
domain_of_definition = InferenceSubjects::domain(try);
try = InferenceSubjects::narrowest_broader_subject(try);
}
if (domain_of_definition == NULL)
domain_of_definition = Node::get_kind_of_value(ots);
if (ox) found = Adjectives::Meanings::assert(aph, domain_of_definition, ox, NULL, parity);
else found = Adjectives::Meanings::assert(aph, domain_of_definition, NULL, ots, parity);
if (found == FALSE) {
if (last_couldnt_assert_at != current_sentence) {
wording W = Adjectives::get_nominative_singular(aph);
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, W);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_CantAssertAdjective));
if (parity == FALSE) Problems::issue_problem_segment(
"In the sentence %1, you ask me to arrange for something not to be "
"'%2' at the start of play. This is only possible when an adjective "
"talks about an either/or property, like 'open'/'closed' - if there "
"are three or more possibilities then it's ambiguous. Even if there "
"are only two possibilities, I can't always fix them just on your "
"request - 'visible'/'invisible', for instance, is something I can "
"test during play at any time, but not something I can arrange at "
"the start.");
else Problems::issue_problem_segment(
"In the sentence %1, you ask me to arrange for something to be '%2' "
"at the start of play. There are some adjectives ('open' or 'dark', "
"for instance) which I can fix, but others are just too vague. For "
"example, saying 'Peter is visible.' isn't allowed, because it "
"doesn't tell me where Peter is. Like 'visible', being '%2' is "
"something I can test during play at any time, but not something "
"I can arrange at the start.");
Problems::issue_problem_end();
last_couldnt_assert_at = current_sentence;
}
}
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(pl->predicate);
UnaryPredicateFamilies::assert(up, now_negated, pl);
@ Binary predicates, unlike unary ones, can only be asserted positively. This
is because $\lnot P(x)$ tells you something fairly definite, whereas $\lnot Q(x, y)$
@ -692,10 +664,8 @@ int Propositions::Assert::testable_at_compile_time(pcalc_prop *prop) {
}
@<See if this unary predicate can be tested@> =
unary_predicate *ale = RETRIEVE_POINTER_unary_predicate(pl->predicate);
adjective *aph = UnaryPredicates::get_adj(ale);
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
if (prn == NULL) return FALSE;
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(pl->predicate);
if (UnaryPredicateFamilies::testable(up) == FALSE) return FALSE;
@ And the actual test:
@ -720,15 +690,5 @@ int Propositions::Assert::test_at_compile_time(pcalc_prop *prop, inference_subje
;
@<Test if this unary predicate is true@> =
unary_predicate *ale = RETRIEVE_POINTER_unary_predicate(pl->predicate);
adjective *aph = UnaryPredicates::get_adj(ale);
int sense = UnaryPredicates::get_parity(ale);
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
if (prn) {
possession_marker *adj = Properties::get_possession_marker(prn);
if (sense) {
if (adj->possessed == FALSE) return FALSE;
} else {
if (adj->possessed == TRUE) return FALSE;
}
}
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(pl->predicate);
if (UnaryPredicateFamilies::test(up, about) == FALSE) return FALSE;

View file

@ -113,9 +113,9 @@ annotated_i6_schema Atoms::Compile::i6_schema_of_atom(i6_schema *sch, pcalc_prop
asch.negate_schema = FALSE;
asch.pt0 = pl->terms[0]; asch.pt1 = pl->terms[1];
asch.involves_action_variables = Atoms::Compile::atom_involves_action_variables(pl);
switch(pl->element) {
case CALLED_ATOM: @<Make an annotated schema for a CALLED atom@>;
if (Atoms::is_CALLED(pl)) {
@<Make an annotated schema for a CALLED atom@>;
} else switch(pl->element) {
case KIND_ATOM: @<Make an annotated schema for a KIND atom@>;
case EVERYWHERE_ATOM: @<Make an annotated schema for an EVERYWHERE atom@>;
case NOWHERE_ATOM: @<Make an annotated schema for a NOWHERE atom@>;
@ -251,23 +251,11 @@ propositions to be compiled, so this code is never used.)
adjective apparatus.
@<Make an annotated schema for a unary predicate@> =
int atask = 0; /* redundant assignment to appease |gcc -O2| */
unary_predicate *tr = RETRIEVE_POINTER_unary_predicate(pl->predicate);
adjective *aph = UnaryPredicates::get_adj(tr);
if (UnaryPredicates::get_parity(tr) == FALSE) asch.negate_schema = TRUE;
if ((pl->terms[0].constant) && (pl->terms[0].term_checked_as_kind == NULL))
pl->terms[0].term_checked_as_kind = Specifications::to_kind(pl->terms[0].constant);
switch(task) {
case TEST_ATOM_TASK: atask = TEST_ADJECTIVE_TASK; break;
case NOW_ATOM_TRUE_TASK: atask = NOW_ADJECTIVE_TRUE_TASK; break;
case NOW_ATOM_FALSE_TASK: atask = NOW_ADJECTIVE_FALSE_TASK; break;
}
LOGIF(PREDICATE_CALCULUS_WORKINGS, "Unary predicate: $o, on: %u\n", pl, pl->terms[0].term_checked_as_kind);
asch.schema = Adjectives::Meanings::get_i6_schema(aph, pl->terms[0].term_checked_as_kind, atask);
unary_predicate *tr = RETRIEVE_POINTER_unary_predicate(pl->predicate);
UnaryPredicateFamilies::get_schema(task, tr, &asch, pl->terms[0].term_checked_as_kind);
return asch;
@ Delegation is similarly the art of compiling a BP:

View file

@ -508,6 +508,9 @@ I6 code as we go, but preserving the Invariant.
int no_deferred_callings = 0; /* how many |CALLED| atoms have been found to date */
TRAVERSE_PROPOSITION(pl, proposition) {
if (Atoms::is_CALLED(pl)) {
@<Push the C-stack@>;
} else
switch (pl->element) {
case NEGATION_OPEN_ATOM:
case NEGATION_CLOSE_ATOM:
@ -530,9 +533,6 @@ I6 code as we go, but preserving the Invariant.
@<End a run of predicate-like conditions, if one is under way@>;
@<Pop the R-stack@>;
break;
case CALLED_ATOM:
@<Push the C-stack@>;
break;
default: {
if (R_stack_reason[R_sp-1] == NOW_ASSERTION_DEFER)
@<Compile code to force the atom@>
@ -540,7 +540,7 @@ I6 code as we go, but preserving the Invariant.
int last_in_run = TRUE, first_in_run = TRUE;
if (run_of_conditions++ > 0) first_in_run = FALSE;
pcalc_prop *ex = pl->next;
while ((ex) && (ex->element == CALLED_ATOM)) ex = ex->next;
while ((ex) && (Atoms::is_CALLED(ex))) ex = ex->next;
if (ex) {
switch(ex->element) {
case NEGATION_OPEN_ATOM:

View file

@ -276,16 +276,11 @@ get to the setting of |t_2| and |t_3|.
=
int Calculus::Deferrals::count_callings_in_condition(pcalc_prop *prop) {
int calling_count=0;
int calling_count = 0;
TRAVERSE_VARIABLE(pl);
TRAVERSE_PROPOSITION(pl, prop) {
switch(pl->element) {
case CALLED_ATOM: {
calling_count++;
break;
}
}
}
TRAVERSE_PROPOSITION(pl, prop)
if (Atoms::is_CALLED(pl))
calling_count++;
return calling_count;
}
@ -295,25 +290,22 @@ void Calculus::Deferrals::emit_retrieve_callings_in_condition(pcalc_prop *prop,
int calling_count = 0, downs = 0;
TRAVERSE_VARIABLE(pl);
TRAVERSE_PROPOSITION(pl, prop) {
switch(pl->element) {
case CALLED_ATOM: {
local_variable *local;
@<Find which local variable in R needs the value, creating it if necessary@>;
calling_count++;
if (calling_count < NC) { Produce::inv_primitive(Emit::tree(), SEQUENTIAL_BIP); Produce::down(Emit::tree()); downs++; }
Produce::inv_primitive(Emit::tree(), STORE_BIP);
if (Atoms::is_CALLED(pl)) {
local_variable *local;
@<Find which local variable in R needs the value, creating it if necessary@>;
calling_count++;
if (calling_count < NC) { Produce::inv_primitive(Emit::tree(), SEQUENTIAL_BIP); Produce::down(Emit::tree()); downs++; }
Produce::inv_primitive(Emit::tree(), STORE_BIP);
Produce::down(Emit::tree());
inter_symbol *local_s = LocalVariables::declare_this(local, FALSE, 8);
Produce::ref_symbol(Emit::tree(), K_value, local_s);
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
Produce::down(Emit::tree());
inter_symbol *local_s = LocalVariables::declare_this(local, FALSE, 8);
Produce::ref_symbol(Emit::tree(), K_value, local_s);
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
Produce::down(Emit::tree());
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEFERRED_CALLING_LIST_HL));
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) (calling_count - 1));
Produce::up(Emit::tree());
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEFERRED_CALLING_LIST_HL));
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) (calling_count - 1));
Produce::up(Emit::tree());
LocalVariables::add_calling_to_condition(local);
break;
}
Produce::up(Emit::tree());
LocalVariables::add_calling_to_condition(local);
}
}
while (downs > 0) { Produce::up(Emit::tree()); downs--; }
@ -326,24 +318,21 @@ void Calculus::Deferrals::emit_retrieve_callings(pcalc_prop *prop) {
int calling_count=0;
TRAVERSE_VARIABLE(pl);
TRAVERSE_PROPOSITION(pl, prop) {
switch(pl->element) {
case CALLED_ATOM: {
local_variable *local;
@<Find which local variable in R needs the value, creating it if necessary@>;
Produce::inv_primitive(Emit::tree(), SEQUENTIAL_BIP);
if (Atoms::is_CALLED(pl)) {
local_variable *local;
@<Find which local variable in R needs the value, creating it if necessary@>;
Produce::inv_primitive(Emit::tree(), SEQUENTIAL_BIP);
Produce::down(Emit::tree());
Produce::inv_primitive(Emit::tree(), STORE_BIP);
Produce::down(Emit::tree());
Produce::inv_primitive(Emit::tree(), STORE_BIP);
inter_symbol *local_s = LocalVariables::declare_this(local, FALSE, 8);
Produce::ref_symbol(Emit::tree(), K_value, local_s);
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
Produce::down(Emit::tree());
inter_symbol *local_s = LocalVariables::declare_this(local, FALSE, 8);
Produce::ref_symbol(Emit::tree(), K_value, local_s);
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
Produce::down(Emit::tree());
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEFERRED_CALLING_LIST_HL));
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) calling_count++);
Produce::up(Emit::tree());
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEFERRED_CALLING_LIST_HL));
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) calling_count++);
Produce::up(Emit::tree());
break;
}
Produce::up(Emit::tree());
}
}
if (calling_count > 0) {
@ -494,17 +483,18 @@ does not have run-time object or value creation.
}
quantifier_count++;
break;
case CALLED_ATOM:
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantForceCalling),
"a 'now' is not allowed to call names",
"and it wouldn't really make sense to do so anyway. 'if "
"a person (called the victim) is in the Trap Room' makes "
"sense, because it gives a name - 'victim' - to someone "
"whose identity we don't know. But 'now a person (called "
"the victim) is in the Trap Room' won't be allowed, "
"because 'now' can only talk about people or things whose "
"identities we do know.");
return;
}
if (Atoms::is_CALLED(pl)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantForceCalling),
"a 'now' is not allowed to call names",
"and it wouldn't really make sense to do so anyway. 'if "
"a person (called the victim) is in the Trap Room' makes "
"sense, because it gives a name - 'victim' - to someone "
"whose identity we don't know. But 'now a person (called "
"the victim) is in the Trap Room' won't be allowed, "
"because 'now' can only talk about people or things whose "
"identities we do know.");
return;
}
}

View file

@ -178,7 +178,7 @@ a list. It's sometimes convenient to loop through this list:
=
int Descriptions::number_of_adjectives_applied_to(parse_node *spec) {
return Propositions::count_unary_predicates(
return Propositions::count_adjectives(
Descriptions::to_proposition(spec));
}
@ -280,7 +280,7 @@ void Descriptions::attach_calling(parse_node *spec, wording C) {
wording Descriptions::get_calling(parse_node *spec) {
if (Specifications::is_description(spec))
for (pcalc_prop *pp = Descriptions::to_proposition(spec); pp; pp = pp->next)
if (pp->element == CALLED_ATOM)
if (Atoms::is_CALLED(pp))
return Atoms::CALLED_get_name(pp);
return EMPTY_WORDING;
}
@ -289,7 +289,7 @@ void Descriptions::clear_calling(parse_node *spec) {
if (spec == NULL) return;
pcalc_prop *pp, *prev_pp = NULL;
for (pp = Descriptions::to_proposition(spec); pp; prev_pp = pp, pp = pp->next)
if (pp->element == CALLED_ATOM) {
if (Atoms::is_CALLED(pp)) {
Descriptions::set_proposition(spec,
Propositions::delete_atom(
Descriptions::to_proposition(spec), prev_pp));

View file

@ -1093,7 +1093,7 @@ We don't do that because (for reasons to do with "here" and with how work
is shared among the plugins) the progenitors are determined in an undefined
order; if we made the object tree as we went along, the spatial model would
be perfectly correct, but siblings -- say, the three things on the grass in
the Croquet Lawn -- would be compiled in the I6 code in some undefined
the Croquet Lawn -- would be compiled in the Inter code in some undefined
order. This order matters because it affects the text produced by typical
room descriptions: "You can also see a box, a ball and a peg here." might
become "You can also see a ball, a box and a peg here."
@ -1130,9 +1130,10 @@ the absence of other information.)
break;
}
}
if (portable)
if (portable) {
Properties::EitherOr::assert(
P_fixed_in_place, Instances::as_subject(I), FALSE, CERTAIN_CE);
}
}
@<Assert I6-level properties to express the spatial structure@> =

View file

@ -13,6 +13,7 @@ which use this module:
@e i6_schema_CLASS
@e binary_predicate_CLASS
@e bp_family_CLASS
@e up_family_CLASS
@e pcalc_term_CLASS
@e pcalc_func_CLASS
@e pcalc_prop_CLASS
@ -21,6 +22,7 @@ which use this module:
=
DECLARE_CLASS(binary_predicate)
DECLARE_CLASS(bp_family)
DECLARE_CLASS(up_family)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(pcalc_func, 1000)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(pcalc_term, 1000)
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(pcalc_prop, 1000)
@ -47,6 +49,8 @@ void CalculusModule::start(void) {
REGISTER_WRITER('r', UnaryPredicates::log);
Log::declare_aspect(PREDICATE_CALCULUS_DA, L"predicate calculus", FALSE, FALSE);
Log::declare_aspect(PREDICATE_CALCULUS_WORKINGS_DA, L"predicate calculus workings", FALSE, FALSE);
Calculus::Adjectival::start();
Calculus::Creation::start();
Calculus::Equality::start();
}
void CalculusModule::end(void) {

View file

@ -37,12 +37,14 @@ and gives an opportunity to make, say, one relation for every value property.
VOID_METHOD_TYPE(STOCK_BPF_MTID, bp_family *f, int n)
void BinaryPredicateFamilies::first_stock(void) {
UnaryPredicateFamilies::stock(1);
bp_family *f;
LOOP_OVER(f, bp_family)
VOID_METHOD_CALL(f, STOCK_BPF_MTID, 1);
}
void BinaryPredicateFamilies::second_stock(void) {
UnaryPredicateFamilies::stock(2);
bp_family *f;
LOOP_OVER(f, bp_family)
VOID_METHOD_CALL(f, STOCK_BPF_MTID, 2);

View file

@ -0,0 +1,132 @@
[Calculus::Adjectival::] The Adjectival Predicates.
To define the predicates connected to limguistic adjectives.
@
= (early code)
up_family *adjectival_up_family = NULL;
@
=
void Calculus::Adjectival::start(void) {
adjectival_up_family = UnaryPredicateFamilies::new();
#ifdef CORE_MODULE
METHOD_ADD(adjectival_up_family, TYPECHECK_UPF_MTID, Calculus::Adjectival::typecheck);
METHOD_ADD(adjectival_up_family, INFER_KIND_UPF_MTID, Calculus::Adjectival::infer_kind);
METHOD_ADD(adjectival_up_family, ASSERT_UPF_MTID, Calculus::Adjectival::assert);
METHOD_ADD(adjectival_up_family, TESTABLE_UPF_MTID, Calculus::Adjectival::testable);
METHOD_ADD(adjectival_up_family, TEST_UPF_MTID, Calculus::Adjectival::test);
METHOD_ADD(adjectival_up_family, SCHEMA_UPF_MTID, Calculus::Adjectival::get_schema);
#endif
METHOD_ADD(adjectival_up_family, LOG_UPF_MTID, Calculus::Adjectival::log);
}
void Calculus::Adjectival::log(up_family *self, OUTPUT_STREAM, unary_predicate *up) {
if (UnaryPredicates::get_parity(up) == FALSE) WRITE("not-");
wording W = Adjectives::get_nominative_singular(UnaryPredicates::get_adj(up));
WRITE("%W", W);
}
#ifdef CORE_MODULE
void Calculus::Adjectival::infer_kind(up_family *self, unary_predicate *up, kind **K) {
adjective *aph = UnaryPredicates::get_adj(up);
adjective_meaning *am = Adjectives::Meanings::first_meaning(aph);
kind *D = Adjectives::Meanings::get_domain(am);
if (D) *K = D;
}
#endif
#ifdef CORE_MODULE
int Calculus::Adjectival::typecheck(up_family *self, unary_predicate *up,
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck) {
if (Propositions::Checker::type_check_unary_predicate(prop, vta, tck) == NEVER_MATCH)
return NEVER_MATCH;
return DECLINE_TO_MATCH;
}
#endif
@ Next, asserting $adjective(t)$. We know that $t$ evaluates to a kind
of value over which $adjective$ is defined, or the proposition would
not have survived type-checking. But only some adjectives can be asserted;
"open" can, but "visible" can't, for instance. |Adjectives::Meanings::assert| returns a
success flag.
=
#ifdef CORE_MODULE
void Calculus::Adjectival::assert(up_family *self, unary_predicate *up,
int now_negated, pcalc_prop *pl) {
adjective *aph = UnaryPredicates::get_adj(up);
int parity = (now_negated)?FALSE:TRUE, found;
if (UnaryPredicates::get_parity(up) == FALSE) parity = (parity)?FALSE:TRUE;
inference_subject *ox = Propositions::Assert::subject_of_term(pl->terms[0]);
parse_node *ots = Propositions::Assert::spec_of_term(pl->terms[0]);
kind *domain_of_definition = InferenceSubjects::domain(ox);
if (domain_of_definition == NULL) {
instance *inst = InferenceSubjects::as_object_instance(ox);
if (inst) domain_of_definition = Instances::to_kind(inst);
}
inference_subject *try = ox;
while ((domain_of_definition == NULL) && (try)) {
domain_of_definition = InferenceSubjects::domain(try);
try = InferenceSubjects::narrowest_broader_subject(try);
}
if (domain_of_definition == NULL)
domain_of_definition = Node::get_kind_of_value(ots);
if (ox) found = Adjectives::Meanings::assert(aph, domain_of_definition, ox, NULL, parity);
else found = Adjectives::Meanings::assert(aph, domain_of_definition, NULL, ots, parity);
if (found == FALSE) Propositions::Assert::issue_couldnt_problem(aph, parity);
}
#endif
#ifdef CORE_MODULE
int Calculus::Adjectival::testable(up_family *self, unary_predicate *up) {
adjective *aph = UnaryPredicates::get_adj(up);
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
if (prn == NULL) return FALSE;
return TRUE;
}
#endif
#ifdef CORE_MODULE
int Calculus::Adjectival::test(up_family *self, unary_predicate *up,
TERM_DOMAIN_CALCULUS_TYPE *about) {
adjective *aph = UnaryPredicates::get_adj(up);
int sense = UnaryPredicates::get_parity(up);
property *prn = Adjectives::Meanings::has_EORP_meaning(aph, NULL);
if (prn) {
possession_marker *adj = Properties::get_possession_marker(prn);
if (sense) {
if (adj->possessed == FALSE) return FALSE;
} else {
if (adj->possessed == TRUE) return FALSE;
}
return TRUE;
}
return FALSE;
}
#endif
#ifdef CORE_MODULE
void Calculus::Adjectival::get_schema(up_family *self, int task, unary_predicate *up,
annotated_i6_schema *asch, kind *K) {
int atask = 0; /* redundant assignment to appease |gcc -O2| */
adjective *aph = UnaryPredicates::get_adj(up);
if (UnaryPredicates::get_parity(up) == FALSE) asch->negate_schema = TRUE;
switch(task) {
case TEST_ATOM_TASK: atask = TEST_ADJECTIVE_TASK; break;
case NOW_ATOM_TRUE_TASK: atask = NOW_ADJECTIVE_TRUE_TASK; break;
case NOW_ATOM_FALSE_TASK: atask = NOW_ADJECTIVE_FALSE_TASK; break;
}
asch->schema = Adjectives::Meanings::get_i6_schema(aph, K, atask);
}
#endif

View file

@ -0,0 +1,32 @@
[Calculus::Creation::] The Creation Predicates.
To define the predicates causing instances to be created.
@ This predicate plays a very special role in our calculus, and must always
exist.
= (early code)
up_family *calling_up_family = NULL;
up_family *creation_up_family = NULL;
@h Family.
This is a minimal representation only: Inform adds other methods to the equality
family to handle its typechecking and so on.
=
void Calculus::Creation::start(void) {
calling_up_family = UnaryPredicateFamilies::new();
creation_up_family = UnaryPredicateFamilies::new();
METHOD_ADD(creation_up_family, STOCK_UPF_MTID, Calculus::Creation::stock_creation);
}
@h Initial stock.
This relation is hard-wired in, and it is made in a slightly special way
since (alone among binary predicates) it has no distinct reversal.
=
void Calculus::Creation::stock_creation(up_family *self, int n) {
if (n == 1) {
; // make isakind, etc., here
}
}

View file

@ -0,0 +1,130 @@
[UnaryPredicateFamilies::] Unary Predicate Families.
To create sets of unary predicates for different purposes.
@ Want to create a new unary predicate? First you'll need a family for it to
belong to.
A //up_family// object is simply a receiver for the method calls providing
the predicate's implementation.
=
typedef struct up_family {
struct method_set *methods;
CLASS_DEFINITION
} up_family;
up_family *UnaryPredicateFamilies::new(void) {
up_family *f = CREATE(up_family);
f->methods = Methods::new_set();
return f;
}
@ |STOCK_UPF_MTID| is for stocking up on unaries, and happens very early
in Inform's run.
@e STOCK_UPF_MTID
=
VOID_METHOD_TYPE(STOCK_UPF_MTID, up_family *f, int n)
void UnaryPredicateFamilies::stock(int n) {
up_family *f;
LOOP_OVER(f, up_family)
VOID_METHOD_CALL(f, STOCK_UPF_MTID, n);
}
@
@e TYPECHECK_UPF_MTID
=
typedef struct variable_type_assignment {
struct kind *assigned_kinds[26]; /* one for each of the 26 variables */
} variable_type_assignment;
INT_METHOD_TYPE(TYPECHECK_UPF_MTID, up_family *f, unary_predicate *up,
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck)
int UnaryPredicateFamilies::typecheck(unary_predicate *up,
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck) {
int rv = DECLINE_TO_MATCH;
INT_METHOD_CALL(rv, up->family, TYPECHECK_UPF_MTID, up, prop, vta, tck);
return rv;
}
@
@e ASSERT_UPF_MTID
=
VOID_METHOD_TYPE(ASSERT_UPF_MTID, up_family *f, unary_predicate *up,
int now_negated, pcalc_prop *pl)
void UnaryPredicateFamilies::assert(unary_predicate *up,
int now_negated, pcalc_prop *pl) {
VOID_METHOD_CALL(up->family, ASSERT_UPF_MTID, up, now_negated, pl);
}
@
@e TESTABLE_UPF_MTID
=
INT_METHOD_TYPE(TESTABLE_UPF_MTID, up_family *f, unary_predicate *up)
int UnaryPredicateFamilies::testable(unary_predicate *up) {
int rv = FALSE;
INT_METHOD_CALL(rv, up->family, TESTABLE_UPF_MTID, up);
return rv;
}
@
@e TEST_UPF_MTID
=
INT_METHOD_TYPE(TEST_UPF_MTID, up_family *f, unary_predicate *up,
TERM_DOMAIN_CALCULUS_TYPE *about)
int UnaryPredicateFamilies::test(unary_predicate *up, TERM_DOMAIN_CALCULUS_TYPE *about) {
int rv = FALSE;
INT_METHOD_CALL(rv, up->family, TEST_UPF_MTID, up, about);
return rv;
}
@e SCHEMA_UPF_MTID
=
VOID_METHOD_TYPE(SCHEMA_UPF_MTID, up_family *f, int task, unary_predicate *up,
annotated_i6_schema *asch, kind *K)
void UnaryPredicateFamilies::get_schema(int task, unary_predicate *up,
annotated_i6_schema *asch, kind *K) {
VOID_METHOD_CALL(up->family, SCHEMA_UPF_MTID, task, up, asch, K);
}
@
@e INFER_KIND_UPF_MTID
=
VOID_METHOD_TYPE(INFER_KIND_UPF_MTID, up_family *f, unary_predicate *up, kind **K)
kind *UnaryPredicateFamilies::infer_kind(unary_predicate *up) {
kind *K = NULL;
VOID_METHOD_CALL(up->family, INFER_KIND_UPF_MTID, up, &K);
return K;
}
@
@e LOG_UPF_MTID
=
VOID_METHOD_TYPE(LOG_UPF_MTID, up_family *f, text_stream *OUT,
unary_predicate *up)
void UnaryPredicateFamilies::log(OUTPUT_STREAM, unary_predicate *up) {
VOID_METHOD_CALL(up->family, LOG_UPF_MTID, OUT, up);
}

View file

@ -8,12 +8,14 @@ also records its sense, i.e., positive or negative:
=
typedef struct unary_predicate {
struct up_family *family;
lcon_ti lcon;
} unary_predicate;
@ =
unary_predicate *UnaryPredicates::new(adjective *aph, int pos) {
unary_predicate *au = CREATE(unary_predicate);
au->family = adjectival_up_family;
au->lcon = Stock::to_lcon(aph->in_stock);
if (pos) au->lcon = Lcon::set_sense(au->lcon, POSITIVE_SENSE);
else au->lcon = Lcon::set_sense(au->lcon, NEGATIVE_SENSE);
@ -22,6 +24,7 @@ unary_predicate *UnaryPredicates::new(adjective *aph, int pos) {
unary_predicate *UnaryPredicates::copy(unary_predicate *au_from) {
unary_predicate *au = CREATE(unary_predicate);
au->family = au_from->family;
au->lcon = au_from->lcon;
return au;
}

View file

@ -238,6 +238,11 @@ The calling data for a |CALLED| atom is the textual name by which the variable
will be called.
=
int Atoms::is_CALLED(pcalc_prop *prop) {
if (prop->element == CALLED_ATOM) return TRUE;
return FALSE;
}
pcalc_prop *Atoms::CALLED_new(wording W, pcalc_term pt, kind *K) {
pcalc_prop *prop = Atoms::new(CALLED_ATOM);
prop->terms[prop->arity++] = pt;
@ -408,6 +413,15 @@ void Atoms::log(pcalc_prop *prop) {
void Atoms::write(text_stream *OUT, pcalc_prop *prop) {
if (prop == NULL) { WRITE("<null-atom>"); return; }
@<Use a special notation for equality@>;
if (Atoms::is_CALLED(prop)) {
wording W = Atoms::CALLED_get_name(prop);
WRITE("called='%W'", W);
if (prop->assert_kind) {
WRITE("(");
Kinds::Textual::write(OUT, prop->assert_kind);
WRITE(")");
}
} else
switch(prop->element) {
case PREDICATE_ATOM:
switch(prop->arity) {
@ -422,16 +436,6 @@ void Atoms::write(text_stream *OUT, pcalc_prop *prop) {
WRITE(" "); @<Log a comma-separated list of terms for this atomic proposition@>;
return;
}
case CALLED_ATOM: {
wording W = Atoms::CALLED_get_name(prop);
WRITE("called='%W'", W);
if (prop->assert_kind) {
WRITE("(");
Kinds::Textual::write(OUT, prop->assert_kind);
WRITE(")");
}
break;
}
case KIND_ATOM:
if (Streams::I6_escapes_enabled(DL) == FALSE) WRITE("kind=");
Kinds::Textual::write(OUT, prop->assert_kind);
@ -470,9 +474,7 @@ void Atoms::write(text_stream *OUT, pcalc_prop *prop) {
@<Log some suitable textual name for this unary predicate@> =
unary_predicate *tr = RETRIEVE_POINTER_unary_predicate(prop->predicate);
if (UnaryPredicates::get_parity(tr) == FALSE) WRITE("not-");
wording W = Adjectives::get_nominative_singular(UnaryPredicates::get_adj(tr));
WRITE("%W", W);
UnaryPredicateFamilies::log(OUT, tr);
@<Log some suitable textual name for this binary predicate@> =
binary_predicate *bp = RETRIEVE_POINTER_binary_predicate(prop->predicate);

View file

@ -381,7 +381,6 @@ pcalc_prop *Binding::substitute_var_0_in(pcalc_prop *prop, parse_node *spec) {
@ If we are willing to work a little harder:
=
#ifdef CORE_MODULE
kind *Binding::infer_kind_of_variable_0(pcalc_prop *prop) {
TRAVERSE_VARIABLE(p);
TRAVERSE_PROPOSITION(p, prop) {
@ -390,16 +389,13 @@ kind *Binding::infer_kind_of_variable_0(pcalc_prop *prop) {
if (K) return K;
}
if ((p->element == PREDICATE_ATOM) && (p->arity == 1) && (p->terms[0].variable == 0)) {
unary_predicate *tr = RETRIEVE_POINTER_unary_predicate(p->predicate);
adjective *aph = UnaryPredicates::get_adj(tr);
adjective_meaning *am = Adjectives::Meanings::first_meaning(aph);
kind *K = Adjectives::Meanings::get_domain(am);
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(p->predicate);
kind *K = UnaryPredicateFamilies::infer_kind(up);
if (K) return K;
}
}
return NULL;
}
#endif
@h Detect locals.
Properly speaking, this has nothing to do with variables,

View file

@ -485,6 +485,16 @@ pcalc_prop *Propositions::prop_seek_atom(pcalc_prop *prop, int atom_req, int ari
return NULL;
}
pcalc_prop *Propositions::prop_seek_up_family(pcalc_prop *prop, up_family *f) {
TRAVERSE_VARIABLE(p);
TRAVERSE_PROPOSITION(p, prop)
if ((p->element == PREDICATE_ATOM) && (p->arity == 1)) {
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(p->predicate);
if (up->family == f) return p;
}
return NULL;
}
@ Seeking different kinds of atom is now easy:
=
@ -512,7 +522,10 @@ int Propositions::contains_nonexistence_quantifier(pcalc_prop *prop) {
}
int Propositions::contains_callings(pcalc_prop *prop) {
if (Propositions::prop_seek_atom(prop, CALLED_ATOM, -1)) return TRUE; return FALSE;
for (pcalc_prop *p = prop; p; p = p->next)
if (Atoms::is_CALLED(p))
return TRUE;
return FALSE;
}
@ Here we try to find out the kind of value of variable 0 without the full
@ -565,17 +578,23 @@ parse_node *Propositions::describes_value(pcalc_prop *prop) {
=
int Propositions::contains_adjective(pcalc_prop *prop) {
if (Propositions::prop_seek_atom(prop, PREDICATE_ATOM, 1)) return TRUE;
for (pcalc_prop *p = prop; p; p = p->next)
if ((p->element == PREDICATE_ATOM) && (p->arity == 1)) {
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(p->predicate);
if (up->family == adjectival_up_family)
return TRUE;
}
return FALSE;
}
int Propositions::count_unary_predicates(pcalc_prop *prop) {
int Propositions::count_adjectives(pcalc_prop *prop) {
int ac = 0;
pcalc_prop *p = prop;
while ((p = Propositions::prop_seek_atom(p, PREDICATE_ATOM, 1)) != NULL) {
if (Terms::variable_underlying(&(p->terms[0])) == 0) ac++;
p = p->next;
}
for (pcalc_prop *p = prop; p; p = p->next)
if ((p->element == PREDICATE_ATOM) && (p->arity == 1) &&
(Terms::variable_underlying(&(p->terms[0])) == 0)) {
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(p->predicate);
if (up->family == adjectival_up_family) ac++;
}
return ac;
}
@ -607,8 +626,9 @@ pcalc_term Propositions::convert_adj_to_noun(pcalc_prop *prop) {
if (prop == NULL) return pct;
if (prop->next != NULL) return pct;
if ((prop->element == PREDICATE_ATOM) && (prop->arity == 1)) {
unary_predicate *tr = RETRIEVE_POINTER_unary_predicate(prop->predicate);
return Terms::adj_to_noun_conversion(tr);
unary_predicate *up = RETRIEVE_POINTER_unary_predicate(prop->predicate);
if (up->family == adjectival_up_family)
return Terms::adj_to_noun_conversion(up);
}
if (prop->element == KIND_ATOM) {
kind *K = prop->assert_kind;
@ -624,7 +644,7 @@ following are useful for looping through them:
=
unary_predicate *Propositions::first_unary_predicate(pcalc_prop *prop, pcalc_prop **ppp) {
prop = Propositions::prop_seek_atom(prop, PREDICATE_ATOM, 1);
prop = Propositions::prop_seek_up_family(prop, adjectival_up_family);
if (ppp) *ppp = prop;
if (prop == NULL) return NULL;
return Atoms::to_adjectival_usage(prop);
@ -632,7 +652,7 @@ unary_predicate *Propositions::first_unary_predicate(pcalc_prop *prop, pcalc_pro
unary_predicate *Propositions::next_unary_predicate(pcalc_prop **ppp) {
if (ppp == NULL) internal_error("bad ppp");
pcalc_prop *prop = Propositions::prop_seek_atom((*ppp)->next, PREDICATE_ATOM, 1);
pcalc_prop *prop = Propositions::prop_seek_up_family((*ppp)->next, adjectival_up_family);
*ppp = prop;
if (prop == NULL) return NULL;
return Atoms::to_adjectival_usage(prop);

View file

@ -14,7 +14,10 @@ Chapter 1: Setting Up
Chapter 2: Predicates
Compilation Schemas
Unary Predicate Families
Unary Predicates
The Adjectival Predicates
The Creation Predicates
Binary Predicate Families
Binary Predicates
The Equality Relation

View file

@ -1,7 +1,7 @@
'new unary even': ok
'<< NOT> >> is syntactically valid': false - too many close groups
'<< Exists x >> is syntactically valid': true
'<< ForAll x >> is syntactically valid': false - ends without domain of final quantifier
'<< ForAll x >> is syntactically valid': false - nonexistential quantifier without domain
'<< ForAll x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'<< Forall x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'set A to << Exists x >>': a set to << Exists x >>
@ -12,3 +12,6 @@
'A conjoin B is syntactically valid': true
'A concatenate B is well-formed': false - x used outside its binding
'A conjoin B is well-formed': true
'set P to << Forall x IN< kind = number (x) IN>: even (x) >>': p set to << ForAll x IN< kind=number(x) IN> : even(x) >>
'copy of P': << ForAll x IN< kind=number(x) IN> : even(x) >>
'negation of P': << NOT< ForAll x IN< kind=number(x) IN> : even(x) NOT> >>

View file

@ -1,7 +1,7 @@
'new unary even': ok
'<< NOT> >> is syntactically valid': false - too many close groups
'<< Exists x >> is syntactically valid': true
'<< ForAll x >> is syntactically valid': false - ends without domain of final quantifier
'<< ForAll x >> is syntactically valid': false - nonexistential quantifier without domain
'<< ForAll x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'set A to << Exists x >>': a set to << Exists x >>
'set B to << Exists x: even (x) >>': b set to << Exists x : even(x) >>

View file

@ -12,7 +12,7 @@
'<< Exists x: even (x) >> is syntactically valid': true
'<< NOT> >> is syntactically valid': false - too many close groups
'<< Exists x >> is syntactically valid': true
'<< ForAll x >> is syntactically valid': false - ends without domain of final quantifier
'<< ForAll x >> is syntactically valid': false - nonexistential quantifier without domain
'<< ForAll x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'<< NOT< ^ NOT> ^ NOT> ^ NOT< ^ even (x) >> is syntactically valid': false - too many close groups
'<< NOT< ^ NOT< ^ even (x) >> is syntactically valid': false - 2 group(s) open

View file

@ -1,7 +1,7 @@
'new unary even': ok
'<< NOT> >> is syntactically valid': false - too many close groups
'<< Exists x >> is syntactically valid': true
'<< ForAll x >> is syntactically valid': false - ends without domain of final quantifier
'<< ForAll x >> is syntactically valid': false - nonexistential quantifier without domain
'<< ForAll x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'<< Forall x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'set A to << Exists x >>': a set to << Exists x >>
@ -12,3 +12,6 @@
'A conjoin B is syntactically valid': true
'A concatenate B is well-formed': false - x used outside its binding
'A conjoin B is well-formed': true
'set P to << Forall x IN< kind = number (x) IN>: even (x) >>': p set to << ForAll x IN< kind=number(x) IN> : even(x) >>
'copy of P': << ForAll x IN< kind=number(x) IN> : even(x) >>
'negation of P': << NOT< ForAll x IN< kind=number(x) IN> : even(x) NOT> >>

View file

@ -1,7 +1,7 @@
'new unary even': ok
'<< NOT> >> is syntactically valid': false - too many close groups
'<< Exists x >> is syntactically valid': true
'<< ForAll x >> is syntactically valid': false - ends without domain of final quantifier
'<< ForAll x >> is syntactically valid': false - nonexistential quantifier without domain
'<< ForAll x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'set A to << Exists x >>': a set to << Exists x >>
'set B to << Exists x: even (x) >>': b set to << Exists x : even(x) >>

View file

@ -12,7 +12,7 @@
'<< Exists x: even (x) >> is syntactically valid': true
'<< NOT> >> is syntactically valid': false - too many close groups
'<< Exists x >> is syntactically valid': true
'<< ForAll x >> is syntactically valid': false - ends without domain of final quantifier
'<< ForAll x >> is syntactically valid': false - nonexistential quantifier without domain
'<< ForAll x IN< kind = number (x) IN>: even (x) >> is syntactically valid': true
'<< NOT< ^ NOT> ^ NOT> ^ NOT< ^ even (x) >> is syntactically valid': false - too many close groups
'<< NOT< ^ NOT< ^ even (x) >> is syntactically valid': false - 2 group(s) open