mirror of
https://github.com/ganelson/inform.git
synced 2024-07-01 06:24:58 +03:00
Removed HERE, NOWHERE and EVERYWHERE atoms
This commit is contained in:
parent
991b36e26f
commit
b41e60275f
|
@ -96,14 +96,14 @@ which use this module:
|
|||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="3-prp.html#SP7" class="function-link"><span class="function-syntax">Propositions::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="3-ap.html#SP19" class="function-link"><span class="function-syntax">Atoms::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *, </span><a href="3-ap.html#SP18" class="function-link"><span class="function-syntax">Atoms::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> *, </span><a href="3-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *, </span><a href="2-bp.html#SP31" class="function-link"><span class="function-syntax">BinaryPredicates::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *, </span><a href="2-up.html#SP3" class="function-link"><span class="function-syntax">UnaryPredicates::log</span></a><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CalculusModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'D'</span><span class="plain-syntax">, </span><a href="3-prp.html#SP7" class="function-link"><span class="function-syntax">Propositions::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'o'</span><span class="plain-syntax">, </span><a href="3-ap.html#SP19" class="function-link"><span class="function-syntax">Atoms::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'o'</span><span class="plain-syntax">, </span><a href="3-ap.html#SP18" class="function-link"><span class="function-syntax">Atoms::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'0'</span><span class="plain-syntax">, </span><a href="3-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'2'</span><span class="plain-syntax">, </span><a href="2-bp.html#SP31" class="function-link"><span class="function-syntax">BinaryPredicates::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'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>
|
||||
|
@ -111,6 +111,7 @@ which use this module:
|
|||
<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-enah.html#SP2" class="function-link"><span class="function-syntax">WherePredicates::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>
|
||||
|
|
|
@ -825,7 +825,7 @@ so the fact that it runs relatively slowly does not matter.
|
|||
<p class="commentary firstcommentary"><a id="SP33" class="paragraph-anchor"></a><b>§33. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_log_name</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_log_name</span></span>:<br/>Atomic Propositions - <a href="3-ap.html#SP19_3">§19.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BinaryPredicates::get_log_name</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">BinaryPredicates::get_log_name</span></span>:<br/>Atomic Propositions - <a href="3-ap.html#SP18_3">§18.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="element-syntax">debugging_log_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -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">§40</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-bpf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-bpf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -147,7 +147,7 @@ such as "if 19 is false", where the terms of the relation do not fit.
|
|||
<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 tc_problem_kit is private to this section.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure tc_problem_kit is accessed in 2/enah.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>This is for when a relation is asserted to be a true fact about the model
|
||||
world.
|
||||
</p>
|
||||
|
@ -250,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-tcp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-enah.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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/tap, 2/bpf.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure annotated_i6_schema is accessed in 2/tap, 2/enah, 2/bpf.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§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>
|
||||
|
||||
|
@ -162,7 +162,7 @@ error.
|
|||
</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::Schemas::modify</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Calculus::Schemas::modify</span></span>:<br/>Binary Predicates - <a href="2-bp.html#SP40_1">§40.1</a>, <a href="2-bp.html#SP40_2">§40.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fmt</span><span class="plain-syntax">, ...) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Calculus::Schemas::modify</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Calculus::Schemas::modify</span></span>:<br/>Everywhere, Nowhere and Here - <a href="2-enah.html#SP8">§8</a>, <a href="2-enah.html#SP9">§9</a><br/>Binary Predicates - <a href="2-bp.html#SP40_1">§40.1</a>, <a href="2-bp.html#SP40_2">§40.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fmt</span><span class="plain-syntax">, ...) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">va_list</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">; </span><span class="comment-syntax"> the variable argument list signified by the dots</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">prototype</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Streams::new_buffer</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPICAL_I6_SCHEMA_LENGTH</span><span class="plain-syntax">, </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">prototype_storage</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax">-></span><span class="element-syntax">no_quoted_inames</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-cm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
372
docs/calculus-module/2-enah.html
Normal file
372
docs/calculus-module/2-enah.html
Normal file
|
@ -0,0 +1,372 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Everywhere, Nowhere and Here</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 'Everywhere, Nowhere and Here' 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>Everywhere, Nowhere and Here</b></li></ul></div>
|
||||
<p class="purpose">To define the unary predicates for some anaphoric location adjectives.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-enah.html#SP2">§2. Start</a></li><li><a href="2-enah.html#SP3">§3. Initial stock</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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">everywhere_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">nowhere_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">here_up_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">everywhere_up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nowhere_up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">here_up</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>§2. Start. </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">WherePredicates::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">WherePredicates::start</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">§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">everywhere_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">everywhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP3" class="function-link"><span class="function-syntax">WherePredicates::stock_everywhere</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">everywhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP9" class="function-link"><span class="function-syntax">WherePredicates::log_everywhere</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nowhere_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">nowhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP3" class="function-link"><span class="function-syntax">WherePredicates::stock_nowhere</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">nowhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP9" class="function-link"><span class="function-syntax">WherePredicates::log_nowhere</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">here_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">here_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">STOCK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP3" class="function-link"><span class="function-syntax">WherePredicates::stock_here</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">here_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP9" class="function-link"><span class="function-syntax">WherePredicates::log_here</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">everywhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPECHECK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP3" class="function-link"><span class="function-syntax">WherePredicates::typecheck_everywhere</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">everywhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">ASSERT_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP5" class="function-link"><span class="function-syntax">WherePredicates::assert_everywhere</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">everywhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">SCHEMA_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP8" class="function-link"><span class="function-syntax">WherePredicates::schema_everywhere</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">nowhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPECHECK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP3" class="function-link"><span class="function-syntax">WherePredicates::typecheck_nowhere</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">nowhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">ASSERT_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP6" class="function-link"><span class="function-syntax">WherePredicates::assert_nowhere</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">nowhere_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">SCHEMA_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP8" class="function-link"><span class="function-syntax">WherePredicates::schema_nowhere</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">here_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPECHECK_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP4" class="function-link"><span class="function-syntax">WherePredicates::typecheck_here</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">here_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">ASSERT_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP7" class="function-link"><span class="function-syntax">WherePredicates::assert_here</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">here_up_family</span><span class="plain-syntax">, </span><span class="constant-syntax">SCHEMA_UPF_MTID</span><span class="plain-syntax">, </span><a href="2-enah.html#SP9" class="function-link"><span class="function-syntax">WherePredicates::schema_here</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§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">WherePredicates::stock_everywhere</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">WherePredicates::stock_everywhere</span></span>:<br/><a href="2-enah.html#SP2">§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="identifier-syntax">everywhere_up</span><span class="plain-syntax"> = </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::blank</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">everywhere_up_family</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">WherePredicates::stock_nowhere</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">WherePredicates::stock_nowhere</span></span>:<br/><a href="2-enah.html#SP2">§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="identifier-syntax">nowhere_up</span><span class="plain-syntax"> = </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::blank</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nowhere_up_family</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">WherePredicates::stock_here</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">WherePredicates::stock_here</span></span>:<br/><a href="2-enah.html#SP2">§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="identifier-syntax">here_up</span><span class="plain-syntax"> = </span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::blank</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">here_up_family</span><span class="plain-syntax">);</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">WherePredicates::everywhere_up</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">everywhere_up</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">WherePredicates::nowhere_up</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nowhere_up</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">WherePredicates::here_up</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">here_up</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="plain-syntax">#</span><span class="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">WherePredicates::typecheck_everywhere</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">WherePredicates::typecheck_everywhere</span></span>:<br/><a href="2-enah.html#SP2">§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">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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Checker::kind_of_term</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">-></span><span class="element-syntax">log_to_I6_text</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">"Term $0 is %u not an object\n"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::tcp_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_EverywhereMisapplied</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that a value - specifically, %4 - is everywhere. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"To Inform, everywhere means 'in every room', and only objects "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"can be everywhere - in fact not even all of those, as it's a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"privilege reserved for backdrops. (For instance, 'The sky is a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"backdrop. The sky is everywhere.' is allowed.)"</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ALWAYS_MATCH</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">WherePredicates::typecheck_nowhere</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">WherePredicates::typecheck_nowhere</span></span>:<br/><a href="2-enah.html#SP2">§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">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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Checker::kind_of_term</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">-></span><span class="element-syntax">log_to_I6_text</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">"Term $0 is %u not an object\n"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::tcp_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NowhereMisapplied</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that a value - specifically, %4 - is nowhere. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"To Inform, nowhere means 'in no room', and only things can be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"nowhere. (For instance, 'Godot is nowhere.' is allowed - it means "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Godot exists, but is not initially part of the drama.)"</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ALWAYS_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="SP4" class="paragraph-anchor"></a><b>§4. </b>It seems to be true that Inform never generates propositions which
|
||||
apply "here" incorrectly, but just in case:
|
||||
</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">WherePredicates::typecheck_here</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">WherePredicates::typecheck_here</span></span>:<br/><a href="2-enah.html#SP2">§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">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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Checker::kind_of_term</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">-></span><span class="element-syntax">log_to_I6_text</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">"Term $0 is %u not an object\n"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::tcp_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that a value - specifically, %4 - is here. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"To Inform, here means 'in the room we're talking about', so only "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"objects can be 'here'."</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ALWAYS_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="SP5" class="paragraph-anchor"></a><b>§5. </b>EVERYWHERE declares that something is found
|
||||
in every room. While we could simply deduce that the object must be a
|
||||
backdrop (and set the kind to make it so), this is such an extreme business,
|
||||
so rarely needed, that it seems better to make the user spell out that
|
||||
we're dealing with a backdrop. So we play dumb.
|
||||
</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">WherePredicates::assert_everywhere</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">WherePredicates::assert_everywhere</span></span>:<br/><a href="2-enah.html#SP2">§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">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">now_negated</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantAssertNegatedEverywhere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something isn't everywhere"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is too vague. You must say where it is."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Assert::subject_of_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::as_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Backdrops::infer_presence_everywhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>NOWHERE is similar:
|
||||
</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">WherePredicates::assert_nowhere</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">WherePredicates::assert_nowhere</span></span>:<br/><a href="2-enah.html#SP2">§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">prop</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Assert::subject_of_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::as_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something isn't nowhere"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is too vague. You must say where it is."</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">ox</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something generic is 'nowhere'"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which suggests it could some day have a physical location."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Spatial::infer_presence_nowhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>HERE means "this object is in the current room", which is not as easy to
|
||||
resolve as it looks, because at this point we don't know for certain what
|
||||
will be a room and what won't. So we record a special inference and put the
|
||||
problem aside for now.
|
||||
</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">WherePredicates::assert_here</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">WherePredicates::assert_here</span></span>:<br/><a href="2-enah.html#SP2">§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">prop</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Assert::subject_of_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::as_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">now_negated</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something isn't here"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is too vague. You must say where it is."</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">ox</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NonInstanceHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something generic is 'here'"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which would give it a physical location. (It would be like saying "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'A number is here' - well, numbers are everywhere and nowhere.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Spatial::infer_presence_here</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Note that <span class="extract"><span class="extract-syntax">FoundEverywhere</span></span> is a template routine existing
|
||||
to provide a common value of the I6 <span class="extract"><span class="extract-syntax">found_in</span></span> property — common that is
|
||||
to all backdrops which are currently everywhere.
|
||||
</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">WherePredicates::schema_everywhere</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">WherePredicates::schema_everywhere</span></span>:<br/><a href="2-enah.html#SP2">§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">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><a href="2-cs.html#SP4_1" class="function-link"><span class="function-syntax">Calculus::Schemas::modify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax">, </span><span class="string-syntax">"BackdropEverywhere(*1)"</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">NOW_ATOM_TRUE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cs.html#SP4_1" class="function-link"><span class="function-syntax">Calculus::Schemas::modify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax">, </span><span class="string-syntax">"MoveObject(*1, FoundEverywhere); MoveFloatingObjects();"</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">NOW_ATOM_FALSE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantChangeEverywhere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"not being 'everywhere' is not something which can be changed "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"during play using 'now'"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"because it's not exact enough about what needs to be done."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="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">WherePredicates::schema_nowhere</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">WherePredicates::schema_nowhere</span></span>:<br/><a href="2-enah.html#SP2">§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">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><a href="2-cs.html#SP4_1" class="function-link"><span class="function-syntax">Calculus::Schemas::modify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax">, </span><span class="string-syntax">"LocationOf(*1) == nothing"</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">NOW_ATOM_TRUE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cs.html#SP4_1" class="function-link"><span class="function-syntax">Calculus::Schemas::modify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax">, </span><span class="string-syntax">"RemoveFromPlay(*1);"</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">NOW_ATOM_FALSE_TASK:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cs.html#SP4_1" class="function-link"><span class="function-syntax">Calculus::Schemas::modify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax">, </span><span class="string-syntax">"MoveObject(*1, real_location, 1, false);"</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="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>In fact, at present "here" predicates are never included in propositions to
|
||||
be compiled, so this code is never used.
|
||||
</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">WherePredicates::schema_here</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">WherePredicates::schema_here</span></span>:<br/><a href="2-enah.html#SP2">§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">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><a href="2-cs.html#SP4_1" class="function-link"><span class="function-syntax">Calculus::Schemas::modify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax">, </span><span class="string-syntax">"LocationOf(*1) == location"</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">NOW_ATOM_TRUE_TASK:</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"being 'here' is not something which can be changed during play"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"so it cannot be brought about or cancelled out with 'now'."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">-></span><span class="element-syntax">schema</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">WherePredicates::log_everywhere</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">WherePredicates::log_everywhere</span></span>:<br/><a href="2-enah.html#SP2">§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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"everywhere"</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">WherePredicates::log_nowhere</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">WherePredicates::log_nowhere</span></span>:<br/><a href="2-enah.html#SP2">§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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"nowhere"</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">WherePredicates::log_here</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">WherePredicates::log_here</span></span>:<br/><a href="2-enah.html#SP2">§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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"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-tcp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -212,7 +212,7 @@ success flag.
|
|||
<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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-up.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -122,17 +122,17 @@ since (alone among binary predicates) it has no distinct reversal.
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Creation::is_a_var_up</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">is_a_var_up</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">is_a_var_up</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Creation::is_a_const_up</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">is_a_const_up</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">is_a_const_up</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Calculus::Creation::is_a_kind_up</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</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><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::blank</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">is_a_kind_up_family</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">up</span><span class="plain-syntax">-></span><span class="element-syntax">assert_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><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">up</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
|
@ -167,7 +167,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-tap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-tap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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-enah.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-bp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -82,7 +82,7 @@ also records its sense, i.e., positive or negative:
|
|||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§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::blank</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::blank</span></span>:<br/>The Creation Predicates - <a href="2-tcp.html#SP3">§3</a></span></button><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="function-syntax">UnaryPredicates::blank</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::blank</span></span>:<br/>The Creation Predicates - <a href="2-tcp.html#SP3">§3</a><br/>Everywhere, Nowhere and Here - <a href="2-enah.html#SP3">§3</a></span></button><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="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">-></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="plain-syntax"> </span><span class="identifier-syntax">au</span><span class="plain-syntax">-></span><span class="element-syntax">assert_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -97,7 +97,7 @@ also records its sense, i.e., positive or negative:
|
|||
<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>
|
||||
|
||||
<span class="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicates::new</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">UnaryPredicates::new</span></span>:<br/>Terms - <a href="3-trm.html#SP10">§10</a><br/>Atomic Propositions - <a href="3-ap.html#SP14">§14</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="reserved-syntax">unary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">UnaryPredicates::new</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">UnaryPredicates::new</span></span>:<br/>Terms - <a href="3-trm.html#SP10">§10</a><br/>Atomic Propositions - <a href="3-ap.html#SP13">§13</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><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::blank</span></a><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">-></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">-></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">-></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">-></span><span class="element-syntax">lcon</span><span class="plain-syntax">, </span><span class="identifier-syntax">POSITIVE_SENSE</span><span class="plain-syntax">);</span>
|
||||
|
@ -145,7 +145,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-upf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-upf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -81,7 +81,7 @@ the predicate's implementation.
|
|||
<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">§2</a><br/>The Creation Predicates - <a href="2-tcp.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">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">§2</a><br/>The Creation Predicates - <a href="2-tcp.html#SP2">§2</a><br/>Everywhere, Nowhere and Here - <a href="2-enah.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">-></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>
|
||||
|
@ -193,12 +193,12 @@ in Inform's run.
|
|||
<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#SP19_2">§19.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="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#SP18_2">§18.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">-></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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="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-enah.html">enah</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -86,7 +86,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Services</a></li><li><a href="index.html">calculus</a></li><li><a href="index.html#3">Chapter 3: Propositions</a></li><li><b>Atomic Propositions</b></li></ul></div>
|
||||
<p class="purpose">To build and modify atoms, the syntactic pieces from which propositions are built up.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-ap.html#SP1">§1. Elements and groups</a></li><li><a href="3-ap.html#SP5">§5. The STRUCTURAL group</a></li><li><a href="3-ap.html#SP9">§9. The PREDICATES group</a></li><li><a href="3-ap.html#SP18">§18. Validating atoms</a></li><li><a href="3-ap.html#SP19">§19. Writing to text</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-ap.html#SP1">§1. Elements and groups</a></li><li><a href="3-ap.html#SP5">§5. The STRUCTURAL group</a></li><li><a href="3-ap.html#SP17">§17. Validating atoms</a></li><li><a href="3-ap.html#SP18">§18. Writing to text</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Elements and groups. </b>Propositions are built up from "atoms": see <a href="P-wtmd.html" class="internal">What This Module Does</a> for
|
||||
more. Those atoms are themselves <a href="3-ap.html#SP1" class="internal">pcalc_prop</a> objects: what makes them
|
||||
|
@ -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 2/up, 2/tap, 2/tcp, 3/prp, 3/bas and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 2/up, 2/tap, 2/tcp, 2/enah, 3/prp, 3/bas and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§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>
|
||||
|
@ -120,9 +120,6 @@ of the <span class="extract"><span class="extract-syntax">*_ATOM</span></span> n
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">PREDICATES_GROUP</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">10</span><span class="plain-syntax"> </span><span class="comment-syntax"> a regular predicate, rather than these special cases —</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">KIND_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">11</span><span class="plain-syntax"> </span><span class="comment-syntax"> a unary predicate asserting that </span>\(x\)<span class="comment-syntax"> has kind </span>\(K\)
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">EVERYWHERE_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">15</span><span class="plain-syntax"> </span><span class="comment-syntax"> a unary predicate asserting omnipresence</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">NOWHERE_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">16</span><span class="plain-syntax"> </span><span class="comment-syntax"> a unary predicate asserting nonpresence</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">HERE_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">17</span><span class="plain-syntax"> </span><span class="comment-syntax"> a unary predicate asserting presence "here"</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">CALLED_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">18</span><span class="plain-syntax"> </span><span class="comment-syntax"> to keep track of "(called the intruder)"-style names</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">OPEN_OPERATORS_GROUP</span><span class="plain-syntax"> </span><span class="constant-syntax">30</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">NEGATION_OPEN_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span><span class="plain-syntax"> </span><span class="comment-syntax"> logical negation </span>\(\lnot\)<span class="comment-syntax"> applied to contents of group</span>
|
||||
|
@ -132,7 +129,7 @@ of the <span class="extract"><span class="extract-syntax">*_ATOM</span></span> n
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">DOMAIN_CLOSE_ATOM</span><span class="plain-syntax"> </span><span class="constant-syntax">31</span><span class="plain-syntax"> </span><span class="comment-syntax"> end of quantifier domain</span>
|
||||
</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">Atoms::group</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">Atoms::group</span></span>:<br/><a href="3-ap.html#SP18">§18</a><br/>Propositions - <a href="3-prp.html#SP2">§2</a>, <a href="3-prp.html#SP10">§10</a>, <a href="3-prp.html#SP31">§31</a><br/>Binding and Substitution - <a href="3-bas.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">element</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::group</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">Atoms::group</span></span>:<br/><a href="3-ap.html#SP17">§17</a><br/>Propositions - <a href="3-prp.html#SP2">§2</a>, <a href="3-prp.html#SP10">§10</a>, <a href="3-prp.html#SP31">§31</a><br/>Binding and Substitution - <a href="3-bas.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </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">element</span><span class="plain-syntax"> <= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">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">element</span><span class="plain-syntax"> < </span><span class="constant-syntax">QUANTIFIERS_GROUP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">QUANTIFIERS_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">element</span><span class="plain-syntax"> < </span><span class="constant-syntax">PREDICATES_GROUP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">PREDICATES_GROUP</span><span class="plain-syntax">;</span>
|
||||
|
@ -161,7 +158,7 @@ like this, or else returns the opposite number to any element code which does.
|
|||
</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::new</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">Atoms::new</span></span>:<br/><a href="3-ap.html#SP6">§6</a>, <a href="3-ap.html#SP9">§9</a>, <a href="3-ap.html#SP10">§10</a>, <a href="3-ap.html#SP11">§11</a>, <a href="3-ap.html#SP12">§12</a>, <a href="3-ap.html#SP14">§14</a>, <a href="3-ap.html#SP15">§15</a><br/>Propositions - <a href="3-prp.html#SP13">§13</a>, <a href="3-prp.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">element</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::new</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">Atoms::new</span></span>:<br/><a href="3-ap.html#SP6">§6</a>, <a href="3-ap.html#SP9">§9</a>, <a href="3-ap.html#SP10">§10</a>, <a href="3-ap.html#SP11">§11</a>, <a href="3-ap.html#SP13">§13</a>, <a href="3-ap.html#SP14">§14</a><br/>Propositions - <a href="3-prp.html#SP13">§13</a>, <a href="3-prp.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">element</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="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_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">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> = </span><span class="identifier-syntax">element</span><span class="plain-syntax">;</span>
|
||||
|
@ -265,30 +262,7 @@ quantifier is:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Quantifiers::is_now_assertable</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">quant</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. The PREDICATES group. </b>Next, unary predicates, beginning with the <span class="extract"><span class="extract-syntax">EVERYWHERE</span></span>, <span class="extract"><span class="extract-syntax">NOWHERE</span></span>, <span class="extract"><span class="extract-syntax">HERE</span></span>
|
||||
special cases.
|
||||
</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::EVERYWHERE_new</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="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">EVERYWHERE_ATOM</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">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">arity</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">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="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::NOWHERE_new</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="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">NOWHERE_ATOM</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">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">arity</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">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="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::HERE_new</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="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">HERE_ATOM</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">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">arity</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b><span class="extract"><span class="extract-syntax">CALLED</span></span> atoms are interesting because they exist only for their side-effects:
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b><span class="extract"><span class="extract-syntax">CALLED</span></span> atoms are interesting because they exist only for their side-effects:
|
||||
they have no effect at all on the logical status of a proposition (well, except
|
||||
that they should not be applied to free variables referred to nowhere else).
|
||||
They can therefore be added or removed freely. In the phrase
|
||||
|
@ -308,7 +282,7 @@ 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#SP19">§19</a><br/>Propositions - <a href="3-prp.html#SP24">§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="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#SP18">§18</a><br/>Propositions - <a href="3-prp.html#SP24">§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">-></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>
|
||||
|
@ -321,11 +295,11 @@ 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('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#SP19">§19</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#SP18">§18</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">-></span><span class="element-syntax">calling_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Now for a <span class="extract"><span class="extract-syntax">KIND</span></span> atom. At first sight, it looks odd that a unary
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Now for a <span class="extract"><span class="extract-syntax">KIND</span></span> atom. At first sight, it looks odd that a unary
|
||||
predicate for a kind is represented differently from other predicates.
|
||||
Isn't it a unary predicate just like any other? Well: it is, but has the
|
||||
special property that its truth does not change over time. If a value <span class="extract"><span class="extract-syntax">v</span></span>
|
||||
|
@ -350,7 +324,7 @@ ways.
|
|||
<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="SP12" class="paragraph-anchor"></a><b>§12. </b>Composited <span class="extract"><span class="extract-syntax">KIND</span></span> atoms are special in that they represent composites
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Composited <span class="extract"><span class="extract-syntax">KIND</span></span> atoms are special in that they represent composites
|
||||
of quantifiers with common nouns — for example, "everyone" is a composite
|
||||
meaning "every person".
|
||||
</p>
|
||||
|
@ -374,7 +348,7 @@ meaning "every person".
|
|||
<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">prop</span><span class="plain-syntax">-></span><span class="element-syntax">composited</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Unarticled kinds are those which were introduced without an article, in
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>Unarticled kinds are those which were introduced without an article, in
|
||||
the linguistic sense.
|
||||
</p>
|
||||
|
||||
|
@ -388,13 +362,13 @@ the linguistic sense.
|
|||
<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">prop</span><span class="plain-syntax">-></span><span class="element-syntax">unarticled</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>That just leaves the general sort of unary predicate. In principle we ought
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>That just leaves the general sort of unary predicate. In principle we ought
|
||||
to be able to create \(U(t)\) for any term \(t\), but in practice we only ever
|
||||
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::unary_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::unary_PREDICATE_new</span></span>:<br/>The Creation Predicates - <a href="2-tcp.html#SP3">§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">up</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::unary_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::unary_PREDICATE_new</span></span>:<br/>The Creation Predicates - <a href="2-tcp.html#SP3">§3</a><br/>Everywhere, Nowhere and Here - <a href="2-enah.html#SP3">§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">up</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_term</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">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">-></span><span class="identifier-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="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
||||
|
@ -403,22 +377,22 @@ need \(t=x\), that is, variable 0.
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::from_adjective</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">negated</span><span class="plain-syntax">, </span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::new</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><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">), </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" class="function-link"><span class="function-syntax">Atoms::unary_PREDICATE_new</span></a><span class="plain-syntax">(</span><a href="2-up.html#SP2" class="function-link"><span class="function-syntax">UnaryPredicates::new</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><span class="identifier-syntax">FALSE:TRUE</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::from_adjective_on_x</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">negated</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#SP14" 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">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" 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('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Atoms::to_adjectival_usage</span></span>:<br/>Propositions - <a href="3-prp.html#SP30">§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">-></span><span class="element-syntax">predicate</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>And binary predicates are pretty well the same:
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>And binary predicates are pretty well the same:
|
||||
</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('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Atoms::binary_PREDICATE_new</span></span>:<br/><a href="3-ap.html#SP16">§16</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('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Atoms::binary_PREDICATE_new</span></span>:<br/><a href="3-ap.html#SP15">§15</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">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
|
@ -434,32 +408,32 @@ 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">-></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('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Atoms::is_equality_predicate</span></span>:<br/><a href="3-ap.html#SP17">§17</a><br/>Propositions - <a href="3-prp.html#SP11">§11</a>, <a href="3-prp.html#SP26">§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#SP15" 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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Atoms::is_equality_predicate</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::is_equality_predicate</span></span>:<br/><a href="3-ap.html#SP16">§16</a><br/>Propositions - <a href="3-prp.html#SP11">§11</a>, <a href="3-prp.html#SP26">§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#SP14" 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>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Given \(C\), return the proposition <span class="extract"><span class="extract-syntax">(x == C)</span></span>:
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>Given \(C\), return the proposition <span class="extract"><span class="extract-syntax">(x == C)</span></span>:
|
||||
</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::prop_x_is_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="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::binary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::binary_PREDICATE_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</span><span class="plain-syntax">,</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><a href="3-trm.html#SP4" class="function-link"><span class="function-syntax">Terms::new_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>And conversely:
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>And conversely:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="function-syntax">Atoms::is_x_equals</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-ap.html#SP15" class="function-link"><span class="function-syntax">Atoms::is_equality_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</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">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-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::is_equality_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</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">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">prop</span><span class="plain-syntax">-></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="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">prop</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. Validating atoms. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. 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('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Atoms::validate</span></span>:<br/>Propositions - <a href="3-prp.html#SP10">§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>
|
||||
|
@ -483,18 +457,18 @@ 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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Writing to text. </b>Logging atomic propositions divides into cases:
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. Writing to text. </b>Logging atomic propositions divides into cases:
|
||||
</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('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Atoms::log</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">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#SP19" 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><a href="3-ap.html#SP18" 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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Atoms::write</span></span>:<br/>Propositions - <a href="3-prp.html#SP7">§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">"<null-atom>"</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#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Use a special notation for equality</span><span class="named-paragraph-number">19.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP10" 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#SP10" 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="named-paragraph-container code-font"><a href="3-ap.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Use a special notation for equality</span><span class="named-paragraph-number">18.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP9" 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#SP9" 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">-></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>
|
||||
|
@ -505,15 +479,15 @@ need \(t=x\), that is, variable 0.
|
|||
<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">-></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">-></span><span class="element-syntax">arity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP19_2" class="named-paragraph-link"><span class="named-paragraph">Log some suitable textual name for this unary predicate</span><span class="named-paragraph-number">19.2</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="constant-syntax">2</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP19_3" class="named-paragraph-link"><span class="named-paragraph">Log some suitable textual name for this binary predicate</span><span class="named-paragraph-number">19.3</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="constant-syntax">1</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP18_2" class="named-paragraph-link"><span class="named-paragraph">Log some suitable textual name for this unary predicate</span><span class="named-paragraph-number">18.2</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="constant-syntax">2</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP18_3" class="named-paragraph-link"><span class="named-paragraph">Log some suitable textual name for this binary predicate</span><span class="named-paragraph-number">18.3</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="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"?exotic-predicate-arity=%d?"</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">arity</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">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">QUANTIFIER_ATOM:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">quantifier</span><span class="plain-syntax"> *</span><span class="identifier-syntax">quant</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">quant</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Quantifiers::log</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">quant</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">quantification_parameter</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="named-paragraph-container code-font"><a href="3-ap.html#SP19_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">19.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">); </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP18_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">18.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">KIND_ATOM:</span>
|
||||
|
@ -522,9 +496,6 @@ need \(t=x\), that is, variable 0.
|
|||
<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">prop</span><span class="plain-syntax">-></span><span class="element-syntax">composited</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"_c"</span><span class="plain-syntax">);</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">prop</span><span class="plain-syntax">-></span><span class="element-syntax">unarticled</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"_u"</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">EVERYWHERE_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"everywhere"</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"nowhere"</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">HERE_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"here"</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">NEGATION_OPEN_ATOM:</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="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">NEGATION_CLOSE_ATOM:</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="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">DOMAIN_OPEN_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"IN<"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -533,12 +504,12 @@ need \(t=x\), that is, variable 0.
|
|||
<span 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="element-syntax">arity</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP19_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">19.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ap.html#SP18_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">18.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19_1" class="paragraph-anchor"></a><b>§19.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Use a special notation for equality</span><span class="named-paragraph-number">19.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP18_1" class="paragraph-anchor"></a><b>§18.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Use a special notation for equality</span><span class="named-paragraph-number">18.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -552,24 +523,24 @@ 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="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP19">§19</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19_2" class="paragraph-anchor"></a><b>§19.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log some suitable textual name for this unary predicate</span><span class="named-paragraph-number">19.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP18">§18</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18_2" class="paragraph-anchor"></a><b>§18.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log some suitable textual name for this unary predicate</span><span class="named-paragraph-number">18.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">-></span><span class="element-syntax">predicate</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#SP19">§19</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19_3" class="paragraph-anchor"></a><b>§19.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">19.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP18">§18</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18_3" class="paragraph-anchor"></a><b>§18.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">18.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"?bad-bp?"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><a href="2-bp.html#SP33" class="function-link"><span class="function-syntax">BinaryPredicates::get_log_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP19">§19</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19_4" class="paragraph-anchor"></a><b>§19.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log a comma-separated list of terms for this atomic proposition</span><span class="named-paragraph-number">19.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP18">§18</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18_4" class="paragraph-anchor"></a><b>§18.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Log a comma-separated list of terms for this atomic proposition</span><span class="named-paragraph-number">18.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -578,7 +549,7 @@ need \(t=x\), that is, variable 0.
|
|||
<span class="plain-syntax"> </span><a href="3-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::write</span></a><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">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">]));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP19">§19</a> (twice).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ap.html#SP18">§18</a> (twice).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-trm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-cs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-trm.html">trm</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-bas.html">bas</a></li><li class="progressnext"><a href="3-prp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -242,7 +242,7 @@ logged as just <span class="extract"><span class="extract-syntax"><< >&
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bridge</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP3" class="function-link"><span class="function-syntax">Propositions::debugging_log_text_between</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p_prev</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">bridge</span><span class="plain-syntax">[0]) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s "</span><span class="plain-syntax">, </span><span class="identifier-syntax">bridge</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">log_addresses</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%08x="</span><span class="plain-syntax">, (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ap.html#SP19" class="function-link"><span class="function-syntax">Atoms::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ap.html#SP18" class="function-link"><span class="function-syntax">Atoms::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">">>"</span><span class="plain-syntax">);</span>
|
||||
|
@ -301,7 +301,7 @@ could <span class="extract"><span class="extract-syntax">EVERYWHERE(x)</span></s
|
|||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The following tests only (ii), validity. <a href="../calculus-test/index.html" class="internal">calculus-test</a> is unable to make
|
||||
atoms which fail to pass <a href="3-ap.html#SP18" class="internal">Atoms::validate</a>, nor can it make some of the
|
||||
atoms which fail to pass <a href="3-ap.html#SP17" class="internal">Atoms::validate</a>, nor can it make some of the
|
||||
misconstructions tested for below, but numerous other defects can be tested:
|
||||
</p>
|
||||
|
||||
|
@ -334,7 +334,7 @@ misconstructions tested for below, but numerous other defects can be tested:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">groups_stack</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_PROPOSITION_GROUP_NESTING</span><span class="plain-syntax">], </span><span class="identifier-syntax">group_sp</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_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="comment-syntax"> (1) each individual atom has to be properly built:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v_err</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP18" class="function-link"><span class="function-syntax">Atoms::validate</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">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v_err</span><span class="plain-syntax"> = </span><a href="3-ap.html#SP17" class="function-link"><span class="function-syntax">Atoms::validate</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">v_err</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"atom error: %s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">err</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="comment-syntax"> (2) every open bracket must be matched by a close bracket of the same kind:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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">p</span><span class="plain-syntax">-></span><span class="element-syntax">element</span><span class="plain-syntax">) == </span><span class="constant-syntax">OPEN_OPERATORS_GROUP</span><span class="plain-syntax">) {</span>
|
||||
|
@ -401,7 +401,7 @@ value to <span class="extract"><span class="extract-syntax">x</span></span>. Exa
|
|||
<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="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">DOMAIN_OPEN_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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">DOMAIN_CLOSE_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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP15" class="function-link"><span class="function-syntax">Atoms::is_equality_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::is_equality_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (!(((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></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="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">constant</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</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="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">constant</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>
|
||||
|
@ -626,19 +626,19 @@ detect subsequences within a proposition: say, the sequence
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> QUANTIFIER --> PREDICATE --> anything --> CALLED</span>
|
||||
<span class="plain-syntax"> QUANTIFIER --> PREDICATE --> anything --> PREDICATE</span>
|
||||
</pre>
|
||||
<p class="commentary">starting at the current position, which could be tested with:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> Propositions::match(p, 4, QUANTIFIER_ATOM, NULL, PREDICATE_ATOM, NULL,</span>
|
||||
<span class="plain-syntax"> ANY_ATOM_HERE, NULL, CALLED_ATOM, &cp);</span>
|
||||
<span class="plain-syntax"> ANY_ATOM_HERE, NULL, PREDICATE_ATOM, &pp);</span>
|
||||
</pre>
|
||||
<p class="commentary">As can be seen, each atom is tested with an element number and an optional
|
||||
pointer; when a successful match is made, the optional pointer is set to
|
||||
the atom making the match. (So if the routine returns <span class="extract"><span class="extract-syntax">TRUE</span></span> then we can
|
||||
be certain that <span class="extract"><span class="extract-syntax">cp</span></span> points to the <span class="extract"><span class="extract-syntax">CALLED_ATOM</span></span> at the end of the run of
|
||||
be certain that <span class="extract"><span class="extract-syntax">pp</span></span> points to the <span class="extract"><span class="extract-syntax">PREDICATE_ATOM</span></span> at the end of the run of
|
||||
four.) There are two special pseudo-element-numbers:
|
||||
</p>
|
||||
|
||||
|
@ -720,7 +720,7 @@ a given arity, or both:
|
|||
|
||||
<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">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">-></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#SP10" 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">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP9" 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>
|
||||
|
@ -764,7 +764,7 @@ expense of typechecking the proposition:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOMAIN_CLOSE_ATOM:</span><span class="plain-syntax"> </span><span class="identifier-syntax">bl</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="reserved-syntax">if</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">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP15" class="function-link"><span class="function-syntax">Atoms::is_equality_predicate</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">if</span><span class="plain-syntax"> (</span><a href="3-ap.html#SP14" class="function-link"><span class="function-syntax">Atoms::is_equality_predicate</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></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="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-syntax">constant</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</span><span class="element-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">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[1].</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="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0].</span><span class="element-syntax">constant</span><span class="plain-syntax">))</span>
|
||||
|
@ -853,7 +853,7 @@ following are useful for looping through them:
|
|||
<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#SP14" 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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" 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>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<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>
|
||||
|
@ -861,7 +861,7 @@ following are useful for looping through them:
|
|||
<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">)-></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#SP14" 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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ap.html#SP13" 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>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. Bracketed groups. </b>The following routine tests whether the entire proposition is a single
|
||||
|
|
|
@ -165,14 +165,14 @@ field is
|
|||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Creating new terms. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::new_variable</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">Terms::new_variable</span></span>:<br/><a href="3-trm.html#SP9">§9</a><br/>Atomic Propositions - <a href="3-ap.html#SP6">§6</a>, <a href="3-ap.html#SP14">§14</a>, <a href="3-ap.html#SP16">§16</a><br/>Propositions - <a href="3-prp.html#SP28">§28</a>, <a href="3-prp.html#SP29">§29</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::new_variable</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">Terms::new_variable</span></span>:<br/><a href="3-trm.html#SP9">§9</a><br/>Atomic Propositions - <a href="3-ap.html#SP6">§6</a>, <a href="3-ap.html#SP13">§13</a>, <a href="3-ap.html#SP15">§15</a><br/>Propositions - <a href="3-prp.html#SP28">§28</a>, <a href="3-prp.html#SP29">§29</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">) {</span>
|
||||
<span class="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="named-paragraph-container code-font"><a href="3-trm.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Make new blank term structure pt</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">v</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">v</span><span class="plain-syntax"> >= </span><span class="constant-syntax">26</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad variable term created"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">variable</span><span class="plain-syntax"> = </span><span class="identifier-syntax">v</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="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::new_constant</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">Terms::new_constant</span></span>:<br/><a href="3-trm.html#SP9">§9</a><br/>Compilation Schemas - <a href="2-cs.html#SP6">§6</a>, <a href="2-cs.html#SP8">§8</a><br/>Atomic Propositions - <a href="3-ap.html#SP16">§16</a><br/>Propositions - <a href="3-prp.html#SP29">§29</a><br/>Binding and Substitution - <a href="3-bas.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::new_constant</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">Terms::new_constant</span></span>:<br/><a href="3-trm.html#SP9">§9</a><br/>Compilation Schemas - <a href="2-cs.html#SP6">§6</a>, <a href="2-cs.html#SP8">§8</a><br/>Atomic Propositions - <a href="3-ap.html#SP15">§15</a><br/>Propositions - <a href="3-prp.html#SP29">§29</a><br/>Binding and Substitution - <a href="3-bas.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="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="named-paragraph-container code-font"><a href="3-trm.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Make new blank term structure pt</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">.</span><span class="element-syntax">constant</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt</span><span class="plain-syntax">;</span>
|
||||
|
@ -357,7 +357,7 @@ concisely and without fuss.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::log</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">Terms::log</span></span>:<br/>Calculus Module - <a href="1-cm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pcalc_term</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pt</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-trm.html#SP12" class="function-link"><span class="function-syntax">Terms::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::write</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">Terms::write</span></span>:<br/>Compilation Schemas - <a href="2-cs.html#SP10">§10</a><br/>Atomic Propositions - <a href="3-ap.html#SP19_1">§19.1</a>, <a href="3-ap.html#SP19_4">§19.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Terms::write</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">Terms::write</span></span>:<br/>Compilation Schemas - <a href="2-cs.html#SP10">§10</a><br/>Atomic Propositions - <a href="3-ap.html#SP18_1">§18.1</a>, <a href="3-ap.html#SP18_4">§18.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</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="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">NULL</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">"<null-term>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pt</span><span class="plain-syntax">-></span><span class="element-syntax">constant</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -291,16 +291,8 @@ calls.
|
|||
<a href="3-trm.html#SP4" class="internal">Terms::new_variable</a> and <a href="3-trm.html#SP4" class="internal">Terms::new_function</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">2. Unary predicate atoms are made using:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="3-ap.html#SP14" class="internal">Atoms::from_adjective</a>, or
|
||||
</li><li>● <a href="3-ap.html#SP11" class="internal">Atoms::KIND_new</a>, or
|
||||
</li><li>● <a href="3-ap.html#SP10" class="internal">Atoms::CALLED_new</a>, or
|
||||
</li><li>● <a href="3-ap.html#SP4" class="internal">Atoms::new</a> for the oddball unaries,
|
||||
<span class="extract"><span class="extract-syntax">EVERYWHERE_ATOM</span></span>, <span class="extract"><span class="extract-syntax">NOWHERE_ATOM</span></span> and <span class="extract"><span class="extract-syntax">HERE_ATOM</span></span>.
|
||||
</li></ul>
|
||||
<p class="commentary">Binary predicate atoms are made using <a href="3-ap.html#SP15" class="internal">Atoms::binary_PREDICATE_new</a>.
|
||||
<p class="commentary">2. Unary predicate atoms are made using <a href="3-ap.html#SP14" class="internal">Atoms::binary_PREDICATE_new</a>.
|
||||
Binary predicate atoms are made using <a href="3-ap.html#SP14" class="internal">Atoms::binary_PREDICATE_new</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">3. Propositions are then built up from atoms or other propositions<sup id="fnref:8"><a href="#fn:8" rel="footnote">8</a></sup> by calling:
|
||||
|
|
|
@ -118,6 +118,11 @@
|
|||
<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-enah.html">
|
||||
<spon class="sectiontitle">Everywhere, Nowhere and Here</span></a> -
|
||||
<span class="sectionpurpose">To define the unary predicates for some anaphoric location adjectives.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-bpf.html">
|
||||
<spon class="sectiontitle">Binary Predicate Families</span></a> -
|
||||
|
|
|
@ -219,9 +219,9 @@ sentence. In effect, this is a read-evaluate-print loop.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><relation-name></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Atoms::binary_PREDICATE_new(RP[1], *((pcalc_term *) RP[2]), *((pcalc_term *) RP[3])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">kind</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><k-kind></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Atoms::KIND_new(RP[1], *((pcalc_term *) RP[2])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">called</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">=</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Atoms::CALLED_new(WR[1], *((pcalc_term *) RP[1]), NULL) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">everywhere</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Atoms::EVERYWHERE_new(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">nowhere</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Atoms::NOWHERE_new(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Atoms::HERE_new(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">everywhere</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, WherePredicates::everywhere_up(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">nowhere</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, WherePredicates::nowhere_up(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">here</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, WherePredicates::here_up(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is-a-kind</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Calculus::Creation::is_a_kind_up(*((pcalc_term *) RP[1]), NULL) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is-a-var</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Calculus::Creation::is_a_var_up(*((pcalc_term *) RP[1])) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is-a-const</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">(</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><term></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">)</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Calculus::Creation::is_a_const_up(*((pcalc_term *) RP[1])) }</span>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1318,7 +1318,7 @@ have no other consequence.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_notall_quantifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">q_atom</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::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEGATION_CLOSE_ATOM</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::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::EVERYWHERE_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">WherePredicates::everywhere_up</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Atoms::is_notall_quantifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">q_atom</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::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEGATION_OPEN_ATOM</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PROPOSITION_EDITED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
||||
|
@ -1347,7 +1347,7 @@ have no other consequence.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::delete_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove </span><span class="extract"><span class="extract-syntax">DOMAIN_CLOSE_ATOM</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::delete_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove </span><span class="extract"><span class="extract-syntax">PREDICATE_ATOM</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::NOWHERE_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">WherePredicates::nowhere_up</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">PROPOSITION_EDITED</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -1390,9 +1390,9 @@ have no other consequence.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEGATION_CLOSE_ATOM</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">new_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_nonexistence_quantifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">q_atom</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_atom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::NOWHERE_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">new_atom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WherePredicates::nowhere_up</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_atom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::EVERYWHERE_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">new_atom</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WherePredicates::everywhere_up</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_atom</span><span class="plain-syntax">-></span><span class="element-syntax">terms</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">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_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_notall_quantifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">q_atom</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::insert_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl_prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">Atoms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEGATION_OPEN_ATOM</span><span class="plain-syntax">));</span>
|
||||
|
|
|
@ -170,15 +170,15 @@ their existence.
|
|||
|
||||
<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::to_put_everywhere</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::EVERYWHERE_new</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">WherePredicates::everywhere_up</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="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_put_nowhere</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::NOWHERE_new</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">WherePredicates::nowhere_up</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="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_put_here</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::Abstract::to_put_here</span></span>:<br/>Relation Knowledge - <a href="5-rk.html#SP1_2">§1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Atoms::HERE_new</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">WherePredicates::here_up</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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Property setting. </b>Sometimes the A-parser wants to assert that a given property has the value
|
||||
|
|
|
@ -159,15 +159,9 @@ 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_7" class="named-paragraph-link"><span class="named-paragraph">A binary predicate is required to apply to terms of the right kinds</span><span class="named-paragraph-number">4.7</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">pl</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="identifier-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="named-paragraph-container code-font"><a href="11-tcp.html#SP4_6" class="named-paragraph-link"><span class="named-paragraph">A unary predicate is required to have an interpretation matching the kind of its term</span><span class="named-paragraph-number">4.6</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">pl</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">EVERYWHERE_ATOM</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_8" class="named-paragraph-link"><span class="named-paragraph">An EVERYWHERE atom needs its term to be an object</span><span class="named-paragraph-number">4.8</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">pl</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOWHERE_ATOM</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_9" class="named-paragraph-link"><span class="named-paragraph">A NOWHERE atom needs its term to be an object</span><span class="named-paragraph-number">4.9</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">pl</span><span class="plain-syntax">-></span><span class="identifier-syntax">element</span><span class="plain-syntax"> == </span><span class="identifier-syntax">HERE_ATOM</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_10" class="named-paragraph-link"><span class="named-paragraph">A HERE atom needs its term to be an object</span><span class="named-paragraph-number">4.10</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">log_to_I6_text</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_11" class="named-paragraph-link"><span class="named-paragraph">Show the variable assignment in the debugging log</span><span class="named-paragraph-number">4.11</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">tck</span><span class="plain-syntax">-></span><span class="identifier-syntax">log_to_I6_text</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="11-tcp.html#SP4_8" class="named-paragraph-link"><span class="named-paragraph">Show the variable assignment in the debugging log</span><span class="named-paragraph-number">4.8</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">ALWAYS_MATCH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -421,70 +415,12 @@ would work instead. If it would, we make the change within the proposition.
|
|||
<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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="11-tcp.html#SP4_7">§4.7</a> (three times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_8" class="paragraph-anchor"></a><b>§4.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">An EVERYWHERE atom needs its term to be an object</span><span class="named-paragraph-number">4.8</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actually_find</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">(&(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), &</span><span class="identifier-syntax">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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">-></span><span class="identifier-syntax">log_to_I6_text</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">"Term $0 is %u not an object\n"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_EverywhereMisapplied</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that a value - specifically, %4 - is everywhere. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"To Inform, everywhere means 'in every room', and only objects "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"can be everywhere - in fact not even all of those, as it's a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"privilege reserved for backdrops. (For instance, 'The sky is a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"backdrop. The sky is everywhere.' is allowed.)"</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="11-tcp.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_9" class="paragraph-anchor"></a><b>§4.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">A NOWHERE atom needs its term to be an object</span><span class="named-paragraph-number">4.9</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actually_find</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">(&(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), &</span><span class="identifier-syntax">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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">-></span><span class="identifier-syntax">log_to_I6_text</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">"Term $0 is %u not an object\n"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NowhereMisapplied</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that a value - specifically, %4 - is nowhere. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"To Inform, nowhere means 'in no room', and only things can be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"nowhere. (For instance, 'Godot is nowhere.' is allowed - it means "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Godot exists, but is not initially part of the drama.)"</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="11-tcp.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_10" class="paragraph-anchor"></a><b>§4.10. </b>It seems to be true that the A-parser never generates propositions which
|
||||
apply <span class="extract"><span class="extract-syntax">HERE</span></span> incorrectly, but just in case:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">A HERE atom needs its term to be an object</span><span class="named-paragraph-number">4.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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actually_find</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">(&(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), &</span><span class="identifier-syntax">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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">-></span><span class="identifier-syntax">log_to_I6_text</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">"Term $0 is %u not an object\n"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]), </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">actually_find</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that a value - specifically, %4 - is here. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"To Inform, here means 'in the room we're talking about', so only "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"objects can be 'here'."</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="11-tcp.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_11" class="paragraph-anchor"></a><b>§4.11. </b>Not so much for the debugging log as for the internal test, in fact, which
|
||||
<p class="commentary firstcommentary"><a id="SP4_8" class="paragraph-anchor"></a><b>§4.8. </b>Not so much for the debugging log as for the internal test, in fact, which
|
||||
prints the log to an I6 string. This is the type-checking report in the case
|
||||
of success.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the variable assignment in the debugging log</span><span class="named-paragraph-number">4.11</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the variable assignment in the debugging log</span><span class="named-paragraph-number">4.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -506,7 +442,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">§4</a>, <a href="11-tcp.html#SP4_5">§4.5</a>, <a href="11-tcp.html#SP4_8">§4.8</a>, <a href="11-tcp.html#SP4_9">§4.9</a>, <a href="11-tcp.html#SP4_10">§4.10</a>, <a href="11-tcp.html#SP6">§6</a>, <a href="11-tcp.html#SP8">§8</a>, <a href="11-tcp.html#SP9">§9</a>, <a href="11-tcp.html#SP9_2">§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="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">§4</a>, <a href="11-tcp.html#SP4_5">§4.5</a>, <a href="11-tcp.html#SP6">§6</a>, <a href="11-tcp.html#SP8">§8</a>, <a href="11-tcp.html#SP9">§9</a>, <a href="11-tcp.html#SP9_2">§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">-></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>
|
||||
|
|
|
@ -81,7 +81,7 @@ function togglePopup(material_id) {
|
|||
<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#12">Chapter 12: Use of Propositions</a></li><li><b>Assert Propositions</b></li></ul></div>
|
||||
<p class="purpose">To declare that a given proposition is a true statement about the state of the world when play begins.</p>
|
||||
|
||||
<ul class="toc"><li><a href="12-ap.html#SP4">§4. Entrance</a></li><li><a href="12-ap.html#SP8">§8. Main procedure</a></li><li><a href="12-ap.html#SP8_5">§8.5. Creations</a></li><li><a href="12-ap.html#SP8_6">§8.6. Asserting kinds</a></li><li><a href="12-ap.html#SP8_7">§8.7. Asserting HERE, NOWHERE and EVERYWHERE</a></li><li><a href="12-ap.html#SP8_10">§8.10. Asserting predicates</a></li><li><a href="12-ap.html#SP10">§10. Evaluating terms</a></li><li><a href="12-ap.html#SP12">§12. Testing at compile-time</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="12-ap.html#SP4">§4. Entrance</a></li><li><a href="12-ap.html#SP8">§8. Main procedure</a></li><li><a href="12-ap.html#SP8_5">§8.5. Creations</a></li><li><a href="12-ap.html#SP8_6">§8.6. Asserting kinds</a></li><li><a href="12-ap.html#SP8_7">§8.7. Asserting predicates</a></li><li><a href="12-ap.html#SP10">§10. Evaluating terms</a></li><li><a href="12-ap.html#SP12">§12. Testing at compile-time</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Inside Inform, the term "the model" means the collection of the following:
|
||||
</p>
|
||||
|
@ -303,13 +303,10 @@ 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">KIND_ATOM:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_6" class="named-paragraph-link"><span class="named-paragraph">Assert the truth or falsity of a KIND atom</span><span class="named-paragraph-number">8.6</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">PREDICATE_ATOM:</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">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_10" class="named-paragraph-link"><span class="named-paragraph">Assert the truth or falsity of a unary predicate</span><span class="named-paragraph-number">8.10</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="constant-syntax">2</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_11" class="named-paragraph-link"><span class="named-paragraph">Assert the truth or falsity of a binary predicate</span><span class="named-paragraph-number">8.11</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="constant-syntax">1</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 a unary predicate</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="constant-syntax">2</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 binary predicate</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="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">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="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -539,87 +536,7 @@ through here, but it isn't exactly an everyday sentence.
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_7" class="paragraph-anchor"></a><b>§8.7. Asserting HERE, NOWHERE and EVERYWHERE. </b>Three special cases. The first, EVERYWHERE, declares that something is found
|
||||
in every room. While we could simply deduce that the object must be a
|
||||
backdrop (and set the kind to make it so), this is such an extreme business,
|
||||
so rarely needed, that it seems better to make the user spell out that
|
||||
we're dealing with a backdrop. So we play dumb.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of an EVERYWHERE atom</span><span class="named-paragraph-number">8.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">now_negated</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_CantAssertNegatedEverywhere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something isn't everywhere"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is too vague. You must say where it is."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><a href="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">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</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">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Backdrops::infer_presence_everywhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<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">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_8" class="paragraph-anchor"></a><b>§8.8. </b>NOWHERE is similar:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of a NOWHERE atom</span><span class="named-paragraph-number">8.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</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">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</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">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">now_negated</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">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something isn't nowhere"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is too vague. You must say where it is."</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">ox</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::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">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something generic is 'nowhere'"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which suggests it could some day have a physical location."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Spatial::infer_presence_nowhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<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">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_9" class="paragraph-anchor"></a><b>§8.9. </b>HERE means "this object is in the current room", which is not as easy to
|
||||
resolve as it looks, because at this point we don't know for certain what
|
||||
will be a room and what won't. So we record a special inference and put the
|
||||
problem aside for now.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of a HERE atom</span><span class="named-paragraph-number">8.9</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</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">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</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">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">now_negated</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">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something isn't here"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is too vague. You must say where it is."</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">ox</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::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_NonInstanceHere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that seems to say that something generic is 'here'"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which would give it a physical location. (It would be like saying "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'A number is here' - well, numbers are everywhere and nowhere.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Spatial::infer_presence_here</span><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<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">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_10" class="paragraph-anchor"></a><b>§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 class="commentary firstcommentary"><a id="SP8_7" class="paragraph-anchor"></a><b>§8.7. 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.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -627,7 +544,7 @@ problem aside for now.
|
|||
<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">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_11" class="paragraph-anchor"></a><b>§8.11. </b>Binary predicates, unlike unary ones, can only be asserted positively. This
|
||||
<p class="commentary firstcommentary"><a id="SP8_8" class="paragraph-anchor"></a><b>§8.8. </b>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)\)
|
||||
gives no information about what \(z\) might exist, if any, such that \(Q(x, z)\).
|
||||
For instance, knowing that X is not part of Y gives us no help in determining
|
||||
|
@ -645,7 +562,7 @@ also assert propositions generated from tree conversion, which don't have
|
|||
these kind atoms.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of a binary predicate</span><span class="named-paragraph-number">8.11</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the truth or falsity of a binary predicate</span><span class="named-paragraph-number">8.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -659,7 +576,7 @@ these kind atoms.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_term</span><span class="plain-syntax"> </span><span class="identifier-syntax">pt0</span><span class="plain-syntax">, </span><span class="identifier-syntax">pt1</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_11_2" class="named-paragraph-link"><span class="named-paragraph">Determine the BP and terms to be asserted</span><span class="named-paragraph-number">8.11.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_8_2" class="named-paragraph-link"><span class="named-paragraph">Determine the BP and terms to be asserted</span><span class="named-paragraph-number">8.8.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> = </span><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">pt0</span><span class="plain-syntax">), *</span><span class="identifier-syntax">spec1</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">pt1</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">subj0</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">pt0</span><span class="plain-syntax">), *</span><span class="identifier-syntax">subj1</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">pt1</span><span class="plain-syntax">);</span>
|
||||
|
@ -678,10 +595,10 @@ these kind atoms.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BinaryPredicateFamilies::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj0</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj1</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</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="12-ap.html#SP8_11_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for failure to assert</span><span class="named-paragraph-number">8.11.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ap.html#SP8_8_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for failure to assert</span><span class="named-paragraph-number">8.8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_11_1" class="paragraph-anchor"></a><b>§8.11.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for failure to assert</span><span class="named-paragraph-number">8.11.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP8_8_1" class="paragraph-anchor"></a><b>§8.8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for failure to assert</span><span class="named-paragraph-number">8.8.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -703,8 +620,8 @@ these kind atoms.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"sentence is too complicatedly phrased, and could be broken up "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"into two or more sentences?"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8_11">§8.11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_11_2" class="paragraph-anchor"></a><b>§8.11.2. </b>The "is" predicate is not usually assertable, but \(is(x, f_R(y))\)
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8_8">§8.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_8_2" class="paragraph-anchor"></a><b>§8.8.2. </b>The "is" predicate is not usually assertable, but \(is(x, f_R(y))\)
|
||||
can be asserted since it is equivalent to \(R(x, y)\) — this is where we
|
||||
unravel that. We reject compound uses of functions in this way, but in
|
||||
practice they hardly ever arise, and could only do so with quite complex
|
||||
|
@ -712,7 +629,7 @@ sentences where it seems reasonable to tell the user to write something
|
|||
simpler and clearer.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Determine the BP and terms to be asserted</span><span class="named-paragraph-number">8.11.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Determine the BP and terms to be asserted</span><span class="named-paragraph-number">8.8.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -735,7 +652,7 @@ simpler and clearer.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8_11">§8.11</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ap.html#SP8_8">§8.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>As we've already seen, we have to be cautious about the mechanism to draw
|
||||
inferences about kinds based on the relationships which objects have. Some
|
||||
cases are easy: if A is worn by B, then B is a person. But "in" can be
|
||||
|
@ -754,7 +671,7 @@ need to risk setting the kind here at this stage.
|
|||
</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">Propositions::Assert::cautiously_set_kind</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Propositions::Assert::cautiously_set_kind</span></span>:<br/><a href="12-ap.html#SP8_11">§8.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">inst</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">Propositions::Assert::cautiously_set_kind</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Propositions::Assert::cautiously_set_kind</span></span>:<br/><a href="12-ap.html#SP8_8">§8.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inst</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">inst</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">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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
@ -779,7 +696,7 @@ slate — 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_11">§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_8">§8.8</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"> >= </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>
|
||||
|
@ -801,7 +718,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">§8.6</a>, <a href="12-ap.html#SP8_7">§8.7</a>, <a href="12-ap.html#SP8_8">§8.8</a>, <a href="12-ap.html#SP8_9">§8.9</a>, <a href="12-ap.html#SP8_11">§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">§8.6</a>, <a href="12-ap.html#SP8_8">§8.8</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"> >= </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>
|
||||
|
||||
|
|
|
@ -214,13 +214,10 @@ so we terminate with that if making true or false.
|
|||
<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">-></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>
|
||||
<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-ca.html#SP4_5" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a HERE atom</span><span class="named-paragraph-number">4.5</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">PREDICATE_ATOM:</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">-></span><span class="identifier-syntax">arity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_6" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a unary predicate</span><span class="named-paragraph-number">4.6</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="constant-syntax">2</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_7" class="named-paragraph-link"><span class="named-paragraph">Make an annotated schema for a binary predicate</span><span class="named-paragraph-number">4.7</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="constant-syntax">1</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 a unary predicate</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="constant-syntax">2</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 binary predicate</span><span class="named-paragraph-number">4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
|
@ -304,77 +301,11 @@ the I6 <span class="extract"><span class="extract-syntax">ofclass</span></span>
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_3" class="paragraph-anchor"></a><b>§4.3. </b>An easy case. Note that <span class="extract"><span class="extract-syntax">FoundEverywhere</span></span> is a template routine existing
|
||||
to provide a common value of the I6 <span class="extract"><span class="extract-syntax">found_in</span></span> property — common that is
|
||||
to all backdrops which are currently everywhere.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for an EVERYWHERE atom</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"BackdropEverywhere(*1)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">asch</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">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"MoveObject(*1, FoundEverywhere); MoveFloatingObjects();"</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>
|
||||
<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">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_CantChangeEverywhere</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"not being 'everywhere' is not something which can be changed "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"during play using 'now'"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"because it's not exact enough about what needs to be done."</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><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">asch</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4" class="paragraph-anchor"></a><b>§4.4. </b>And another.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for a NOWHERE atom</span><span class="named-paragraph-number">4.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="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">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"LocationOf(*1) == nothing"</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>
|
||||
<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">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"RemoveFromPlay(*1);"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">asch</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">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"MoveObject(*1, real_location, 1, 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">asch</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_5" class="paragraph-anchor"></a><b>§4.5. </b>And another. (In fact, at present <span class="extract"><span class="extract-syntax">HERE</span></span> atoms are never included in
|
||||
propositions to be compiled, so this code is never used.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for a HERE atom</span><span class="named-paragraph-number">4.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="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">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"LocationOf(*1) == location"</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>
|
||||
<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="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">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">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"being 'here' is not something which can be changed during play"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"so it cannot be brought about or cancelled out with 'now'."</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><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">asch</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_6" class="paragraph-anchor"></a><b>§4.6. </b>The last unary atom is an adjective, for which we hand over to the general
|
||||
<p class="commentary firstcommentary"><a id="SP4_3" class="paragraph-anchor"></a><b>§4.3. </b>The last unary atom is an adjective, for which we hand over to the general
|
||||
adjective apparatus.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for a unary predicate</span><span class="named-paragraph-number">4.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for a unary predicate</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -386,27 +317,27 @@ adjective apparatus.
|
|||
<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">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_7" class="paragraph-anchor"></a><b>§4.7. </b>Delegation is similarly the art of compiling a BP:
|
||||
<p class="commentary firstcommentary"><a id="SP4_4" class="paragraph-anchor"></a><b>§4.4. </b>Delegation is similarly the art of compiling a BP:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for a binary predicate</span><span class="named-paragraph-number">4.7</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an annotated schema for a binary predicate</span><span class="named-paragraph-number">4.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">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="identifier-syntax">predicate</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_to_assert</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="12-ca.html#SP4_7_1" class="named-paragraph-link"><span class="named-paragraph">Undo any functional simplification of the relation</span><span class="named-paragraph-number">4.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="12-ca.html#SP4_4_1" class="named-paragraph-link"><span class="named-paragraph">Undo any functional simplification of the relation</span><span class="named-paragraph-number">4.4.1</span></a></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><span class="identifier-syntax">BinaryPredicateFamilies::get_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">bp_to_assert</span><span class="plain-syntax">, &</span><span class="identifier-syntax">asch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">asch</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_7_1" class="paragraph-anchor"></a><b>§4.7.1. </b>When a relation \(R(x, y)\) has been simplified to \(is(x, f_R(y))\)
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_1" class="paragraph-anchor"></a><b>§4.4.1. </b>When a relation \(R(x, y)\) has been simplified to \(is(x, f_R(y))\)
|
||||
or \(is(g_R(x), y)\), it can be tested but not asserted true or false;
|
||||
we have to re-establish \(R(x, y)\) before we can proceed.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Undo any functional simplification of the relation</span><span class="named-paragraph-number">4.7.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Undo any functional simplification of the relation</span><span class="named-paragraph-number">4.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -423,7 +354,7 @@ we have to re-establish \(R(x, y)\) before we can proceed.
|
|||
<span 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_to_assert</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp_to_assert</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4_7">§4.7</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="12-ca.html#SP4_4">§4.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -200,7 +200,7 @@ title from "The Big Bang Theory"),
|
|||
</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_nothing_object_constant</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">Rvalues::is_nothing_object_constant</span></span>:<br/>Property Knowledge - <a href="5-pk.html#SP2_1">§2.1</a><br/>Relation Knowledge - <a href="5-rk.html#SP1_3">§1.3</a><br/>Simplifications - <a href="11-sm.html#SP2">§2</a><br/>Assert Propositions - <a href="12-ap.html#SP8_11_1">§8.11.1</a><br/>Specifications - <a href="14-sp.html#SP3">§3</a>, <a href="14-sp.html#SP4">§4</a><br/>Dash - <a href="14-ds2.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_nothing_object_constant</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">Rvalues::is_nothing_object_constant</span></span>:<br/>Property Knowledge - <a href="5-pk.html#SP2_1">§2.1</a><br/>Relation Knowledge - <a href="5-rk.html#SP1_3">§1.3</a><br/>Simplifications - <a href="11-sm.html#SP2">§2</a><br/>Assert Propositions - <a href="12-ap.html#SP8_8_1">§8.8.1</a><br/>Specifications - <a href="14-sp.html#SP3">§3</a>, <a href="14-sp.html#SP4">§4</a><br/>Dash - <a href="14-ds2.html#SP18">§18</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">nothing_object_ANNOT</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>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -427,7 +427,7 @@ arise.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_constant</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_constant</span></span>:<br/>Refine Parse Tree - <a href="5-rpt.html#SP1">§1</a><br/>Explicit Relations - <a href="7-er.html#SP5">§5</a><br/>Tree Conversions - <a href="11-tc.html#SP3">§3</a><br/>Assert Propositions - <a href="12-ap.html#SP8_11">§8.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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_constant</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_constant</span></span>:<br/>Refine Parse Tree - <a href="5-rpt.html#SP1">§1</a><br/>Explicit Relations - <a href="7-er.html#SP5">§5</a><br/>Tree Conversions - <a href="11-tc.html#SP3">§3</a><br/>Assert Propositions - <a href="12-ap.html#SP8_8">§8.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="16-is.html#SP20" class="function-link"><span class="function-syntax">InferenceSubjects::domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="14-sp.html#SP1" class="function-link"><span class="function-syntax">Specifications::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">§17</a>, <a href="16-is.html#SP19">§19</a><br/>Supplementary Quotes - <a href="2-sq.html#SP2">§2</a><br/>Anaphoric References - <a href="3-ar.html#SP3">§3</a><br/>Adjective Meanings - <a href="7-am.html#SP22">§22</a><br/>Assert Propositions - <a href="12-ap.html#SP8_6">§8.6</a>, <a href="12-ap.html#SP8_7">§8.7</a>, <a href="12-ap.html#SP8_8">§8.8</a>, <a href="12-ap.html#SP8_9">§8.9</a>, <a href="12-ap.html#SP9">§9</a><br/>Lvalues - <a href="14-lv.html#SP13_3_1">§13.3.1</a><br/>Inferences - <a href="16-in.html#SP11">§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">§17</a>, <a href="16-is.html#SP19">§19</a><br/>Supplementary Quotes - <a href="2-sq.html#SP2">§2</a><br/>Anaphoric References - <a href="3-ar.html#SP3">§3</a><br/>Adjective Meanings - <a href="7-am.html#SP22">§22</a><br/>Assert Propositions - <a href="12-ap.html#SP8_6">§8.6</a>, <a href="12-ap.html#SP9">§9</a><br/>Lvalues - <a href="14-lv.html#SP13_3_1">§13.3.1</a><br/>Inferences - <a href="16-in.html#SP11">§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">) && (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></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">-></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>
|
||||
|
|
|
@ -208,7 +208,7 @@ table we are in, yet still only cite a small part of it —
|
|||
</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">StandardProblems::tcp_problem</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">StandardProblems::tcp_problem</span></span>:<br/>The Universal Relation - <a href="7-tur.html#SP4">§4</a><br/>Type Check Propositions - <a href="11-tcp.html#SP4_8">§4.8</a>, <a href="11-tcp.html#SP4_9">§4.9</a>, <a href="11-tcp.html#SP4_10">§4.10</a>, <a href="11-tcp.html#SP8">§8</a>, <a href="11-tcp.html#SP9">§9</a>, <a href="11-tcp.html#SP9_3">§9.3</a>, <a href="11-tcp.html#SP10">§10</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP2">§2</a>, <a href="12-terr.html#SP2_1">§2.1</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP4">§4</a><br/>The Provision Relation - <a href="15-tpr.html#SP4">§4</a><br/>Comparative Relations - <a href="15-cr.html#SP3">§3</a><br/>Setting Property Relation - <a href="15-spr2.html#SP9_1">§9.1</a>, <a href="15-spr2.html#SP9_2">§9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prototype</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::tcp_problem</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">StandardProblems::tcp_problem</span></span>:<br/>The Universal Relation - <a href="7-tur.html#SP4">§4</a><br/>Type Check Propositions - <a href="11-tcp.html#SP8">§8</a>, <a href="11-tcp.html#SP9">§9</a>, <a href="11-tcp.html#SP9_3">§9.3</a>, <a href="11-tcp.html#SP10">§10</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP2">§2</a>, <a href="12-terr.html#SP2_1">§2.1</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP4">§4</a><br/>The Provision Relation - <a href="15-tpr.html#SP4">§4</a><br/>Comparative Relations - <a href="15-cr.html#SP3">§3</a><br/>Setting Property Relation - <a href="15-spr2.html#SP9_1">§9.1</a>, <a href="15-spr2.html#SP9_2">§9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">SIGIL_ARGUMENTS</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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prototype</span><span 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">-></span><span class="identifier-syntax">issue_error</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ACT_ON_SIGIL</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>
|
||||
|
|
|
@ -176,7 +176,7 @@ this as some kind of marginal will-never-happen case.
|
|||
</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">Problems::quote_kind</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">Problems::quote_kind</span></span>:<br/><a href="2-sq.html#SP4">§4</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_2">§4.1.2</a>, <a href="4-dbtr.html#SP4_1_3_3">§4.1.3.3</a><br/>New Property Requests - <a href="4-npr.html#SP5_6_1">§5.6.1</a><br/>The Creator - <a href="5-tc.html#SP5_4_2_6">§5.4.2.6</a>, <a href="5-tc.html#SP5_4_2_7">§5.4.2.7</a>, <a href="5-tc.html#SP5_4_2_8">§5.4.2.8</a>, <a href="5-tc.html#SP8_1">§8.1</a><br/>Assertions - <a href="5-ass.html#SP6_3_39_1">§6.3.39.1</a><br/>New Property Assertions - <a href="5-npa.html#SP2_1_3">§2.1.3</a><br/>Property Knowledge - <a href="5-pk.html#SP2_1">§2.1</a>, <a href="5-pk.html#SP4_4">§4.4</a><br/>Literal Patterns - <a href="6-lp.html#SP30_4">§30.4</a>, <a href="6-lp.html#SP30_5">§30.5</a><br/>Instances - <a href="6-ins.html#SP18_1">§18.1</a><br/>Nonlocal Variables - <a href="6-nv.html#SP6_1">§6.1</a>, <a href="6-nv.html#SP22">§22</a>, <a href="6-nv.html#SP24_2">§24.2</a><br/>The Universal Relation - <a href="7-tur.html#SP4">§4</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">§7.1</a><br/>Type Check Propositions - <a href="11-tcp.html#SP4_8">§4.8</a>, <a href="11-tcp.html#SP4_9">§4.9</a>, <a href="11-tcp.html#SP4_10">§4.10</a>, <a href="11-tcp.html#SP8">§8</a>, <a href="11-tcp.html#SP9">§9</a>, <a href="11-tcp.html#SP9_3">§9.3</a>, <a href="11-tcp.html#SP10">§10</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP2_1">§2.1</a>, <a href="12-terr.html#SP5_4">§5.4</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP4">§4</a><br/>Compile Atoms - <a href="12-ca.html#SP4_2">§4.2</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP8">§8</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP5_1">§5.1</a>, <a href="13-rsfk.html#SP5_2">§5.2</a>, <a href="13-rsfk.html#SP18_2">§18.2</a>, <a href="13-rsfk.html#SP28">§28</a><br/>Dash - <a href="14-ds2.html#SP9_1_1_3_1">§9.1.1.3.1</a>, <a href="14-ds2.html#SP10_8_1">§10.8.1</a>, <a href="14-ds2.html#SP10_9_1_1_2_2_2">§10.9.1.1.2.2.2</a>, <a href="14-ds2.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_2">§10.9.1.1.5.2</a>, <a href="14-ds2.html#SP10_9_1_2_3_3">§10.9.1.2.3.3</a>, <a href="14-ds2.html#SP10_9_1_2_4">§10.9.1.2.4</a>, <a href="14-ds2.html#SP14_4">§14.4</a>, <a href="14-ds2.html#SP18_1">§18.1</a>, <a href="14-ds2.html#SP18_2">§18.2</a>, <a href="14-ds2.html#SP18_2_1">§18.2.1</a>, <a href="14-ds2.html#SP18_5_3_2">§18.5.3.2</a>, <a href="14-ds2.html#SP18_6_1_1">§18.6.1.1</a>, <a href="14-ds2.html#SP18_6_2_1">§18.6.2.1</a>, <a href="14-ds2.html#SP18_6_2_2">§18.6.2.2</a><br/>Valued Properties - <a href="15-vp.html#SP5">§5</a><br/>Condition Properties - <a href="15-cp.html#SP3">§3</a><br/>The Provision Relation - <a href="15-tpr.html#SP4">§4</a><br/>Setting Property Relation - <a href="15-spr2.html#SP9_1">§9.1</a>, <a href="15-spr2.html#SP9_2">§9.2</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">§4.1</a><br/>Inferences - <a href="16-in.html#SP13">§13</a><br/>List Constants - <a href="18-lc.html#SP7_2_1">§7.2.1</a><br/>Table Columns - <a href="19-tc.html#SP5_1">§5.1</a>, <a href="19-tc.html#SP13_1">§13.1</a>, <a href="19-tc.html#SP14">§14</a>, <a href="19-tc.html#SP14_6">§14.6</a><br/>Equations - <a href="20-eq.html#SP39_4_1">§39.4.1</a>, <a href="20-eq.html#SP39_4_2">§39.4.2</a>, <a href="20-eq.html#SP45_3_2">§45.3.2</a><br/>Rules - <a href="21-rl.html#SP14">§14</a>, <a href="21-rl.html#SP17">§17</a><br/>Phrase Usage - <a href="22-pu.html#SP20_1_1_2">§20.1.1.2</a><br/>Compile Invocations - <a href="25-ci.html#SP2_1_1_2">§2.1.1.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_2_1_1">§3.2.1.1</a>, <a href="25-cii.html#SP3_1_1_4_7_1_2">§3.1.1.4.7.1.2</a>, <a href="25-cii.html#SP3_5_3">§3.5.3</a>, <a href="25-cii.html#SP3_5_4_3">§3.5.4.3</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5">§4.3.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::quote_kind</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">Problems::quote_kind</span></span>:<br/><a href="2-sq.html#SP4">§4</a><br/>Define by Table Requests - <a href="4-dbtr.html#SP4_1_2">§4.1.2</a>, <a href="4-dbtr.html#SP4_1_3_3">§4.1.3.3</a><br/>New Property Requests - <a href="4-npr.html#SP5_6_1">§5.6.1</a><br/>The Creator - <a href="5-tc.html#SP5_4_2_6">§5.4.2.6</a>, <a href="5-tc.html#SP5_4_2_7">§5.4.2.7</a>, <a href="5-tc.html#SP5_4_2_8">§5.4.2.8</a>, <a href="5-tc.html#SP8_1">§8.1</a><br/>Assertions - <a href="5-ass.html#SP6_3_39_1">§6.3.39.1</a><br/>New Property Assertions - <a href="5-npa.html#SP2_1_3">§2.1.3</a><br/>Property Knowledge - <a href="5-pk.html#SP2_1">§2.1</a>, <a href="5-pk.html#SP4_4">§4.4</a><br/>Literal Patterns - <a href="6-lp.html#SP30_4">§30.4</a>, <a href="6-lp.html#SP30_5">§30.5</a><br/>Instances - <a href="6-ins.html#SP18_1">§18.1</a><br/>Nonlocal Variables - <a href="6-nv.html#SP6_1">§6.1</a>, <a href="6-nv.html#SP22">§22</a>, <a href="6-nv.html#SP24_2">§24.2</a><br/>The Universal Relation - <a href="7-tur.html#SP4">§4</a><br/>Tree Conversions - <a href="11-tc.html#SP7_1">§7.1</a><br/>Type Check Propositions - <a href="11-tcp.html#SP8">§8</a>, <a href="11-tcp.html#SP9">§9</a>, <a href="11-tcp.html#SP9_3">§9.3</a>, <a href="11-tcp.html#SP10">§10</a><br/>The Equality Relation Revisited - <a href="12-terr.html#SP2_1">§2.1</a>, <a href="12-terr.html#SP5_4">§5.4</a><br/>Quasinumeric Relations - <a href="12-qr.html#SP4">§4</a><br/>Compile Atoms - <a href="12-ca.html#SP4_2">§4.2</a><br/>Knowledge about Kinds - <a href="13-kak.html#SP8">§8</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP5_1">§5.1</a>, <a href="13-rsfk.html#SP5_2">§5.2</a>, <a href="13-rsfk.html#SP18_2">§18.2</a>, <a href="13-rsfk.html#SP28">§28</a><br/>Dash - <a href="14-ds2.html#SP9_1_1_3_1">§9.1.1.3.1</a>, <a href="14-ds2.html#SP10_8_1">§10.8.1</a>, <a href="14-ds2.html#SP10_9_1_1_2_2_2">§10.9.1.1.2.2.2</a>, <a href="14-ds2.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP10_9_1_1_5_2">§10.9.1.1.5.2</a>, <a href="14-ds2.html#SP10_9_1_2_3_3">§10.9.1.2.3.3</a>, <a href="14-ds2.html#SP10_9_1_2_4">§10.9.1.2.4</a>, <a href="14-ds2.html#SP14_4">§14.4</a>, <a href="14-ds2.html#SP18_1">§18.1</a>, <a href="14-ds2.html#SP18_2">§18.2</a>, <a href="14-ds2.html#SP18_2_1">§18.2.1</a>, <a href="14-ds2.html#SP18_5_3_2">§18.5.3.2</a>, <a href="14-ds2.html#SP18_6_1_1">§18.6.1.1</a>, <a href="14-ds2.html#SP18_6_2_1">§18.6.2.1</a>, <a href="14-ds2.html#SP18_6_2_2">§18.6.2.2</a><br/>Valued Properties - <a href="15-vp.html#SP5">§5</a><br/>Condition Properties - <a href="15-cp.html#SP3">§3</a><br/>The Provision Relation - <a href="15-tpr.html#SP4">§4</a><br/>Setting Property Relation - <a href="15-spr2.html#SP9_1">§9.1</a>, <a href="15-spr2.html#SP9_2">§9.2</a><br/>Properties of Values - <a href="15-pov.html#SP4_1">§4.1</a><br/>Inferences - <a href="16-in.html#SP13">§13</a><br/>List Constants - <a href="18-lc.html#SP7_2_1">§7.2.1</a><br/>Table Columns - <a href="19-tc.html#SP5_1">§5.1</a>, <a href="19-tc.html#SP13_1">§13.1</a>, <a href="19-tc.html#SP14">§14</a>, <a href="19-tc.html#SP14_6">§14.6</a><br/>Equations - <a href="20-eq.html#SP39_4_1">§39.4.1</a>, <a href="20-eq.html#SP39_4_2">§39.4.2</a>, <a href="20-eq.html#SP45_3_2">§45.3.2</a><br/>Rules - <a href="21-rl.html#SP14">§14</a>, <a href="21-rl.html#SP17">§17</a><br/>Phrase Usage - <a href="22-pu.html#SP20_1_1_2">§20.1.1.2</a><br/>Compile Invocations - <a href="25-ci.html#SP2_1_1_2">§2.1.1.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_2_1_1">§3.2.1.1</a>, <a href="25-cii.html#SP3_1_1_4_7_1_2">§3.1.1.4.7.1.2</a>, <a href="25-cii.html#SP3_5_3">§3.5.3</a>, <a href="25-cii.html#SP3_5_4_3">§3.5.4.3</a><br/>Compile Phrases - <a href="25-cp.html#SP4_3_5">§4.3.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">))) </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"nothing"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_void</span><span class="plain-syntax">))) </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="string-syntax">"nothing"</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::problem_quote</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="identifier-syntax">K</span><span class="plain-syntax">, </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::expand_kind</span></a><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 257143K = 251 MB
|
||||
|
||||
62.5% was used for 1330259 objects, in 273454 frames in 201 x 800K = 160800K = 157 MB:
|
||||
62.5% was used for 1330280 objects, in 273475 frames in 201 x 800K = 160800K = 157 MB:
|
||||
|
||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.4% text_stream_array 2567 x 100 = 256700 objects, 14457344 bytes
|
||||
|
@ -93,7 +93,7 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- adjective_iname_holder 320 objects, 15360 bytes
|
||||
---- plugin 23 objects, 13432 bytes
|
||||
---- literal_text 147 objects, 12936 bytes
|
||||
---- method 250 objects, 12000 bytes
|
||||
---- method 265 objects, 12720 bytes
|
||||
---- stopwatch_timer 148 objects, 11840 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
|
||||
---- pathname 262 objects, 10480 bytes
|
||||
|
@ -111,15 +111,15 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- build_vertex 40 objects, 4480 bytes
|
||||
---- hierarchy_attachment_point 48 objects, 4224 bytes
|
||||
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
||||
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
||||
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
||||
---- activity 35 objects, 3920 bytes
|
||||
---- inbuild_edition 54 objects, 3888 bytes
|
||||
---- parse_node_annotation_type 121 objects, 3872 bytes
|
||||
---- inbuild_copy 35 objects, 3640 bytes
|
||||
---- command_line_switch 43 objects, 3440 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- inform_extension 19 objects, 3040 bytes
|
||||
|
@ -129,21 +129,21 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- method_set 72 objects, 2304 bytes
|
||||
---- method_set 75 objects, 2400 bytes
|
||||
---- semver_range 22 objects, 2288 bytes
|
||||
---- use_option 29 objects, 1856 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- activity_crossref_array 1 x 100 objects, 1632 bytes
|
||||
---- plugin_call_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
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- scene 1 object, 1344 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
|
@ -154,8 +154,8 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- runtime_kind_structure 13 objects, 832 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- target_vm 6 objects, 816 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- generated_segment 25 objects, 800 bytes
|
||||
---- inter_data_type 14 objects, 784 bytes
|
||||
---- submodule_identity 23 objects, 736 bytes
|
||||
|
@ -163,16 +163,16 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- rulebook_outcome 17 objects, 680 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- nascent_array 7 objects, 616 bytes
|
||||
---- 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
|
||||
---- i6_memory_setting 13 objects, 416 bytes
|
||||
---- dval_written 10 objects, 400 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
|
@ -184,6 +184,7 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- up_family 8 objects, 256 bytes
|
||||
---- inform_pipeline 4 objects, 256 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- test_scenario 1 object, 208 bytes
|
||||
|
@ -192,26 +193,25 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 176 bytes
|
||||
---- up_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- link_instruction 4 objects, 160 bytes
|
||||
---- code_generation_target 4 objects, 160 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- link_instruction 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
|
||||
---- article 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- blorb_figure 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- blorb_figure 1 object, 48 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
|
||||
37.4% was used for memory not allocated for objects:
|
||||
|
||||
|
@ -232,5 +232,5 @@ Total memory consumption was 257143K = 251 MB
|
|||
---- emitter array storage 14368 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
20.2% was overhead - 53445424 bytes = 52192K = 50 MB
|
||||
20.2% was overhead - 53444512 bytes = 52191K = 50 MB
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
100.0% in inform7 run
|
||||
67.1% in compilation to Inter
|
||||
25.7% in //Phrases::Manager::compile_first_block//
|
||||
25.5% in //Phrases::Manager::compile_first_block//
|
||||
8.9% in //Phrases::Manager::compile_as_needed//
|
||||
6.9% in //Strings::compile_responses//
|
||||
7.0% in //Strings::compile_responses//
|
||||
6.1% in //World::Compile::compile//
|
||||
4.2% in //MajorNodes::pre_pass//
|
||||
3.2% in //MajorNodes::pass_1//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
1.0% in //VerbsAtRunTime::ConjugateVerb//
|
||||
|
@ -18,11 +18,11 @@
|
|||
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.4% not specifically accounted for
|
||||
30.5% in running Inter pipeline
|
||||
10.8% in step preparation
|
||||
9.8% in inter step 2/12: link
|
||||
6.9% in inter step 12/12: generate inform6 -> auto.inf
|
||||
3.3% not specifically accounted for
|
||||
30.4% in running Inter pipeline
|
||||
10.7% in step preparation
|
||||
9.7% in inter step 2/12: link
|
||||
7.0% 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
|
||||
|
@ -31,6 +31,6 @@
|
|||
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
|
||||
1.4% not specifically accounted for
|
||||
1.3% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -1126,7 +1126,7 @@ pcalc_prop *Calculus::Simplifications::is_all_rooms(pcalc_prop *prop, int *chang
|
|||
if (Atoms::is_notall_quantifier(q_atom))
|
||||
prop = Propositions::insert_atom(prop, pl_prev, Atoms::new(NEGATION_CLOSE_ATOM));
|
||||
prop = Propositions::insert_atom(prop, pl_prev,
|
||||
Atoms::EVERYWHERE_new(bp_atom->terms[j]));
|
||||
WherePredicates::everywhere_up(bp_atom->terms[j]));
|
||||
if (Atoms::is_notall_quantifier(q_atom))
|
||||
prop = Propositions::insert_atom(prop, pl_prev, Atoms::new(NEGATION_OPEN_ATOM));
|
||||
PROPOSITION_EDITED(pl, prop);
|
||||
|
@ -1155,7 +1155,7 @@ pcalc_prop *Calculus::Simplifications::is_all_rooms(pcalc_prop *prop, int *chang
|
|||
prop = Propositions::delete_atom(prop, pl_prev); /* remove |DOMAIN_CLOSE_ATOM| */
|
||||
prop = Propositions::delete_atom(prop, pl_prev); /* remove |PREDICATE_ATOM| */
|
||||
prop = Propositions::insert_atom(prop, pl_prev,
|
||||
Atoms::NOWHERE_new(bp_atom->terms[j]));
|
||||
WherePredicates::nowhere_up(bp_atom->terms[j]));
|
||||
PROPOSITION_EDITED(pl, prop);
|
||||
break;
|
||||
}
|
||||
|
@ -1198,9 +1198,9 @@ pcalc_prop *Calculus::Simplifications::everywhere_and_nowhere(pcalc_prop *prop,
|
|||
prop = Propositions::insert_atom(prop, pl_prev, Atoms::new(NEGATION_CLOSE_ATOM));
|
||||
pcalc_prop *new_atom;
|
||||
if (Atoms::is_nonexistence_quantifier(q_atom))
|
||||
new_atom = Atoms::NOWHERE_new(bp_atom->terms[j]);
|
||||
new_atom = WherePredicates::nowhere_up(bp_atom->terms[j]);
|
||||
else
|
||||
new_atom = Atoms::EVERYWHERE_new(bp_atom->terms[j]);
|
||||
new_atom = WherePredicates::everywhere_up(bp_atom->terms[j]);
|
||||
prop = Propositions::insert_atom(prop, pl_prev, new_atom);
|
||||
if (Atoms::is_notall_quantifier(q_atom))
|
||||
prop = Propositions::insert_atom(prop, pl_prev, Atoms::new(NEGATION_OPEN_ATOM));
|
||||
|
|
|
@ -99,15 +99,15 @@ pcalc_prop *Propositions::Abstract::to_set_property(property *prn, parse_node *v
|
|||
|
||||
=
|
||||
pcalc_prop *Propositions::Abstract::to_put_everywhere(void) {
|
||||
return Atoms::EVERYWHERE_new(Terms::new_variable(0));
|
||||
return WherePredicates::everywhere_up(Terms::new_variable(0));
|
||||
}
|
||||
|
||||
pcalc_prop *Propositions::Abstract::to_put_nowhere(void) {
|
||||
return Atoms::NOWHERE_new(Terms::new_variable(0));
|
||||
return WherePredicates::nowhere_up(Terms::new_variable(0));
|
||||
}
|
||||
|
||||
pcalc_prop *Propositions::Abstract::to_put_here(void) {
|
||||
return Atoms::HERE_new(Terms::new_variable(0));
|
||||
return WherePredicates::here_up(Terms::new_variable(0));
|
||||
}
|
||||
|
||||
@h Property setting.
|
||||
|
|
|
@ -82,12 +82,6 @@ int Propositions::Checker::type_check(pcalc_prop *prop, tc_problem_kit tck_s) {
|
|||
@<A binary predicate is required to apply to terms of the right kinds@>;
|
||||
if ((pl->element == PREDICATE_ATOM) && (pl->arity == 1))
|
||||
@<A unary predicate is required to have an interpretation matching the kind of its term@>;
|
||||
if (pl->element == EVERYWHERE_ATOM)
|
||||
@<An EVERYWHERE atom needs its term to be an object@>;
|
||||
if (pl->element == NOWHERE_ATOM)
|
||||
@<A NOWHERE atom needs its term to be an object@>;
|
||||
if (pl->element == HERE_ATOM)
|
||||
@<A HERE atom needs its term to be an object@>;
|
||||
}
|
||||
|
||||
if (tck->log_to_I6_text) @<Show the variable assignment in the debugging log@>;
|
||||
|
@ -288,51 +282,6 @@ would work instead. If it would, we make the change within the proposition.
|
|||
if (tck->log_to_I6_text) LOG("BP $o cannot be applied\n", pl);
|
||||
return NEVER_MATCH;
|
||||
|
||||
@<An EVERYWHERE atom needs its term to be an object@> =
|
||||
kind *actually_find = Propositions::Checker::kind_of_term(&(pl->terms[0]), &vta, tck);
|
||||
if (Kinds::compatible(actually_find, K_object) == NEVER_MATCH) {
|
||||
if (tck->log_to_I6_text)
|
||||
LOG("Term $0 is %u not an object\n", &(pl->terms[0]), actually_find);
|
||||
Problems::quote_kind(4, actually_find);
|
||||
StandardProblems::tcp_problem(_p_(PM_EverywhereMisapplied), tck,
|
||||
"that seems to say that a value - specifically, %4 - is everywhere. "
|
||||
"To Inform, everywhere means 'in every room', and only objects "
|
||||
"can be everywhere - in fact not even all of those, as it's a "
|
||||
"privilege reserved for backdrops. (For instance, 'The sky is a "
|
||||
"backdrop. The sky is everywhere.' is allowed.)");
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
|
||||
@<A NOWHERE atom needs its term to be an object@> =
|
||||
kind *actually_find = Propositions::Checker::kind_of_term(&(pl->terms[0]), &vta, tck);
|
||||
if (Kinds::compatible(actually_find, K_object) == NEVER_MATCH) {
|
||||
if (tck->log_to_I6_text)
|
||||
LOG("Term $0 is %u not an object\n", &(pl->terms[0]), actually_find);
|
||||
Problems::quote_kind(4, actually_find);
|
||||
StandardProblems::tcp_problem(_p_(PM_NowhereMisapplied), tck,
|
||||
"that seems to say that a value - specifically, %4 - is nowhere. "
|
||||
"To Inform, nowhere means 'in no room', and only things can be "
|
||||
"nowhere. (For instance, 'Godot is nowhere.' is allowed - it means "
|
||||
"Godot exists, but is not initially part of the drama.)");
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
|
||||
@ It seems to be true that the A-parser never generates propositions which
|
||||
apply |HERE| incorrectly, but just in case:
|
||||
|
||||
@<A HERE atom needs its term to be an object@> =
|
||||
kind *actually_find = Propositions::Checker::kind_of_term(&(pl->terms[0]), &vta, tck);
|
||||
if (Kinds::compatible(actually_find, K_object) == NEVER_MATCH) {
|
||||
if (tck->log_to_I6_text)
|
||||
LOG("Term $0 is %u not an object\n", &(pl->terms[0]), actually_find);
|
||||
Problems::quote_kind(4, actually_find);
|
||||
StandardProblems::tcp_problem(_p_(BelievedImpossible), tck,
|
||||
"that seems to say that a value - specifically, %4 - is here. "
|
||||
"To Inform, here means 'in the room we're talking about', so only "
|
||||
"objects can be 'here'.");
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
|
||||
@ Not so much for the debugging log as for the internal test, in fact, which
|
||||
prints the log to an I6 string. This is the type-checking report in the case
|
||||
of success.
|
||||
|
|
|
@ -209,9 +209,6 @@ void Propositions::Assert::prop_true_in_model(pcalc_prop *prop) {
|
|||
case 2: @<Assert the truth or falsity of a binary predicate@>; break;
|
||||
}
|
||||
break;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -396,72 +393,6 @@ through here, but it isn't exactly an everyday sentence.
|
|||
if (K) Kinds::make_subkind(K, pl->assert_kind);
|
||||
}
|
||||
|
||||
@h Asserting HERE, NOWHERE and EVERYWHERE.
|
||||
Three special cases. The first, EVERYWHERE, declares that something is found
|
||||
in every room. While we could simply deduce that the object must be a
|
||||
backdrop (and set the kind to make it so), this is such an extreme business,
|
||||
so rarely needed, that it seems better to make the user spell out that
|
||||
we're dealing with a backdrop. So we play dumb.
|
||||
|
||||
@<Assert the truth or falsity of an EVERYWHERE atom@> =
|
||||
if (now_negated) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantAssertNegatedEverywhere),
|
||||
"that seems to say that something isn't everywhere",
|
||||
"which is too vague. You must say where it is.");
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
inference_subject *subj = Propositions::Assert::subject_of_term(pl->terms[0]);
|
||||
instance *ox = InferenceSubjects::as_object_instance(subj);
|
||||
PL::Backdrops::infer_presence_everywhere(ox);
|
||||
#endif
|
||||
|
||||
@ NOWHERE is similar:
|
||||
|
||||
@<Assert the truth or falsity of a NOWHERE atom@> =
|
||||
inference_subject *subj = Propositions::Assert::subject_of_term(pl->terms[0]);
|
||||
instance *ox = InferenceSubjects::as_object_instance(subj);
|
||||
if (now_negated) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"that seems to say that something isn't nowhere",
|
||||
"which is too vague. You must say where it is.");
|
||||
return;
|
||||
}
|
||||
if (ox == NULL) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"that seems to say that something generic is 'nowhere'",
|
||||
"which suggests it could some day have a physical location.");
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
PL::Spatial::infer_presence_nowhere(ox);
|
||||
#endif
|
||||
|
||||
@ HERE means "this object is in the current room", which is not as easy to
|
||||
resolve as it looks, because at this point we don't know for certain what
|
||||
will be a room and what won't. So we record a special inference and put the
|
||||
problem aside for now.
|
||||
|
||||
@<Assert the truth or falsity of a HERE atom@> =
|
||||
inference_subject *subj = Propositions::Assert::subject_of_term(pl->terms[0]);
|
||||
instance *ox = InferenceSubjects::as_object_instance(subj);
|
||||
if (now_negated) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"that seems to say that something isn't here",
|
||||
"which is too vague. You must say where it is.");
|
||||
return;
|
||||
}
|
||||
if (ox == NULL) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NonInstanceHere),
|
||||
"that seems to say that something generic is 'here'",
|
||||
"which would give it a physical location. (It would be like saying "
|
||||
"'A number is here' - well, numbers are everywhere and nowhere.)");
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
PL::Spatial::infer_presence_here(ox);
|
||||
#endif
|
||||
|
||||
@h Asserting predicates.
|
||||
|
||||
@<Assert the truth or falsity of a unary predicate@> =
|
||||
|
|
|
@ -117,9 +117,6 @@ annotated_i6_schema Atoms::Compile::i6_schema_of_atom(i6_schema *sch, pcalc_prop
|
|||
@<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@>;
|
||||
case HERE_ATOM: @<Make an annotated schema for a HERE atom@>;
|
||||
case PREDICATE_ATOM:
|
||||
switch(pl->arity) {
|
||||
case 1: @<Make an annotated schema for a unary predicate@>;
|
||||
|
@ -196,57 +193,6 @@ the I6 |ofclass| operator.
|
|||
return asch;
|
||||
}
|
||||
|
||||
@ An easy case. Note that |FoundEverywhere| is a template routine existing
|
||||
to provide a common value of the I6 |found_in| property -- common that is
|
||||
to all backdrops which are currently everywhere.
|
||||
|
||||
@<Make an annotated schema for an EVERYWHERE atom@> =
|
||||
switch(task) {
|
||||
case TEST_ATOM_TASK:
|
||||
Calculus::Schemas::modify(sch, "BackdropEverywhere(*1)");
|
||||
return asch;
|
||||
case NOW_ATOM_TRUE_TASK:
|
||||
Calculus::Schemas::modify(sch, "MoveObject(*1, FoundEverywhere); MoveFloatingObjects();");
|
||||
return asch;
|
||||
case NOW_ATOM_FALSE_TASK:
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantChangeEverywhere),
|
||||
"not being 'everywhere' is not something which can be changed "
|
||||
"during play using 'now'",
|
||||
"because it's not exact enough about what needs to be done.");
|
||||
asch.schema = NULL; return asch;
|
||||
}
|
||||
|
||||
@ And another.
|
||||
|
||||
@<Make an annotated schema for a NOWHERE atom@> =
|
||||
switch(task) {
|
||||
case TEST_ATOM_TASK:
|
||||
Calculus::Schemas::modify(sch, "LocationOf(*1) == nothing");
|
||||
return asch;
|
||||
case NOW_ATOM_TRUE_TASK:
|
||||
Calculus::Schemas::modify(sch, "RemoveFromPlay(*1);");
|
||||
return asch;
|
||||
case NOW_ATOM_FALSE_TASK:
|
||||
Calculus::Schemas::modify(sch, "MoveObject(*1, real_location, 1, false);");
|
||||
return asch;
|
||||
}
|
||||
|
||||
@ And another. (In fact, at present |HERE| atoms are never included in
|
||||
propositions to be compiled, so this code is never used.)
|
||||
|
||||
@<Make an annotated schema for a HERE atom@> =
|
||||
switch(task) {
|
||||
case TEST_ATOM_TASK:
|
||||
Calculus::Schemas::modify(sch, "LocationOf(*1) == location");
|
||||
return asch;
|
||||
case NOW_ATOM_TRUE_TASK:
|
||||
case NOW_ATOM_FALSE_TASK:
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"being 'here' is not something which can be changed during play",
|
||||
"so it cannot be brought about or cancelled out with 'now'.");
|
||||
asch.schema = NULL; return asch;
|
||||
}
|
||||
|
||||
@ The last unary atom is an adjective, for which we hand over to the general
|
||||
adjective apparatus.
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ void CalculusModule::start(void) {
|
|||
Log::declare_aspect(PREDICATE_CALCULUS_WORKINGS_DA, L"predicate calculus workings", FALSE, FALSE);
|
||||
Calculus::Adjectival::start();
|
||||
Calculus::Creation::start();
|
||||
WherePredicates::start();
|
||||
Calculus::Equality::start();
|
||||
}
|
||||
void CalculusModule::end(void) {
|
||||
|
|
|
@ -0,0 +1,290 @@
|
|||
[WherePredicates::] Everywhere, Nowhere and Here.
|
||||
|
||||
To define the unary predicates for some anaphoric location adjectives.
|
||||
|
||||
@
|
||||
|
||||
= (early code)
|
||||
up_family *everywhere_up_family = NULL;
|
||||
up_family *nowhere_up_family = NULL;
|
||||
up_family *here_up_family = NULL;
|
||||
|
||||
unary_predicate *everywhere_up = NULL;
|
||||
unary_predicate *nowhere_up = NULL;
|
||||
unary_predicate *here_up = NULL;
|
||||
|
||||
@h Start.
|
||||
|
||||
=
|
||||
void WherePredicates::start(void) {
|
||||
everywhere_up_family = UnaryPredicateFamilies::new();
|
||||
METHOD_ADD(everywhere_up_family, STOCK_UPF_MTID, WherePredicates::stock_everywhere);
|
||||
METHOD_ADD(everywhere_up_family, LOG_UPF_MTID, WherePredicates::log_everywhere);
|
||||
nowhere_up_family = UnaryPredicateFamilies::new();
|
||||
METHOD_ADD(nowhere_up_family, STOCK_UPF_MTID, WherePredicates::stock_nowhere);
|
||||
METHOD_ADD(nowhere_up_family, LOG_UPF_MTID, WherePredicates::log_nowhere);
|
||||
here_up_family = UnaryPredicateFamilies::new();
|
||||
METHOD_ADD(here_up_family, STOCK_UPF_MTID, WherePredicates::stock_here);
|
||||
METHOD_ADD(here_up_family, LOG_UPF_MTID, WherePredicates::log_here);
|
||||
#ifdef CORE_MODULE
|
||||
METHOD_ADD(everywhere_up_family, TYPECHECK_UPF_MTID, WherePredicates::typecheck_everywhere);
|
||||
METHOD_ADD(everywhere_up_family, ASSERT_UPF_MTID, WherePredicates::assert_everywhere);
|
||||
METHOD_ADD(everywhere_up_family, SCHEMA_UPF_MTID, WherePredicates::schema_everywhere);
|
||||
METHOD_ADD(nowhere_up_family, TYPECHECK_UPF_MTID, WherePredicates::typecheck_nowhere);
|
||||
METHOD_ADD(nowhere_up_family, ASSERT_UPF_MTID, WherePredicates::assert_nowhere);
|
||||
METHOD_ADD(nowhere_up_family, SCHEMA_UPF_MTID, WherePredicates::schema_nowhere);
|
||||
METHOD_ADD(here_up_family, TYPECHECK_UPF_MTID, WherePredicates::typecheck_here);
|
||||
METHOD_ADD(here_up_family, ASSERT_UPF_MTID, WherePredicates::assert_here);
|
||||
METHOD_ADD(here_up_family, SCHEMA_UPF_MTID, WherePredicates::schema_here);
|
||||
#endif
|
||||
}
|
||||
|
||||
@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 WherePredicates::stock_everywhere(up_family *self, int n) {
|
||||
if (n == 1) {
|
||||
everywhere_up = UnaryPredicates::blank(everywhere_up_family);
|
||||
}
|
||||
}
|
||||
void WherePredicates::stock_nowhere(up_family *self, int n) {
|
||||
if (n == 1) {
|
||||
nowhere_up = UnaryPredicates::blank(nowhere_up_family);
|
||||
}
|
||||
}
|
||||
void WherePredicates::stock_here(up_family *self, int n) {
|
||||
if (n == 1) {
|
||||
here_up = UnaryPredicates::blank(here_up_family);
|
||||
}
|
||||
}
|
||||
|
||||
pcalc_prop *WherePredicates::everywhere_up(pcalc_term t) {
|
||||
return Atoms::unary_PREDICATE_new(everywhere_up, t);
|
||||
}
|
||||
|
||||
pcalc_prop *WherePredicates::nowhere_up(pcalc_term t) {
|
||||
return Atoms::unary_PREDICATE_new(nowhere_up, t);
|
||||
}
|
||||
|
||||
pcalc_prop *WherePredicates::here_up(pcalc_term t) {
|
||||
return Atoms::unary_PREDICATE_new(here_up, t);
|
||||
}
|
||||
|
||||
#ifdef CORE_MODULE
|
||||
int WherePredicates::typecheck_everywhere(up_family *self, unary_predicate *up,
|
||||
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck) {
|
||||
kind *actually_find = Propositions::Checker::kind_of_term(&(prop->terms[0]), vta, tck);
|
||||
if (Kinds::compatible(actually_find, K_object) == NEVER_MATCH) {
|
||||
if (tck->log_to_I6_text)
|
||||
LOG("Term $0 is %u not an object\n", &(prop->terms[0]), actually_find);
|
||||
Problems::quote_kind(4, actually_find);
|
||||
StandardProblems::tcp_problem(_p_(PM_EverywhereMisapplied), tck,
|
||||
"that seems to say that a value - specifically, %4 - is everywhere. "
|
||||
"To Inform, everywhere means 'in every room', and only objects "
|
||||
"can be everywhere - in fact not even all of those, as it's a "
|
||||
"privilege reserved for backdrops. (For instance, 'The sky is a "
|
||||
"backdrop. The sky is everywhere.' is allowed.)");
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
return ALWAYS_MATCH;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CORE_MODULE
|
||||
int WherePredicates::typecheck_nowhere(up_family *self, unary_predicate *up,
|
||||
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck) {
|
||||
kind *actually_find = Propositions::Checker::kind_of_term(&(prop->terms[0]), vta, tck);
|
||||
if (Kinds::compatible(actually_find, K_object) == NEVER_MATCH) {
|
||||
if (tck->log_to_I6_text)
|
||||
LOG("Term $0 is %u not an object\n", &(prop->terms[0]), actually_find);
|
||||
Problems::quote_kind(4, actually_find);
|
||||
StandardProblems::tcp_problem(_p_(PM_NowhereMisapplied), tck,
|
||||
"that seems to say that a value - specifically, %4 - is nowhere. "
|
||||
"To Inform, nowhere means 'in no room', and only things can be "
|
||||
"nowhere. (For instance, 'Godot is nowhere.' is allowed - it means "
|
||||
"Godot exists, but is not initially part of the drama.)");
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
return ALWAYS_MATCH;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ It seems to be true that Inform never generates propositions which
|
||||
apply "here" incorrectly, but just in case:
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
int WherePredicates::typecheck_here(up_family *self, unary_predicate *up,
|
||||
pcalc_prop *prop, variable_type_assignment *vta, tc_problem_kit *tck) {
|
||||
kind *actually_find = Propositions::Checker::kind_of_term(&(prop->terms[0]), vta, tck);
|
||||
if (Kinds::compatible(actually_find, K_object) == NEVER_MATCH) {
|
||||
if (tck->log_to_I6_text)
|
||||
LOG("Term $0 is %u not an object\n", &(prop->terms[0]), actually_find);
|
||||
Problems::quote_kind(4, actually_find);
|
||||
StandardProblems::tcp_problem(_p_(BelievedImpossible), tck,
|
||||
"that seems to say that a value - specifically, %4 - is here. "
|
||||
"To Inform, here means 'in the room we're talking about', so only "
|
||||
"objects can be 'here'.");
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
return ALWAYS_MATCH;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ EVERYWHERE declares that something is found
|
||||
in every room. While we could simply deduce that the object must be a
|
||||
backdrop (and set the kind to make it so), this is such an extreme business,
|
||||
so rarely needed, that it seems better to make the user spell out that
|
||||
we're dealing with a backdrop. So we play dumb.
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
void WherePredicates::assert_everywhere(up_family *self, unary_predicate *up,
|
||||
int now_negated, pcalc_prop *prop) {
|
||||
if (now_negated) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(),
|
||||
_p_(PM_CantAssertNegatedEverywhere),
|
||||
"that seems to say that something isn't everywhere",
|
||||
"which is too vague. You must say where it is.");
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
inference_subject *subj = Propositions::Assert::subject_of_term(prop->terms[0]);
|
||||
instance *ox = InferenceSubjects::as_object_instance(subj);
|
||||
PL::Backdrops::infer_presence_everywhere(ox);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ NOWHERE is similar:
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
void WherePredicates::assert_nowhere(up_family *self, unary_predicate *up,
|
||||
int now_negated, pcalc_prop *prop) {
|
||||
inference_subject *subj = Propositions::Assert::subject_of_term(prop->terms[0]);
|
||||
instance *ox = InferenceSubjects::as_object_instance(subj);
|
||||
if (now_negated) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"that seems to say that something isn't nowhere",
|
||||
"which is too vague. You must say where it is.");
|
||||
return;
|
||||
}
|
||||
if (ox == NULL) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"that seems to say that something generic is 'nowhere'",
|
||||
"which suggests it could some day have a physical location.");
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
PL::Spatial::infer_presence_nowhere(ox);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ HERE means "this object is in the current room", which is not as easy to
|
||||
resolve as it looks, because at this point we don't know for certain what
|
||||
will be a room and what won't. So we record a special inference and put the
|
||||
problem aside for now.
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
void WherePredicates::assert_here(up_family *self, unary_predicate *up,
|
||||
int now_negated, pcalc_prop *prop) {
|
||||
inference_subject *subj = Propositions::Assert::subject_of_term(prop->terms[0]);
|
||||
instance *ox = InferenceSubjects::as_object_instance(subj);
|
||||
if (now_negated) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"that seems to say that something isn't here",
|
||||
"which is too vague. You must say where it is.");
|
||||
return;
|
||||
}
|
||||
if (ox == NULL) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NonInstanceHere),
|
||||
"that seems to say that something generic is 'here'",
|
||||
"which would give it a physical location. (It would be like saying "
|
||||
"'A number is here' - well, numbers are everywhere and nowhere.)");
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
PL::Spatial::infer_presence_here(ox);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ Note that |FoundEverywhere| is a template routine existing
|
||||
to provide a common value of the I6 |found_in| property -- common that is
|
||||
to all backdrops which are currently everywhere.
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
void WherePredicates::schema_everywhere(up_family *self, int task, unary_predicate *up,
|
||||
annotated_i6_schema *asch, kind *K) {
|
||||
switch(task) {
|
||||
case TEST_ATOM_TASK:
|
||||
Calculus::Schemas::modify(asch->schema, "BackdropEverywhere(*1)");
|
||||
break;
|
||||
case NOW_ATOM_TRUE_TASK:
|
||||
Calculus::Schemas::modify(asch->schema, "MoveObject(*1, FoundEverywhere); MoveFloatingObjects();");
|
||||
break;
|
||||
case NOW_ATOM_FALSE_TASK:
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantChangeEverywhere),
|
||||
"not being 'everywhere' is not something which can be changed "
|
||||
"during play using 'now'",
|
||||
"because it's not exact enough about what needs to be done.");
|
||||
asch->schema = NULL; break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CORE_MODULE
|
||||
void WherePredicates::schema_nowhere(up_family *self, int task, unary_predicate *up,
|
||||
annotated_i6_schema *asch, kind *K) {
|
||||
switch(task) {
|
||||
case TEST_ATOM_TASK:
|
||||
Calculus::Schemas::modify(asch->schema, "LocationOf(*1) == nothing");
|
||||
break;
|
||||
case NOW_ATOM_TRUE_TASK:
|
||||
Calculus::Schemas::modify(asch->schema, "RemoveFromPlay(*1);");
|
||||
break;
|
||||
case NOW_ATOM_FALSE_TASK:
|
||||
Calculus::Schemas::modify(asch->schema, "MoveObject(*1, real_location, 1, false);");
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ In fact, at present "here" predicates are never included in propositions to
|
||||
be compiled, so this code is never used.
|
||||
|
||||
=
|
||||
#ifdef CORE_MODULE
|
||||
void WherePredicates::schema_here(up_family *self, int task, unary_predicate *up,
|
||||
annotated_i6_schema *asch, kind *K) {
|
||||
switch(task) {
|
||||
case TEST_ATOM_TASK:
|
||||
Calculus::Schemas::modify(asch->schema, "LocationOf(*1) == location");
|
||||
break;
|
||||
case NOW_ATOM_TRUE_TASK:
|
||||
case NOW_ATOM_FALSE_TASK:
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
|
||||
"being 'here' is not something which can be changed during play",
|
||||
"so it cannot be brought about or cancelled out with 'now'.");
|
||||
asch->schema = NULL; break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void WherePredicates::log_everywhere(up_family *self, OUTPUT_STREAM, unary_predicate *up) {
|
||||
WRITE("everywhere");
|
||||
}
|
||||
|
||||
void WherePredicates::log_nowhere(up_family *self, OUTPUT_STREAM, unary_predicate *up) {
|
||||
WRITE("nowhere");
|
||||
}
|
||||
|
||||
void WherePredicates::log_here(up_family *self, OUTPUT_STREAM, unary_predicate *up) {
|
||||
WRITE("here");
|
||||
}
|
|
@ -34,9 +34,6 @@ of the |*_ATOM| numbers below. Those elements in turn occur in "groups".
|
|||
@d PREDICATES_GROUP 20
|
||||
@d PREDICATE_ATOM 10 /* a regular predicate, rather than these special cases -- */
|
||||
@d KIND_ATOM 11 /* a unary predicate asserting that $x$ has kind $K$ */
|
||||
@d EVERYWHERE_ATOM 15 /* a unary predicate asserting omnipresence */
|
||||
@d NOWHERE_ATOM 16 /* a unary predicate asserting nonpresence */
|
||||
@d HERE_ATOM 17 /* a unary predicate asserting presence "here" */
|
||||
@d CALLED_ATOM 18 /* to keep track of "(called the intruder)"-style names */
|
||||
|
||||
@d OPEN_OPERATORS_GROUP 30
|
||||
|
@ -175,29 +172,6 @@ int Atoms::is_now_assertable_quantifier(pcalc_prop *prop) {
|
|||
return Quantifiers::is_now_assertable(prop->quant);
|
||||
}
|
||||
|
||||
@h The PREDICATES group.
|
||||
Next, unary predicates, beginning with the |EVERYWHERE|, |NOWHERE|, |HERE|
|
||||
special cases.
|
||||
|
||||
=
|
||||
pcalc_prop *Atoms::EVERYWHERE_new(pcalc_term pt) {
|
||||
pcalc_prop *prop = Atoms::new(EVERYWHERE_ATOM);
|
||||
prop->terms[prop->arity++] = pt;
|
||||
return prop;
|
||||
}
|
||||
|
||||
pcalc_prop *Atoms::NOWHERE_new(pcalc_term pt) {
|
||||
pcalc_prop *prop = Atoms::new(NOWHERE_ATOM);
|
||||
prop->terms[prop->arity++] = pt;
|
||||
return prop;
|
||||
}
|
||||
|
||||
pcalc_prop *Atoms::HERE_new(pcalc_term pt) {
|
||||
pcalc_prop *prop = Atoms::new(HERE_ATOM);
|
||||
prop->terms[prop->arity++] = pt;
|
||||
return prop;
|
||||
}
|
||||
|
||||
@ |CALLED| atoms are interesting because they exist only for their side-effects:
|
||||
they have no effect at all on the logical status of a proposition (well, except
|
||||
that they should not be applied to free variables referred to nowhere else).
|
||||
|
@ -420,9 +394,6 @@ void Atoms::write(text_stream *OUT, pcalc_prop *prop) {
|
|||
if ((Streams::I6_escapes_enabled(DL) == FALSE) && (prop->composited)) WRITE("_c");
|
||||
if ((Streams::I6_escapes_enabled(DL) == FALSE) && (prop->unarticled)) WRITE("_u");
|
||||
break;
|
||||
case EVERYWHERE_ATOM: WRITE("everywhere"); break;
|
||||
case NOWHERE_ATOM: WRITE("nowhere"); break;
|
||||
case HERE_ATOM: WRITE("here"); break;
|
||||
case NEGATION_OPEN_ATOM: WRITE("NOT<"); break;
|
||||
case NEGATION_CLOSE_ATOM: WRITE("NOT>"); break;
|
||||
case DOMAIN_OPEN_ATOM: WRITE("IN<"); break;
|
||||
|
|
|
@ -434,17 +434,17 @@ int Propositions::length(pcalc_prop *prop) {
|
|||
The following sneakily variable-argument-length function can be used to
|
||||
detect subsequences within a proposition: say, the sequence
|
||||
= (text)
|
||||
QUANTIFIER --> PREDICATE --> anything --> CALLED
|
||||
QUANTIFIER --> PREDICATE --> anything --> PREDICATE
|
||||
=
|
||||
starting at the current position, which could be tested with:
|
||||
= (text)
|
||||
Propositions::match(p, 4, QUANTIFIER_ATOM, NULL, PREDICATE_ATOM, NULL,
|
||||
ANY_ATOM_HERE, NULL, CALLED_ATOM, &cp);
|
||||
ANY_ATOM_HERE, NULL, PREDICATE_ATOM, &pp);
|
||||
=
|
||||
As can be seen, each atom is tested with an element number and an optional
|
||||
pointer; when a successful match is made, the optional pointer is set to
|
||||
the atom making the match. (So if the routine returns |TRUE| then we can
|
||||
be certain that |cp| points to the |CALLED_ATOM| at the end of the run of
|
||||
be certain that |pp| points to the |PREDICATE_ATOM| at the end of the run of
|
||||
four.) There are two special pseudo-element-numbers:
|
||||
|
||||
@d ANY_ATOM_HERE 0 /* match any atom, but don't match beyond the end of the proposition */
|
||||
|
|
|
@ -18,6 +18,7 @@ Chapter 2: Predicates
|
|||
Unary Predicates
|
||||
The Adjectival Predicates
|
||||
The Creation Predicates
|
||||
Everywhere, Nowhere and Here
|
||||
Binary Predicate Families
|
||||
Binary Predicates
|
||||
The Equality Relation
|
||||
|
|
|
@ -175,13 +175,7 @@ calls.
|
|||
1. Terms are made using the functions //Terms::new_constant//,
|
||||
//Terms::new_variable// and //Terms::new_function//.
|
||||
|
||||
2. Unary predicate atoms are made using:
|
||||
(*) //Atoms::from_adjective//, or
|
||||
(*) //Atoms::KIND_new//, or
|
||||
(*) //Atoms::CALLED_new//, or
|
||||
(*) //Atoms::new// for the oddball unaries,
|
||||
|EVERYWHERE_ATOM|, |NOWHERE_ATOM| and |HERE_ATOM|.
|
||||
|
||||
2. Unary predicate atoms are made using //Atoms::binary_PREDICATE_new//.
|
||||
Binary predicate atoms are made using //Atoms::binary_PREDICATE_new//.
|
||||
|
||||
3. Propositions are then built up from atoms or other propositions[1] by calling:
|
||||
|
|
|
@ -161,9 +161,9 @@ void Declarations::parse(parse_node *p) {
|
|||
<relation-name> ( <term> , <term> ) | ==> { -, Atoms::binary_PREDICATE_new(RP[1], *((pcalc_term *) RP[2]), *((pcalc_term *) RP[3])) }
|
||||
kind = <k-kind> ( <term> ) | ==> { -, Atoms::KIND_new(RP[1], *((pcalc_term *) RP[2])) }
|
||||
called = ... ( <term> ) | ==> { -, Atoms::CALLED_new(WR[1], *((pcalc_term *) RP[1]), NULL) }
|
||||
everywhere ( <term> ) | ==> { -, Atoms::EVERYWHERE_new(*((pcalc_term *) RP[1])) }
|
||||
nowhere ( <term> ) | ==> { -, Atoms::NOWHERE_new(*((pcalc_term *) RP[1])) }
|
||||
here ( <term> ) | ==> { -, Atoms::HERE_new(*((pcalc_term *) RP[1])) }
|
||||
everywhere ( <term> ) | ==> { -, WherePredicates::everywhere_up(*((pcalc_term *) RP[1])) }
|
||||
nowhere ( <term> ) | ==> { -, WherePredicates::nowhere_up(*((pcalc_term *) RP[1])) }
|
||||
here ( <term> ) | ==> { -, WherePredicates::here_up(*((pcalc_term *) RP[1])) }
|
||||
is-a-kind ( <term> ) | ==> { -, Calculus::Creation::is_a_kind_up(*((pcalc_term *) RP[1]), NULL) }
|
||||
is-a-var ( <term> ) | ==> { -, Calculus::Creation::is_a_var_up(*((pcalc_term *) RP[1])) }
|
||||
is-a-const ( <term> ) | ==> { -, Calculus::Creation::is_a_const_up(*((pcalc_term *) RP[1])) }
|
||||
|
|
Loading…
Reference in a new issue