From ce8014cfc559f6d9ae37967c6d9d58c97ec040a2 Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Tue, 12 Apr 2022 12:32:28 +0100 Subject: [PATCH] Fix for Mantis bug 1904 --- docs/BasicInformExtrasKit/S-msc.html | 36 +- docs/CommandParserKit/S-prs.html | 11 +- docs/WorldModelKit/S-lst.html | 2 +- docs/WorldModelKit/S-prn.html | 36 +- docs/WorldModelKit/S-tst.html | 2 +- docs/WorldModelKit/S-wrl.html | 5 + docs/assertions-module/2-is.html | 10 +- docs/assertions-module/3-tr2.html | 7 +- docs/assertions-module/4-ass.html | 13 +- docs/assertions-module/4-imp.html | 3 + docs/assertions-module/4-rpt.html | 2 +- docs/assertions-module/5-ptd.html | 7 + docs/assertions-module/7-tc.html | 16 +- docs/calculus-module/1-cm.html | 4 +- docs/calculus-module/2-kp.html | 4 +- docs/calculus-module/2-up.html | 4 +- docs/calculus-module/2-upf.html | 4 +- docs/calculus-module/3-bp.html | 4 +- docs/calculus-module/3-bpf.html | 4 +- docs/calculus-module/3-bptd.html | 4 +- docs/calculus-module/3-cs.html | 4 +- docs/calculus-module/3-ter.html | 4 +- docs/calculus-module/4-ap.html | 4 +- docs/calculus-module/4-bas.html | 4 +- docs/calculus-module/4-prp.html | 4 +- docs/calculus-module/4-tcp.html | 4 +- docs/calculus-module/4-trm.html | 4 +- docs/calculus-module/5-sc.html | 4 +- docs/calculus-module/5-smp.html | 4 +- docs/calculus-module/P-htitm.html | 4 +- docs/calculus-module/P-wtmd.html | 4 +- docs/calculus-module/index.html | 4 +- docs/if-module/3-sm.html | 2 +- docs/if-module/3-sr.html | 2 +- docs/if-module/4-ap.html | 1 + docs/imperative-module/2-cv.html | 10 +- docs/imperative-module/4-cdp.html | 116 ++- docs/imperative-module/4-cl.html | 15 +- docs/imperative-module/4-dtd.html | 24 +- docs/imperative-module/5-ci.html | 2 +- docs/knowledge-module/2-ins.html | 2 +- docs/knowledge-module/4-is2.html | 2 +- docs/knowledge-module/4-rs.html | 2 +- docs/knowledge-module/5-inf.html | 2 +- docs/knowledge-module/5-ri.html | 2 +- docs/knowledge-module/5-tmw.html | 62 ++ docs/lexicon-module/1-lm.html | 6 +- docs/lexicon-module/1-lxc.html | 4 +- docs/lexicon-module/2-em.html | 4 +- docs/lexicon-module/2-pe.html | 4 +- docs/lexicon-module/P-htitm.html | 4 +- docs/lexicon-module/P-wtmd.html | 10 +- docs/lexicon-module/index.html | 4 +- docs/values-module/5-dsh.html | 70 +- inform7/Downloads/preform-diagnostics.txt | 20 +- inform7/Downloads/syntax-diagnostics.txt | 826 ++++++++-------- inform7/Figures/memory-diagnostics.txt | 20 +- inform7/Figures/syntax-summary.txt | 6 +- inform7/Figures/timings-diagnostics.txt | 44 +- inform7/Tests/Test Makes/Eg4-C/textual.txt | 886 +++++++++--------- .../Test Problems/PM_DubiousAmbiguity.txt | 17 + .../_Results_Ideal/PM_DubiousAmbiguity.txt | 14 + .../_Results_Ideal/PM_EitherOrAsValue.txt | 13 +- .../_Results_Ideal/PM_GenericDescription.txt | 12 +- .../PM_LookedUpForbiddenProperty.txt | 13 +- .../Chapter 5/Phrase Type Data.w | 7 + .../Chapter 5/Compile Invocations.w | 2 +- inform7/values-module/Chapter 5/Dash.w | 40 +- .../lexicon-module/Chapter 1/Lexicon Module.w | 2 +- 69 files changed, 1419 insertions(+), 1079 deletions(-) create mode 100644 inform7/Tests/Test Problems/PM_DubiousAmbiguity.txt create mode 100644 inform7/Tests/Test Problems/_Results_Ideal/PM_DubiousAmbiguity.txt diff --git a/docs/BasicInformExtrasKit/S-msc.html b/docs/BasicInformExtrasKit/S-msc.html index ea7884428..d77ee3d2d 100644 --- a/docs/BasicInformExtrasKit/S-msc.html +++ b/docs/BasicInformExtrasKit/S-msc.html @@ -298,59 +298,61 @@ indefinite singular depends on the text of the object's name.

-[ IndefArt obj i;
+[ IndefArt obj i s;
     if (obj == 0) { LIST_WRITER_INTERNAL_RM('Y'); rtrue; }
-    i = indef_mode; indef_mode = true;
-    if (obj has proper) { indef_mode = NULL; print (PSN__) obj; indef_mode = i; return; }
+    i = indef_mode; indef_mode = true; s = self; self = obj;
+    if (obj has proper) { indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s; return; }
     if ((obj provides article) && (TEXT_TY_Compare(obj.article, EMPTY_TEXT_VALUE) ~= 0)) {
-        PrintOrRun(obj, article, true); print " ", (PSN__) obj; indef_mode = i;
+        PrintOrRun(obj, article, true); print " ", (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 2); indef_mode = i;
+    PrefaceByArticle(obj, 2); indef_mode = i; self = s;
 ];
 
-[ CIndefArt obj i;
+[ CIndefArt obj i s;
     if (obj == 0) { LIST_WRITER_INTERNAL_RM('X'); rtrue; }
-    i = indef_mode; indef_mode = true;
+    i = indef_mode; indef_mode = true; s = self; self = obj;
     if (obj has proper) {
         indef_mode = NULL;
         caps_mode = true;
         print (PSN__) obj;
         indef_mode = i;
         caps_mode = false;
+        self = s;
         return;
     }
     if ((obj provides article) && (TEXT_TY_Compare(obj.article, EMPTY_TEXT_VALUE) ~= 0)) {
-        TEXT_TY_Say_Capitalised(obj.article); print " ", (PSN__) obj; indef_mode = i;
+        TEXT_TY_Say_Capitalised(obj.article); print " ", (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 2, 0, 1); indef_mode = i;
+    PrefaceByArticle(obj, 2, 0, 1); indef_mode = i; self = s;
 ];
 
-[ DefArt obj i;
-    i = indef_mode; indef_mode = false;
+[ DefArt obj i s;
+    i = indef_mode; indef_mode = false; s = self; self = obj;
     if ((~~obj ofclass Object) || obj has proper) {
-        indef_mode = NULL; print (PSN__) obj; indef_mode = i;
+        indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 1); indef_mode = i;
+    PrefaceByArticle(obj, 1); indef_mode = i; self = s;
 ];
 
-[ CDefArt obj i;
-    i = indef_mode; indef_mode = false;
+[ CDefArt obj i s;
+    i = indef_mode; indef_mode = false; s = self; self = obj;
     if ((obj ofclass Object) && (obj has proper)) {
         indef_mode = NULL;
         caps_mode = true;
         print (PSN__) obj;
         indef_mode = i;
         caps_mode = false;
+        self = s;
         return;
     }
     if ((~~obj ofclass Object) || obj has proper) {
-        indef_mode = NULL; print (PSN__) obj; indef_mode = i;
+        indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 0); indef_mode = i;
+    PrefaceByArticle(obj, 0); indef_mode = i; self = s;
 ];
 
 [ GetGNAOfObject obj case gender;
diff --git a/docs/CommandParserKit/S-prs.html b/docs/CommandParserKit/S-prs.html
index eed5d66f2..815e51bb9 100644
--- a/docs/CommandParserKit/S-prs.html
+++ b/docs/CommandParserKit/S-prs.html
@@ -1399,10 +1399,15 @@ fake action ##NotUnderstood    if (etype == STUCK_PE) {    PARSER_ERROR_INTERNAL_RM('A'); new_line; oops_from = 1; }
     if (etype == UPTO_PE) {
-        if (inferred_go) PARSER_ERROR_INTERNAL_RM('C');
-        else PARSER_ERROR_INTERNAL_RM('B');
         for (m=0 : m<32 : m++) pattern-->m = pattern2-->m;
-        pcount = pcount2; PrintCommand(0);
+        pcount = pcount2;
+        if (inferred_go) {
+            PARSER_ERROR_INTERNAL_RM('C');
+            print (name) parser_results-->INP1_PRES;
+        } else {
+            PARSER_ERROR_INTERNAL_RM('B');
+            PrintCommand(0);
+        }
         print ".^";
     }
     if (etype == NUMBER_PE) {   PARSER_ERROR_INTERNAL_RM('D'); new_line; }
diff --git a/docs/WorldModelKit/S-lst.html b/docs/WorldModelKit/S-lst.html
index 176cda768..9def8f1f0 100644
--- a/docs/WorldModelKit/S-lst.html
+++ b/docs/WorldModelKit/S-lst.html
@@ -530,7 +530,7 @@ objects which in all other circumstances never have children in the tree.
 
 #Ifdef DBLW;
 [ DiagnoseSortList obj memb;
-    for (memb=child(obj): memb~=nothing: memb=sibling(memb)) print memb, " --> "; new_line;
+    for (memb=obj: memb~=nothing: memb=sibling(memb)) print memb, " --> "; new_line;
 ];
 #Endif;
 
diff --git a/docs/WorldModelKit/S-prn.html b/docs/WorldModelKit/S-prn.html index 7cc88d6db..31f610424 100644 --- a/docs/WorldModelKit/S-prn.html +++ b/docs/WorldModelKit/S-prn.html @@ -405,59 +405,61 @@ indefinite singular depends on the text of the object's name.

-[ IndefArt obj i;
+[ IndefArt obj i s;
     if (obj == 0) { LIST_WRITER_INTERNAL_RM('Y'); rtrue; }
-    i = indef_mode; indef_mode = true;
-    if (obj has proper) { indef_mode = NULL; print (PSN__) obj; indef_mode = i; return; }
+    i = indef_mode; indef_mode = true; s = self; self = obj;
+    if (obj has proper) { indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s; return; }
     if ((obj provides article) && (TEXT_TY_Compare(obj.article, EMPTY_TEXT_VALUE) ~= 0)) {
-        PrintOrRun(obj, article, true); print " ", (PSN__) obj; indef_mode = i;
+        PrintOrRun(obj, article, true); print " ", (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 2); indef_mode = i;
+    PrefaceByArticle(obj, 2); indef_mode = i; self = s;
 ];
 
-[ CIndefArt obj i;
+[ CIndefArt obj i s;
     if (obj == 0) { LIST_WRITER_INTERNAL_RM('X'); rtrue; }
-    i = indef_mode; indef_mode = true;
+    i = indef_mode; indef_mode = true; s = self; self = obj;
     if (obj has proper) {
         indef_mode = NULL;
         caps_mode = true;
         print (PSN__) obj;
         indef_mode = i;
         caps_mode = false;
+        self = s;
         return;
     }
     if ((obj provides article) && (TEXT_TY_Compare(obj.article, EMPTY_TEXT_VALUE) ~= 0)) {
-        TEXT_TY_Say_Capitalised(obj.article); print " ", (PSN__) obj; indef_mode = i;
+        TEXT_TY_Say_Capitalised(obj.article); print " ", (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 2, 0, 1); indef_mode = i;
+    PrefaceByArticle(obj, 2, 0, 1); indef_mode = i; self = s;
 ];
 
-[ DefArt obj i;
-    i = indef_mode; indef_mode = false;
+[ DefArt obj i s;
+    i = indef_mode; indef_mode = false; s = self; self = obj;
     if ((~~obj ofclass Object) || obj has proper) {
-        indef_mode = NULL; print (PSN__) obj; indef_mode = i;
+        indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 1); indef_mode = i;
+    PrefaceByArticle(obj, 1); indef_mode = i; self = s;
 ];
 
-[ CDefArt obj i;
-    i = indef_mode; indef_mode = false;
+[ CDefArt obj i s;
+    i = indef_mode; indef_mode = false; s = self; self = obj;
     if ((obj ofclass Object) && (obj has proper || obj == player)) {
         indef_mode = NULL;
         caps_mode = true;
         print (PSN__) obj;
         indef_mode = i;
         caps_mode = false;
+        self = s;
         return;
     }
     if ((~~obj ofclass Object) || obj has proper) {
-        indef_mode = NULL; print (PSN__) obj; indef_mode = i;
+        indef_mode = NULL; print (PSN__) obj; indef_mode = i; self = s;
         return;
     }
-    PrefaceByArticle(obj, 0); indef_mode = i;
+    PrefaceByArticle(obj, 0); indef_mode = i; self = s;
 ];
 

§14. Standard Response Issuing Rule. To print a response, we trigger off the response issuing activity. The following diff --git a/docs/WorldModelKit/S-tst.html b/docs/WorldModelKit/S-tst.html index a4b6763e0..6cb14c8b8 100644 --- a/docs/WorldModelKit/S-tst.html +++ b/docs/WorldModelKit/S-tst.html @@ -76,7 +76,7 @@ moves an object to a new position in the object tree. [ XAbstractSub; if (XTestMove(noun, second)) return; move noun to second; - "[Abstracted.]"; + say__p = 1; "[Abstracted.]"; ]; [ XTestMove obj dest; diff --git a/docs/WorldModelKit/S-wrl.html b/docs/WorldModelKit/S-wrl.html index e77374eeb..248be875b 100644 --- a/docs/WorldModelKit/S-wrl.html +++ b/docs/WorldModelKit/S-wrl.html @@ -301,6 +301,11 @@ attaching it: it cannot, of course, be the core of the resulting object.

+[ PartOf P;
+    if (P ofclass K2_thing) return P.component_parent;
+    return nothing;
+];
+
 [ MakePart P Of First;
     if (P == player) return RunTimeProblem(RTP_CANTMAKEPART, Of);
     if (parent(P)) remove P; give P ~worn;
diff --git a/docs/assertions-module/2-is.html b/docs/assertions-module/2-is.html
index bec9dbafc..9161ae7a1 100644
--- a/docs/assertions-module/2-is.html
+++ b/docs/assertions-module/2-is.html
@@ -1453,13 +1453,9 @@ annotations to them.
     TextSubstitutions::it_is_not_worth_adding();
     StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_TSWithComma),
         "a substitution contains a comma ','",
-        "which is against the rules, because 'say' is a special phrase in which the comma "
-        "divides items in a list of things to say, and so it loses its ordinary meanings. "
-        "Because of this, no text substitution can contain a comma. "
-        "(If you're trying to use a value produced by a phrase with a phrase "
-        "option - say 'the best route from A to B, using even locked doors' - "
-        "you'll need to put this in a 'let' variable first and then say that, "
-        "or else define a better text substitution to do the job for you.)");
+        "which is (for obscure reasons) against the rules for text substitutions. "
+        "(You may be able to get around this by placing the phrase containing the "
+        "comma in round brackets '(' and ')', which reduces the risk of ambiguity.)");
     TextSubstitutions::it_is_worth_adding();
     return;
 
diff --git a/docs/assertions-module/3-tr2.html b/docs/assertions-module/3-tr2.html index 339dcd4da..37c1afdfd 100644 --- a/docs/assertions-module/3-tr2.html +++ b/docs/assertions-module/3-tr2.html @@ -190,13 +190,12 @@ more elaborate: <test-case-circumstance-list> ::= ... | ==> { lookahead } <test-case-circumstance-list> <test-case-circumstance> | ==> { 0, - } - <test-case-circumstance> ==> { 0, - } + <test-case-circumstance> | ==> { 0, - } + ... ==> Issue PM_TestBadRequirements problem3.5 <test-case-circumstance> ::= in <instance-of-object> | ==> Add in-test requirement3.2 - in ... | ==> Issue PM_TestBadRequirements problem3.5 holding/and/, <instance-of-object> | ==> Add holding requirement3.3 - holding/and/, ... | ==> Issue PM_TestBadRequirements problem3.5 with ... ==> Issue PM_TestDoubleWith problem3.4 @@ -242,7 +241,7 @@ more elaborate: "which should be 'test ... with ... in ...' or '... " "holding ...'"); - + diff --git a/docs/assertions-module/4-ass.html b/docs/assertions-module/4-ass.html index 52a6d3566..c51af0e82 100644 --- a/docs/assertions-module/4-ass.html +++ b/docs/assertions-module/4-ass.html @@ -289,7 +289,7 @@ of px and §6. Splitting into cases.

-void Assertions::make_coupling(parse_node *px, parse_node *py) {
+void Assertions::make_coupling(parse_node *px, parse_node *py) {
     LOG_INDENT;
     Assertions::make_assertion_recursive_inner(px, py);
     LOG_OUTDENT;
@@ -1395,6 +1395,13 @@ in this case.
 
 
     Refiner::turn_player_to_yourself(px);
+    if ((Node::get_type(px) == PROPER_NOUN_NT) &&
+        (Lvalues::get_nonlocal_variable_if_any(Node::get_evaluation(px)))) {
+        if (Refiner::nominalise_adjective(py)) {
+            Assertions::make_coupling(px, py);
+            return;
+        }
+    }
     if (global_pass_state.pass == 2) Assertions::PropertyKnowledge::assert_property_list(px, py);
 
  • This code is used in §6.3.
@@ -2467,8 +2474,8 @@ can also be used adjectivally. StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_CantUncreate)); Problems::issue_problem_segment( "In order to act on %2, I seem to need to give " - "a new meaning to '%1', something which was created by the earlier " - "sentence %3. That must be wrong somehow: I'm guessing that there " + "a new meaning to '%1', which currently means something created by the " + "earlier sentence %3. That must be wrong, so I'm guessing that there " "is an accidental clash of names. This sometimes happens when " "adjectives are being made after objects whose names include them: " "for instance, defining 'big' as an adjective after having already " diff --git a/docs/assertions-module/4-imp.html b/docs/assertions-module/4-imp.html index c648725cb..6c48b85bc 100644 --- a/docs/assertions-module/4-imp.html +++ b/docs/assertions-module/4-imp.html @@ -73,6 +73,7 @@ description only, whereas B could be any subtree of an assertion. typedef struct implication { struct pcalc_prop *if_proposition; which objects are affected struct parse_node *then_pn; what assertion is implied about them + struct parse_node *where_declared; int implied_likelihood; with what certainty level CLASS_DEFINITION } implication; @@ -131,6 +132,7 @@ is to store them and sit on them. imp->if_proposition = premiss; imp->then_pn = py; imp->implied_likelihood = prevailing_mood; + imp->where_declared = current_sentence; ADD_TO_LINKED_LIST(imp, implication, InferenceSubjects::get_implications(premiss_kind)); LOGIF(IMPLICATIONS, "Forming implication for $j: $D implies\n $T", @@ -380,6 +382,7 @@ no better a certainty level. } else { prop = Propositions::concatenate(prop, AdjectivalPredicates::new_atom_on_x(aph, FALSE)); } + current_sentence = imp->where_declared; Assert::true_about(prop, candidate, CERTAIN_CE); return TRUE;
diff --git a/docs/assertions-module/4-rpt.html b/docs/assertions-module/4-rpt.html index da65ccb7e..d11bed8b6 100644 --- a/docs/assertions-module/4-rpt.html +++ b/docs/assertions-module/4-rpt.html @@ -188,7 +188,7 @@ though only if it has a positive sense and has a nominal meaning.

-int Refiner::nominalise_adjective(parse_node *p) {
+int Refiner::nominalise_adjective(parse_node *p) {
     if ((p) && (Node::get_type(p) == ADJECTIVE_NT)) {
         unary_predicate *pred = Node::get_predicate(p);
         if (AdjectivalPredicates::parity(pred) == TRUE) {
diff --git a/docs/assertions-module/5-ptd.html b/docs/assertions-module/5-ptd.html
index 8d8943b24..6f3f3ebc6 100644
--- a/docs/assertions-module/5-ptd.html
+++ b/docs/assertions-module/5-ptd.html
@@ -786,10 +786,12 @@ by than name.
 
 
 void IDTypeData::make_inline(id_type_data *idtd) {
+    if (idtd == NULL) internal_error("null idtd");
     idtd->as_inline.invoked_inline_not_as_call = TRUE;
 }
 
 int IDTypeData::invoked_inline(id_body *idb) {
+    if (idb == NULL) return FALSE;
     return idb->type_data.as_inline.invoked_inline_not_as_call;
 }
 
@@ -797,16 +799,19 @@ by than name.
 int IDTypeData::is_a_let_assignment(id_body *idb) {
+    if (idb == NULL) return FALSE;
     if (idb->type_data.as_inline.let_phrase == ASSIGNMENT_LET_PHRASE) return TRUE;
     return FALSE;
 }
 
 int IDTypeData::is_a_let_equation(id_body *idb) {
+    if (idb == NULL) return FALSE;
     if (idb->type_data.as_inline.let_phrase == EQUATION_LET_PHRASE) return TRUE;
     return FALSE;
 }
 
 int IDTypeData::arithmetic_operation(id_body *idb) {
+    if (idb == NULL) return -1;
     return idb->type_data.as_inline.arithmetical_operation;
 }
 
@@ -817,6 +822,7 @@ by than name.
 }
 
 int IDTypeData::is_assignment_phrase(id_body *idb) {
+    if (idb == NULL) return FALSE;
     return idb->type_data.as_inline.assignment_phrase;
 }
 
@@ -826,6 +832,7 @@ by than name.
 }
 
 int IDTypeData::block_follows(id_body *idb) {
+    if (idb == NULL) return FALSE;
     return idb->type_data.as_inline.block_follows;
 }
 
diff --git a/docs/assertions-module/7-tc.html b/docs/assertions-module/7-tc.html index 7eb5f9683..5b8cdf5c1 100644 --- a/docs/assertions-module/7-tc.html +++ b/docs/assertions-module/7-tc.html @@ -271,7 +271,8 @@ what looks like text into grammar for parsing.
 <table-column-heading> ::=
-    ( *** ) |                               ==> Issue PM_TableColumnBracketed problem9.3
+    ( *** ) |                               ==> Issue PM_TableColumnBracketed problem9.4
+    topic ( ... ) |                         ==> Issue PM_TopicText problem9.3
     <s-table-column-name> ( {...} ) |       ==> { EXISTING_TC, RP[1] }
     <table-column-heading-bare> ( {...} ) | ==> { (R[1] == NEW_TC_PROBLEM)?R[1]:NEW_TC, - }
     <s-table-column-name> |                 ==> { EXISTING_TC_WITHOUT_KIND, RP[1] }
@@ -309,7 +310,18 @@ what looks like text into grammar for parsing.
     ==> { NEW_TC_PROBLEM, - };
 
  • This code is used in §9.
-

§9.3. Issue PM_TableColumnBracketed problem9.3 = +

§9.3. Issue PM_TopicText problem9.3 = +

+ +
+    StandardProblems::table_problem(_p_(PM_TopicText),
+        table_being_examined, NULL, table_cell_node,
+        "In %1, the column name 'topic' is not allowed to have a clarifying kind "
+        "in brackets after it. Just say 'topic' and leave it at that.");
+    ==> { NEW_TC_PROBLEM, - };
+
+
  • This code is used in §9.
+

§9.4. Issue PM_TableColumnBracketed problem9.4 =

diff --git a/docs/calculus-module/1-cm.html b/docs/calculus-module/1-cm.html
index 22b69ea6a..366eb96f8 100644
--- a/docs/calculus-module/1-cm.html
+++ b/docs/calculus-module/1-cm.html
@@ -41,7 +41,9 @@ function togglePopup(material_id) {
 
  • inform6
  • inpolicy
  • inrtps
  • -
  • extensions and kits
  • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/2-kp.html b/docs/calculus-module/2-kp.html index 76d8b9656..a76d52431 100644 --- a/docs/calculus-module/2-kp.html +++ b/docs/calculus-module/2-kp.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/2-up.html b/docs/calculus-module/2-up.html index 5cbafba70..a4d26f633 100644 --- a/docs/calculus-module/2-up.html +++ b/docs/calculus-module/2-up.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/2-upf.html b/docs/calculus-module/2-upf.html index 7c0a07630..fdd38c459 100644 --- a/docs/calculus-module/2-upf.html +++ b/docs/calculus-module/2-upf.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/3-bp.html b/docs/calculus-module/3-bp.html index 922d11dc3..0e5272606 100644 --- a/docs/calculus-module/3-bp.html +++ b/docs/calculus-module/3-bp.html @@ -60,7 +60,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/3-bpf.html b/docs/calculus-module/3-bpf.html index 7e0735310..7d53c67ee 100644 --- a/docs/calculus-module/3-bpf.html +++ b/docs/calculus-module/3-bpf.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/3-bptd.html b/docs/calculus-module/3-bptd.html index 334ddb6c1..73c41dbe6 100644 --- a/docs/calculus-module/3-bptd.html +++ b/docs/calculus-module/3-bptd.html @@ -60,7 +60,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/3-cs.html b/docs/calculus-module/3-cs.html index 503077c42..5a48d3a64 100644 --- a/docs/calculus-module/3-cs.html +++ b/docs/calculus-module/3-cs.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/3-ter.html b/docs/calculus-module/3-ter.html index 1415976d2..b2e47b106 100644 --- a/docs/calculus-module/3-ter.html +++ b/docs/calculus-module/3-ter.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/4-ap.html b/docs/calculus-module/4-ap.html index d2cbda0df..6c623cefc 100644 --- a/docs/calculus-module/4-ap.html +++ b/docs/calculus-module/4-ap.html @@ -60,7 +60,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/4-bas.html b/docs/calculus-module/4-bas.html index eab63e0f5..1ff6eea12 100644 --- a/docs/calculus-module/4-bas.html +++ b/docs/calculus-module/4-bas.html @@ -55,7 +55,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/4-prp.html b/docs/calculus-module/4-prp.html index 2d1429b41..3aaad28e2 100644 --- a/docs/calculus-module/4-prp.html +++ b/docs/calculus-module/4-prp.html @@ -55,7 +55,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/4-tcp.html b/docs/calculus-module/4-tcp.html index a17f5a519..16bf3d7ed 100644 --- a/docs/calculus-module/4-tcp.html +++ b/docs/calculus-module/4-tcp.html @@ -55,7 +55,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/4-trm.html b/docs/calculus-module/4-trm.html index b603c1624..d49bc73d9 100644 --- a/docs/calculus-module/4-trm.html +++ b/docs/calculus-module/4-trm.html @@ -60,7 +60,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/5-sc.html b/docs/calculus-module/5-sc.html index 735441b03..bd9eb981f 100644 --- a/docs/calculus-module/5-sc.html +++ b/docs/calculus-module/5-sc.html @@ -55,7 +55,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/5-smp.html b/docs/calculus-module/5-smp.html index 973667a95..51e616846 100644 --- a/docs/calculus-module/5-smp.html +++ b/docs/calculus-module/5-smp.html @@ -60,7 +60,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/P-htitm.html b/docs/calculus-module/P-htitm.html index 80e6eab45..ca2de1f10 100644 --- a/docs/calculus-module/P-htitm.html +++ b/docs/calculus-module/P-htitm.html @@ -33,7 +33,9 @@
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/P-wtmd.html b/docs/calculus-module/P-wtmd.html index f406b7b5a..29831be00 100644 --- a/docs/calculus-module/P-wtmd.html +++ b/docs/calculus-module/P-wtmd.html @@ -52,7 +52,9 @@ MathJax = {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/calculus-module/index.html b/docs/calculus-module/index.html index a2b0adc2c..c5075c3ee 100644 --- a/docs/calculus-module/index.html +++ b/docs/calculus-module/index.html @@ -31,7 +31,9 @@
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

    @@ -638,11 +646,12 @@ example. (See below.) break; case NOW_ASSERTION_DEFER: break; case CONDITION_DEFER: Act on successful match in CONDITION search3.6.1.4.2.1; break; - case EXTREMAL_DEFER: Act on successful match in EXTREMAL search3.6.1.4.2.6; break; - case LOOP_DOMAIN_DEFER: Act on successful match in LOOP search3.6.1.4.2.7; break; + case EXTREMAL_DEFER: Act on successful match in EXTREMAL search3.6.1.4.2.7; break; + case LOOP_DOMAIN_DEFER: Act on successful match in LOOP search3.6.1.4.2.8; break; case NUMBER_OF_DEFER: Act on successful match in NUMBER search3.6.1.4.2.2; break; case LIST_OF_DEFER: Act on successful match in LIST search3.6.1.4.2.3; break; case TOTAL_DEFER: Act on successful match in TOTAL search3.6.1.4.2.5; break; + case TOTAL_REAL_DEFER: Act on successful match in TOTAL REAL search3.6.1.4.2.6; break; case RANDOM_OF_DEFER: Act on successful match in RANDOM search3.6.1.4.2.4; break; }
    @@ -1151,6 +1160,9 @@ of variable values is found; and some winding-up code. case TOTAL_DEFER: total_s = LocalVariables::new_internal_as_symbol(I"total"); break; + case TOTAL_REAL_DEFER: + total_s = LocalVariables::new_internal_as_symbol(I"total"); + break; case LIST_OF_DEFER: counter_s = LocalVariables::new_internal_as_symbol(I"counter"); total_s = LocalVariables::new_internal_as_symbol(I"total"); @@ -1262,7 +1274,7 @@ syntax to break or continue a loop other than the innermost one. EmitCode::lab(NextOuterLoop_labels[reason]); EmitCode::up(); - +

    §3.6.1.8. Place next outer loop label3.6.1.8 =

    @@ -1546,6 +1558,14 @@ in the domain \(\lbrace x\mid \phi(x)\rbrace\).

    Initialisation before TOTAL search3.6.1.14 =

    +
    +    proposition = DeferredPropositions::compile_loop_header(0, var_ix_lv[0],
    +        proposition, FALSE, FALSE, pdef);
    +
    + +

    §3.6.1.15. Initialisation before TOTAL REAL search3.6.1.15 = +

    +
         proposition = DeferredPropositions::compile_loop_header(0, var_ix_lv[0],
             proposition, FALSE, FALSE, pdef);
    @@ -1587,7 +1607,35 @@ which until runtime — when its identity will be found in the Inter variabl
         Jump to next outer loop for this reason3.6.1.4.2.2.1;
     
    -

    §3.6.1.15. Winding-up after TOTAL search3.6.1.15 = +

    §3.6.1.4.2.6. Act on successful match in TOTAL REAL search3.6.1.4.2.6 = +

    + +
    +    EmitCode::inv(STORE_BIP);
    +    EmitCode::down();
    +        EmitCode::ref_symbol(K_value, total_s);
    +        EmitCode::call(Hierarchy::find(REAL_NUMBER_TY_PLUS_HL));
    +        EmitCode::down();
    +            EmitCode::val_symbol(K_value, total_s);
    +            EmitCode::inv(PROPERTYVALUE_BIP);
    +            EmitCode::down();
    +                EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
    +                EmitCode::val_symbol(K_value, var_s[0]);
    +                if (multipurpose_function) {
    +                    EmitCode::val_iname(K_value,
    +                        Hierarchy::find(PROPERTY_TO_BE_TOTALLED_HL));
    +                } else {
    +                    prn = RETRIEVE_POINTER_property(pdef->defn_ref);
    +                    EmitCode::val_iname(K_value, RTProperties::iname(prn));
    +                }
    +            EmitCode::up();
    +        EmitCode::up();
    +    EmitCode::up();
    +
    +    Jump to next outer loop for this reason3.6.1.4.2.2.1;
    +
    + +

    §3.6.1.16. Winding-up after TOTAL search3.6.1.16 =

    @@ -1597,7 +1645,17 @@ which until runtime — when its identity will be found in the Inter variabl
         EmitCode::up();
     
    -

    §3.6.1.16. Adaptation to EXTREMAL. This is rather similar. We find the member of \(\lbrace x\mid \phi(x)\rbrace\) +

    §3.6.1.17. Winding-up after TOTAL REAL search3.6.1.17 = +

    + +
    +    EmitCode::inv(RETURN_BIP);
    +    EmitCode::down();
    +        EmitCode::val_symbol(K_value, total_s);
    +    EmitCode::up();
    +
    + +

    §3.6.1.18. Adaptation to EXTREMAL. This is rather similar. We find the member of \(\lbrace x\mid \phi(x)\rbrace\) which either minimises, or maximises, the value of some property \(P\). We use two local variables: best, the extreme \(P\) value found so far; and best_with, the member of the domain set which achieves that. @@ -1622,7 +1680,7 @@ maximising or minimising, at compile time; but for a multipurpose function we don't, and have to look that up at run-time.

    -

    Initialisation before EXTREMAL search3.6.1.16 = +

    Initialisation before EXTREMAL search3.6.1.18 =

    @@ -1678,7 +1736,7 @@ we don't, and have to look that up at run-time.
             proposition, FALSE, FALSE, pdef);
     
    -

    §3.6.1.4.2.6. It might look as if we could speed up the multipurpose case by +

    §3.6.1.4.2.7. It might look as if we could speed up the multipurpose case by multiplying by property_loop_sign, thus combining the max and min versions into one, and saving an if. But (a) the multiplication is as expensive as the if (remember that on a VM there's no real branch @@ -1687,7 +1745,7 @@ penalty), and (b) we need to watch out because \(-1\) times \(-32768\), on a multiplying by \(-1\) is order-reversing.

    -

    Act on successful match in EXTREMAL search3.6.1.4.2.6 = +

    Act on successful match in EXTREMAL search3.6.1.4.2.7 =

    @@ -1706,7 +1764,7 @@ multiplying by \(-1\) is order-reversing.
                     EmitCode::down();
                         EmitCode::inv(GE_BIP);
                         EmitCode::down();
    -                        Emit code for a property lookup3.6.1.4.2.6.1;
    +                        Emit code for a property lookup3.6.1.4.2.7.1;
                             EmitCode::val_symbol(K_value, best_s);
                         EmitCode::up();
                         EmitCode::code();
    @@ -1714,7 +1772,7 @@ multiplying by \(-1\) is order-reversing.
                             EmitCode::inv(STORE_BIP);
                             EmitCode::down();
                                 EmitCode::ref_symbol(K_value, best_s);
    -                            Emit code for a property lookup3.6.1.4.2.6.1;
    +                            Emit code for a property lookup3.6.1.4.2.7.1;
                             EmitCode::up();
                             EmitCode::inv(STORE_BIP);
                             EmitCode::down();
    @@ -1730,7 +1788,7 @@ multiplying by \(-1\) is order-reversing.
                     EmitCode::down();
                         EmitCode::inv(LE_BIP);
                         EmitCode::down();
    -                        Emit code for a property lookup3.6.1.4.2.6.1;
    +                        Emit code for a property lookup3.6.1.4.2.7.1;
                             EmitCode::val_symbol(K_value, best_s);
                         EmitCode::up();
                         EmitCode::code();
    @@ -1738,7 +1796,7 @@ multiplying by \(-1\) is order-reversing.
                             EmitCode::inv(STORE_BIP);
                             EmitCode::down();
                                 EmitCode::ref_symbol(K_value, best_s);
    -                            Emit code for a property lookup3.6.1.4.2.6.1;
    +                            Emit code for a property lookup3.6.1.4.2.7.1;
                             EmitCode::up();
                             EmitCode::inv(STORE_BIP);
                             EmitCode::down();
    @@ -1755,7 +1813,7 @@ multiplying by \(-1\) is order-reversing.
                 if (def_prn_sign == 1) EmitCode::inv(GE_BIP);
                 else EmitCode::inv(LE_BIP);
                 EmitCode::down();
    -                Emit code for a property lookup3.6.1.4.2.6.1;
    +                Emit code for a property lookup3.6.1.4.2.7.1;
                     EmitCode::val_symbol(K_value, best_s);
                 EmitCode::up();
                 EmitCode::code();
    @@ -1763,7 +1821,7 @@ multiplying by \(-1\) is order-reversing.
                     EmitCode::inv(STORE_BIP);
                     EmitCode::down();
                         EmitCode::ref_symbol(K_value, best_s);
    -                    Emit code for a property lookup3.6.1.4.2.6.1;
    +                    Emit code for a property lookup3.6.1.4.2.7.1;
                     EmitCode::up();
                     EmitCode::inv(STORE_BIP);
                     EmitCode::down();
    @@ -1775,7 +1833,7 @@ multiplying by \(-1\) is order-reversing.
         }
     
    -

    §3.6.1.4.2.6.1. Emit code for a property lookup3.6.1.4.2.6.1 = +

    §3.6.1.4.2.7.1. Emit code for a property lookup3.6.1.4.2.7.1 =

    @@ -1792,8 +1850,8 @@ multiplying by \(-1\) is order-reversing.
             }
         EmitCode::up();
     
    - -

    §3.6.1.17. Winding-up after EXTREMAL search3.6.1.17 = +

    +

    §3.6.1.19. Winding-up after EXTREMAL search3.6.1.19 =

    @@ -1803,7 +1861,7 @@ multiplying by \(-1\) is order-reversing.
         EmitCode::up();
     
    -

    §3.6.1.18. Adaptation to LOOP. Here the proposition is used to iterate through the members of the domain +

    §3.6.1.20. Adaptation to LOOP. Here the proposition is used to iterate through the members of the domain set \(\lbrace x\mid \phi(x)\rbrace\). Two local variables exist: x and x_ix. One of the following is true:

    @@ -1829,7 +1887,7 @@ with x_ix equal domain.

    -

    §3.6.1.19. Snarkily, this is how we do it: +

    §3.6.1.21. Snarkily, this is how we do it:

    @@ -1849,7 +1907,7 @@ protected objectloopjump to enter a loop body bypassing its header. But the DM4,
     which defines I6, does not forbid this, and nor does Inter.
     

    -

    Initialisation before LOOP search3.6.1.19 = +

    Initialisation before LOOP search3.6.1.21 =

    @@ -1883,7 +1941,7 @@ which defines I6, does not forbid this, and nor does Inter.
             FALSE, FALSE, pdef);
     
    -

    §3.6.1.4.2.7. Act on successful match in LOOP search3.6.1.4.2.7 = +

    §3.6.1.4.2.8. Act on successful match in LOOP search3.6.1.4.2.8 =

    @@ -1893,7 +1951,7 @@ which defines I6, does not forbid this, and nor does Inter.
         EmitCode::up();
     
    -

    §3.6.1.20. Winding-up after LOOP search3.6.1.20 = +

    §3.6.1.22. Winding-up after LOOP search3.6.1.22 =

    @@ -1964,7 +2022,7 @@ kinds cannot be changed at run-time.
     
     
     i6_schema loop_schema;
    -pcalc_prop *DeferredPropositions::compile_loop_header(int var, local_variable *index_var,
    +pcalc_prop *DeferredPropositions::compile_loop_header(int var, local_variable *index_var,
         pcalc_prop *proposition,
         int avoid_parent_optimisation, int grouped, pcalc_prop_deferral *pdef) {
     
    diff --git a/docs/imperative-module/4-cl.html b/docs/imperative-module/4-cl.html
    index c570282e7..f1e3a46db 100644
    --- a/docs/imperative-module/4-cl.html
    +++ b/docs/imperative-module/4-cl.html
    @@ -249,13 +249,16 @@ the idea is roughly:
     

    -    StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BadRepeatDomain),
    -        "this describes a collection of values which can't be repeated through",
    -        "because the possible range is too large (or has no sensible ordering). "
    +    Problems::quote_source(1, current_sentence);
    +    Problems::quote_kind(2, K);
    +    StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BadRepeatDomain));
    +    Problems::issue_problem_segment(
    +        "In %1, you seem to want to repeat through all possible values which have "
    +        "the kind '%2', and there are just too many of those. "
             "For instance, you can 'repeat with D running through doors' because "
    -        "there are only a small number of doors and they can be put in order "
    -        "of creation. But you can't 'repeat with N running through numbers' "
    -        "because numbers are without end.");
    +        "there are only a small number of doors, but you can't 'repeat with N "
    +        "running through numbers' because numbers are without end.");
    +    Problems::issue_problem_end();
     
    • This code is used in §1.

    §2. Here we compile code to call D(v), on the variable fromv, or D(0) if diff --git a/docs/imperative-module/4-dtd.html b/docs/imperative-module/4-dtd.html index 0d2ca828d..098990955 100644 --- a/docs/imperative-module/4-dtd.html +++ b/docs/imperative-module/4-dtd.html @@ -86,8 +86,9 @@ at runtime. define LOOP_DOMAIN_DEFER 4 "repeat with I running through X" define NUMBER_OF_DEFER 5 "the number of X" define TOTAL_DEFER 6 "the total P of X" -define RANDOM_OF_DEFER 7 "a random X" -define LIST_OF_DEFER 8 "the list of X" +define TOTAL_REAL_DEFER 7 "the total P of X" +define RANDOM_OF_DEFER 8 "a random X" +define LIST_OF_DEFER 9 "the list of X" define MULTIPURPOSE_DEFER 100 potentially any of the above define MAX_CINDERS_PER_DEFERRAL 16

    @@ -483,8 +484,9 @@ states, times of day, and so on). define NUMBER_OF_DUSAGE -3 return the number of \(w\) such that \(\phi(w)\) define RANDOM_OF_DUSAGE -4 return a random \(w\) such that \(\phi(w)\), or 0 if none exists define TOTAL_DUSAGE -5 return the total value of a property among \(w\) such that \(\phi(w)\) -define EXTREMAL_DUSAGE -6 return the maximal property value among such \(w\) -define LIST_OF_DUSAGE -7 return the list of \(w\) such that \(\phi(w)\) +define TOTAL_REAL_DUSAGE -6 the same, but using real arithmetic +define EXTREMAL_DUSAGE -7 return the maximal property value among such \(w\) +define LIST_OF_DUSAGE -8 return the list of \(w\) such that \(\phi(w)\)

    §13. Multi-purpose description routines are pretty dandy, then, but they have one big drawback: they can't be passed cinders, because they might be called @@ -674,6 +676,15 @@ a loop traverses.

     int Deferrals::defer_total_of_matches(property *prn, parse_node *spec) {
         if (prn == NULL) internal_error("total of on non-property");
    +    kind *K = ValueProperties::kind(prn);
    +    int reason, usage;
    +    if (Kinds::FloatingPoint::uses_floating_point(K)) {
    +        reason = TOTAL_REAL_DEFER;
    +        usage = TOTAL_REAL_DUSAGE;
    +    } else {
    +        reason = TOTAL_DEFER;
    +        usage = TOTAL_DUSAGE;
    +    }
         if (Deferrals::spec_is_variable_of_kind_description(spec)) {
             EmitCode::inv(SEQUENTIAL_BIP);
             EmitCode::down();
    @@ -686,15 +697,14 @@ a loop traverses.
                 EmitCode::inv(INDIRECT1_BIP);
                 EmitCode::down();
                     CompileValues::to_code_val(spec);
    -                EmitCode::val_number((inter_ti) TOTAL_DUSAGE);
    +                EmitCode::val_number((inter_ti) usage);
                 EmitCode::up();
             EmitCode::up();
         } else {
             pcalc_prop *prop = SentencePropositions::from_spec(spec);
             CompilePropositions::verify_descriptive(prop,
                 "a total property value for things matching a description", spec);
    -        Deferrals::call_deferred_fn(prop, TOTAL_DEFER,
    -            STORE_POINTER_property(prn), NULL);
    +        Deferrals::call_deferred_fn(prop, reason, STORE_POINTER_property(prn), NULL);
         }
         return TRUE;
     }
    diff --git a/docs/imperative-module/5-ci.html b/docs/imperative-module/5-ci.html
    index e2853adcd..27b966da1 100644
    --- a/docs/imperative-module/5-ci.html
    +++ b/docs/imperative-module/5-ci.html
    @@ -62,7 +62,7 @@ function togglePopup(material_id) {
     
     

    §1. Upper level: compiling from whole lists. Here, we are given an invocation list invl, and we must generate Inter code to carry it out. The code in this section does some complicated things; the -test grpup :invocations may be helpful when maintaining it. +test group :invocations may be helpful when maintaining it.

    diff --git a/docs/knowledge-module/2-ins.html b/docs/knowledge-module/2-ins.html
    index 9439c2aef..cbc2f49eb 100644
    --- a/docs/knowledge-module/2-ins.html
    +++ b/docs/knowledge-module/2-ins.html
    @@ -339,7 +339,7 @@ specialised than which other ones, and by making a call, we can find out.
     

    -kind *Instances::to_kind(instance *I) {
    +kind *Instances::to_kind(instance *I) {
         if (I == NULL) return NULL;
         inference_subject *inherits_from = InferenceSubjects::narrowest_broader_subject(I->as_subject);
         return KindSubjects::to_kind(inherits_from);
    diff --git a/docs/knowledge-module/4-is2.html b/docs/knowledge-module/4-is2.html
    index 46f30eb5e..decb9dd47 100644
    --- a/docs/knowledge-module/4-is2.html
    +++ b/docs/knowledge-module/4-is2.html
    @@ -94,7 +94,7 @@ a go-between.
             InstanceSubjects::family(), STORE_POINTER_instance(I), NULL);
     }
     
    -instance *InstanceSubjects::to_instance(inference_subject *infs) {
    +instance *InstanceSubjects::to_instance(inference_subject *infs) {
         if ((infs) && (infs->infs_family == instances_family))
             return RETRIEVE_POINTER_instance(infs->represents);
         return NULL;
    diff --git a/docs/knowledge-module/4-rs.html b/docs/knowledge-module/4-rs.html
    index 5cb1b753e..1f062c406 100644
    --- a/docs/knowledge-module/4-rs.html
    +++ b/docs/knowledge-module/4-rs.html
    @@ -85,7 +85,7 @@ function togglePopup(material_id) {
             STORE_POINTER_binary_predicate(bp), NULL);
     }
     
    -binary_predicate *RelationSubjects::to_bp(inference_subject *infs) {
    +binary_predicate *RelationSubjects::to_bp(inference_subject *infs) {
         if ((infs) && (infs->infs_family == relations_family))
             return RETRIEVE_POINTER_binary_predicate(infs->represents);
         return NULL;
    diff --git a/docs/knowledge-module/5-inf.html b/docs/knowledge-module/5-inf.html
    index f5392ece1..046609f3e 100644
    --- a/docs/knowledge-module/5-inf.html
    +++ b/docs/knowledge-module/5-inf.html
    @@ -108,7 +108,7 @@ allow them to be read.
         return i->family;
     }
     
    -parse_node *Inferences::where_inferred(inference *i) {
    +parse_node *Inferences::where_inferred(inference *i) {
         return i->inferred_from;
     }
     
    diff --git a/docs/knowledge-module/5-ri.html b/docs/knowledge-module/5-ri.html
    index 5f3aa19bd..2aa2a0ced 100644
    --- a/docs/knowledge-module/5-ri.html
    +++ b/docs/knowledge-module/5-ri.html
    @@ -169,7 +169,7 @@ knowing both of them elsewhere: the inference machinery can't do so for it.
     

    -void RelationInferences::get_term_subjects(inference *i,
    +void RelationInferences::get_term_subjects(inference *i,
         inference_subject **subj1, inference_subject **infs2) {
         if ((i == NULL) || (i->family != relation_inf)) internal_error("not a relation inf");
         relation_inference_data *data = RETRIEVE_POINTER_relation_inference_data(i->data);
    diff --git a/docs/knowledge-module/5-tmw.html b/docs/knowledge-module/5-tmw.html
    index 401e5d190..b81626121 100644
    --- a/docs/knowledge-module/5-tmw.html
    +++ b/docs/knowledge-module/5-tmw.html
    @@ -139,6 +139,7 @@ may be added.
             InferenceSubjects::check_model(infs);
             Check that properties are permitted4.1;
             Check that properties are not contradictory4.2;
    +        Check that relations are permitted4.3;
         }
         World::ask_plugins_at_stage(WORLD_STAGE_IV);
     }
    @@ -282,6 +283,67 @@ about the Portal, to stand.
             "true, there is no way to override that for particular things of the kind.");
     
    +

    §4.3. This is a last line of defence. Suppose we define "to connect to" as a relation +between things and things, and then write "X connects to Y". Inform must clearly +check that X and Y are both things. It does indeed make some checks along those +lines earlier on in compilation, but there are objects whose kinds are not known +until model completion time — in particular, there can be objects which might +be things or might be rooms, so that we cannot know if "X connects to Y" is +legal until after the model is completed. +

    + +

    But that's now! And so we make one last check, just in case. +

    + +

    Check that relations are permitted4.3 = +

    + +
    +    inference *inf;
    +    POSITIVE_KNOWLEDGE_LOOP(inf, infs, relation_inf) {
    +        binary_predicate *bp = RelationSubjects::to_bp(infs);
    +        inference_subject *left_infs = NULL;
    +        inference_subject *right_infs = NULL;
    +        RelationInferences::get_term_subjects(inf, &left_infs, &right_infs);
    +        instance *left_instance = InstanceSubjects::to_instance(left_infs);
    +        instance *right_instance = InstanceSubjects::to_instance(right_infs);
    +        kind *left_kind = Instances::to_kind(left_instance);
    +        kind *right_kind = Instances::to_kind(right_instance);
    +        kind *left_needed_kind = BinaryPredicates::term_kind(bp, 0);
    +        kind *right_needed_kind = BinaryPredicates::term_kind(bp, 1);
    +        if ((left_instance) && (Kinds::conforms_to(left_kind, left_needed_kind) == FALSE)) {
    +            current_sentence = Inferences::where_inferred(inf);
    +            Problems::quote_source(1, current_sentence);
    +            Problems::quote_object(2, left_instance);
    +            Problems::quote_kind(3, left_kind);
    +            Problems::quote_kind(4, left_needed_kind);
    +            Problems::quote_kind(5, right_needed_kind);
    +            StandardProblems::handmade_problem(Task::syntax_tree(),
    +                _p_(PM_LateLeftTermWrongKind));
    +            Problems::issue_problem_segment(
    +                "You wrote %1, but I think the kind of %2 is %3, and not %4, "
    +                "which is what this relationship would need it to be. (It "
    +                "relates %4 to %5.)");
    +            Problems::issue_problem_end();
    +        }
    +        if ((right_instance) && (Kinds::conforms_to(right_kind, right_needed_kind) == FALSE)) {
    +            current_sentence = Inferences::where_inferred(inf);
    +            Problems::quote_source(1, current_sentence);
    +            Problems::quote_object(2, right_instance);
    +            Problems::quote_kind(3, right_kind);
    +            Problems::quote_kind(4, left_needed_kind);
    +            Problems::quote_kind(5, right_needed_kind);
    +            StandardProblems::handmade_problem(Task::syntax_tree(),
    +                _p_(PM_LateRightTermWrongKind));
    +            Problems::issue_problem_segment(
    +                "You wrote %1, but I think the kind of %2 is %3, and not %5, "
    +                "which is what this relationship would need it to be. (It "
    +                "relates %4 to %5.)");
    +            Problems::issue_problem_end();
    +        }
    +    }
    +
    +
    • This code is used in §4.

    §5. Stage V. A final chance to add properties which may assist the run-time implementation of whatever a plugin is concerned with, but which is not allowed to make changes to the model as it would be understood by the author. diff --git a/docs/lexicon-module/1-lm.html b/docs/lexicon-module/1-lm.html index 246b2285a..7cfa496ba 100644 --- a/docs/lexicon-module/1-lm.html +++ b/docs/lexicon-module/1-lm.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {

  • inform6
  • inpolicy
  • inrtps
  • -
  • extensions and kits
  • +

    Resources

    Repository

    Related Projects

      @@ -110,7 +112,7 @@ syntax tree.
       void LexiconModule::write_meaning_ANNOT(text_stream *OUT, parse_node *p) {
           if (Node::get_meaning(p)) {
      -        WRITE("{meaning: ");
      +        WRITE(" {meaning: ");
               ExcerptMeanings::log(OUT, Node::get_meaning(p));
               WRITE("}");
           }
      diff --git a/docs/lexicon-module/1-lxc.html b/docs/lexicon-module/1-lxc.html
      index 2acfe05e2..a5896f33f 100644
      --- a/docs/lexicon-module/1-lxc.html
      +++ b/docs/lexicon-module/1-lxc.html
      @@ -41,7 +41,9 @@ function togglePopup(material_id) {
       
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/lexicon-module/2-em.html b/docs/lexicon-module/2-em.html index 5d0c501b4..264f2b0fe 100644 --- a/docs/lexicon-module/2-em.html +++ b/docs/lexicon-module/2-em.html @@ -55,7 +55,9 @@ MathJax = {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/lexicon-module/2-pe.html b/docs/lexicon-module/2-pe.html index 2cbf02be0..f6eb1b7b9 100644 --- a/docs/lexicon-module/2-pe.html +++ b/docs/lexicon-module/2-pe.html @@ -41,7 +41,9 @@ function togglePopup(material_id) {
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/lexicon-module/P-htitm.html b/docs/lexicon-module/P-htitm.html index d5c593cf0..39844f62e 100644 --- a/docs/lexicon-module/P-htitm.html +++ b/docs/lexicon-module/P-htitm.html @@ -33,7 +33,9 @@
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/lexicon-module/P-wtmd.html b/docs/lexicon-module/P-wtmd.html index a8b962734..b53aea818 100644 --- a/docs/lexicon-module/P-wtmd.html +++ b/docs/lexicon-module/P-wtmd.html @@ -33,7 +33,9 @@
    • inform6
    • inpolicy
    • inrtps
    • -
    • extensions and kits
    • +

    Resources

    Repository

    Related Projects

      @@ -179,14 +181,14 @@ number of successes.
     Size of lexicon: 3100 excerpt meanings
    -  Stored among 839 words out of total vocabulary of 10562
    +  Stored among 839 words out of total vocabulary of 10564
       709 words have a start list: longest belongs to report (with 293 meanings)
       15 words have an end list: longest belongs to case (with 6 meanings)
       29 words have a middle list: longest belongs to to (with 4 meanings)
       108 words have a subset list: longest belongs to street (with 4 meanings)
     
    -Number of attempts to retrieve: 106231
    -  of which unsuccessful: 88619
    +Number of attempts to retrieve: 106257
    +  of which unsuccessful: 88645
       of which successful: 17612
     
     Total attempts to match against excerpt meanings: 253682
    diff --git a/docs/lexicon-module/index.html b/docs/lexicon-module/index.html
    index 66a98ab0e..1d199b315 100644
    --- a/docs/lexicon-module/index.html
    +++ b/docs/lexicon-module/index.html
    @@ -31,7 +31,9 @@
     
  • inform6
  • inpolicy
  • inrtps
  • -
  • extensions and kits
  • +

    Resources

    Repository

    Related Projects

      diff --git a/docs/values-module/5-dsh.html b/docs/values-module/5-dsh.html index bc628062f..d52185941 100644 --- a/docs/values-module/5-dsh.html +++ b/docs/values-module/5-dsh.html @@ -280,6 +280,7 @@ are used correctly. int Dash::check_invl(parse_node *p) { LOGIF(MATCHING, "Dash (1): invocation list '%W'\n", Node::get_text(p)); + LOGIF(MATCHING, "p = $T\n", p); return Dash::funnel_to_level_2(p, FALSE); } @@ -485,7 +486,7 @@ from a text substitution.) Produce the token for a phrase deciding a value9.1.1.3.1.2 else Produce the token for a constant rvalue9.1.1.3.1.3; - } else Problems::issue_problem_segment("%1 = <i>%2</i>"); + } else Problems::issue_problem_segment("%1 = %2"); Problems::issue_problem_end();
    @@ -493,27 +494,27 @@ from a text substitution.)

    -    Problems::issue_problem_segment("%1 = <i>%2</i>, holding <i>%3</i>");
    +    Problems::issue_problem_segment("%1 = %2, holding %3");
     

    §9.1.1.3.1.2. Produce the token for a phrase deciding a value9.1.1.3.1.2 =

    -    char *seg = "%1 = an instruction to work out <i>%3</i>";
    +    char *seg = "%1 = an instruction to work out %3";
         if (K == NULL) seg = "%1 = a phrase";
         parse_node *found_invl = itpt->as_parsed->down;
         parse_node *inv;
         LOOP_THROUGH_ALTERNATIVES(inv, found_invl) {
             LOG("$e\n", inv);
             if (Dash::reading_passed(inv) == FALSE) {
    -            seg = "%1 = an instruction I think should work out <i>%3</i>, "
    +            seg = "%1 = an instruction I think should work out %3, "
                     "but which I can't make sense of";
                 for (int i=0; i<Invocations::get_no_tokens(inv); i++) {
                     parse_node *tok = Invocations::get_token_as_parsed(inv, i);
                     if (Node::is(tok, UNKNOWN_NT)) {
                         Problems::quote_wording(4, Node::get_text(tok));
    -                    seg = "%1 = an instruction I think should work out <i>%3</i>, "
    +                    seg = "%1 = an instruction I think should work out %3, "
                             "but which I can't perform because '%4' doesn't make sense here";
                         break;
                     }
    @@ -527,13 +528,13 @@ from a text substitution.)
     

    -    char *seg = "%1 = <i>%3</i>";
    +    char *seg = "%1 = %3";
         if (Rvalues::is_CONSTANT_construction(itpt->as_parsed, CON_property)) {
             property *prn = Node::get_constant_property(itpt->as_parsed);
             if (Properties::is_value_property(prn)) {
                 binary_predicate *bp = ValueProperties::get_stored_relation(prn);
                 if (bp) {
    -                seg = "%1 = <i>%3</i>, which is used to store %4, "
    +                seg = "%1 = %3, which is used to store %4, "
                         "but is not the same thing as the relation itself";
                     Problems::quote_relation(4, bp);
                 }
    @@ -1203,6 +1204,16 @@ checking.
         LOGIF(MATCHING, "Winnow %s from $T\n",
             (invocational)?"invocationally":"regularly", Dash_ambiguity_list);
     
    +    if (invocational) {
    +        int dubious = FALSE;
    +        for (int ref = 0; ref<no_of_possible_readings; ref++) {
    +            parse_node *inv = list_of_possible_readings[ref];
    +            if (Node::is(inv, INVOCATION_NT) == FALSE)
    +                dubious = TRUE;
    +        }
    +        if (dubious) Issue the dubious ambiguity problem message10.9.2.3.1.1;
    +    }
    +
         if (invocational) Dash_ambiguity_list->down = NULL;
     
         parse_node *last_survivor = NULL;
    @@ -1235,12 +1246,33 @@ checking.
                     else if (nfi != nti) number_ambiguity = TRUE;
                 }
     
    -        if (number_ambiguity) Issue the number ambiguity problem message10.9.2.3.1.1;
    +        if (number_ambiguity) Issue the number ambiguity problem message10.9.2.3.1.2;
         }
         LOGIF(MATCHING, "After winnowing, CS is $T\n", current_sentence);
     
    -

    §10.9.2.3.1.1. This is another sort of error which couldn't happen with a conventional +

    §10.9.2.3.1.1. This is a last-throw-of-the-dice problem message, designed to pick up just +a few really awkward ambiguities which have been missed elsewhere in the parser +or in Dash. +

    + +

    Issue the dubious ambiguity problem message10.9.2.3.1.1 = +

    + +
    +    THIS_IS_AN_ORDINARY_PROBLEM;
    +    Problems::quote_source(1, current_sentence);
    +    Problems::quote_number(2, &no_of_possible_readings);
    +    Problems::quote_wording(3, Node::get_text(list_of_possible_readings[0]));
    +    StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_DubiousAmbiguity));
    +    Problems::issue_problem_segment(
    +        "The phrase %1 is ambiguous in a way that I can't sort out. "
    +        "I can see %2 different meanings of '%3', and no good way to choose.");
    +    Problems::issue_problem_end();
    +    return NEVER_MATCH;
    +
    + +

    §10.9.2.3.1.2. This is another sort of error which couldn't happen with a conventional programming language — in C, for instance, it's syntactically obvious how many arguments a function call has, because the brackets and commas are unambiguous. But in Inform, there are no reserved tokens of syntax @@ -1249,7 +1281,7 @@ list which have different numbers of arguments to each other, and there's no way safely to adjudicate that at run-time.

    -

    Issue the number ambiguity problem message10.9.2.3.1.1 = +

    Issue the number ambiguity problem message10.9.2.3.1.2 =

    @@ -2523,6 +2555,24 @@ a property when recovering from other problems.
                     "since the entry is taken from something which isn't a table.");
                 return NEVER_MATCH;
             }
    +        if ((K_snippet) &&
    +            (Kinds::eq(key_kind, K_snippet)) && (Kinds::eq(col_contents_kind, K_text))) {
    +            THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM;
    +            Problems::quote_source(1, current_sentence);
    +            Problems::quote_kind(2, col_contents_kind);
    +            Problems::quote_kind(3, key_kind);
    +            Problems::quote_wording(4, Node::get_text(p->down->next->next));
    +            StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_TableCorrFruitless2));
    +            Problems::issue_problem_segment(
    +                "In the sentence %1, you seem to be looking up a corresponding "
    +                "entry in a table: but you're looking up a snippet of a command "
    +                "(%3) in a column of text. Although those look the same, they "
    +                "really aren't, and no match can be made. (You might be able to "
    +                "fix matters by converting the snippet to text, say writing '\"[%4]\"' "
    +                "in place of '%4'.)");
    +            Problems::issue_problem_end();
    +            return NEVER_MATCH;
    +        }
             if (Kinds::compatible(key_kind, col_contents_kind) == NEVER_MATCH) {
                 THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM;
                 Problems::quote_source(1, current_sentence);
    diff --git a/inform7/Downloads/preform-diagnostics.txt b/inform7/Downloads/preform-diagnostics.txt
    index 27368840b..62b472a15 100644
    --- a/inform7/Downloads/preform-diagnostics.txt
    +++ b/inform7/Downloads/preform-diagnostics.txt
    @@ -5048,7 +5048,7 @@
      hits 33/108264 nti 21 constraint CS = {21} extremes [1, 1]
         English:
             there 
    -          (hits 33/132) (matched: 'there') constraint CS = {21} extremes [1, 1]
    +          (hits 33/133) (matched: 'there') constraint CS = {21} extremes [1, 1]
     
      hits 2082/4164 nti 14 constraint (none) extremes [1, infinity)
         English:
    @@ -6138,17 +6138,15 @@
               constraint DS = {14} extremes [3, infinity)
              
               constraint DS = {14} extremes [2, infinity)
    +        {...} 
    +          constraint (none) extremes [1, infinity)
     
      nti 14 constraint DS = {14} extremes [2, infinity)
         English:
             in  
               constraint DS = {14} extremes [2, infinity)
    -        in {...} 
    -          constraint DS = {14} extremes [2, infinity)
             holding/and/,  
               constraint DS = {14} extremes [2, infinity)
    -        holding/and/, {...} 
    -          constraint DS = {14} extremes [2, infinity)
             with {...} 
               constraint DS = {14} extremes [2, infinity)
     
    @@ -7407,6 +7405,8 @@
         English:
             ( {***} ) 
               (hits 0/3) constraint DS = {21} extremes [2, infinity)
    +        topic ( {...} ) 
    +          (hits 0/2) constraint DS = {21} extremes [4, infinity)
              ( {...} ) 
               (hits 0/2) constraint DS = {21} extremes [4, infinity)
              ( {...} ) 
    @@ -7965,9 +7965,9 @@
      hits 3126/7782 nti 23 constraint (none) extremes [1, infinity)
         English:
              variable/variables 
    -          (hits 2/633) (matched: 'text variables') constraint DS = {23} extremes [2, infinity)
    +          (hits 2/636) (matched: 'text variables') constraint DS = {23} extremes [2, infinity)
              that/which vary/varies 
    -          (hits 59/430) (matched: 'action name based rule producing nothing that varies') constraint DS = {23} extremes [3, infinity)
    +          (hits 59/433) (matched: 'action name based rule producing nothing that varies') constraint DS = {23} extremes [3, infinity)
              
               (hits 2442/3830) (matched long text) constraint (none) extremes [1, infinity)
              
    @@ -9068,6 +9068,8 @@
     
      hits 90/920 nti 23 constraint DS = {23} extremes [1, infinity)
         English:
    +        action based {...} 
    +          (hits 0/397) constraint DS = {23} extremes [3, infinity)
             action  
               (hits 90/460) (matched long text) constraint DS = {23} extremes [1, infinity)
             action 
    @@ -9842,9 +9844,9 @@
               
               (hits 0/509) constraint (none) extremes [2, infinity)
             text  
    -          (hits 0/231) constraint DS = {20, 21} extremes [3, infinity)
    +          (hits 0/232) constraint DS = {20, 21} extremes [3, infinity)
             binary  
    -          (hits 0/231) constraint DS = {20, 21} extremes [3, infinity)
    +          (hits 0/232) constraint DS = {20, 21} extremes [3, infinity)
              
               (hits 0/263) constraint DS = {20} extremes [2, infinity)
     
    diff --git a/inform7/Downloads/syntax-diagnostics.txt b/inform7/Downloads/syntax-diagnostics.txt
    index c1c73113a..8a227f671 100644
    --- a/inform7/Downloads/syntax-diagnostics.txt
    +++ b/inform7/Downloads/syntax-diagnostics.txt
    @@ -410,7 +410,7 @@ ROOT_NT
                             COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
                         SENTENCE_NT'startup rules have outcomes allow startup ( success ) and de' {unit: 0} {classified}
                             VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                        PROPER_NOUN_NT'startup rules' {refined} {eval: CONSTANT_NT'startup rules' {kind: rulebook} {rulebook: startup}{meaning: {startup rules = RULEBOOK_MC}}}
    +                        PROPER_NOUN_NT'startup rules' {refined} {eval: CONSTANT_NT'startup rules' {kind: rulebook} {rulebook: startup} {meaning: {startup rules = RULEBOOK_MC}}}
                             RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                 PROPERTY_LIST_NT'and' {refined}
                                     UNPARSED_NOUN_NT'outcomes allow startup ( success )'
    @@ -1599,12 +1599,12 @@ ROOT_NT
                     HEADING_NT'section 1 - grammatical definitions' {heading 5} {under: H5'section 1 - grammatical definitions'} {unit: 1}
                         SENTENCE_NT'the language of play is a natural language that varies' {unit: 1} {classified}
                             VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    -                        PROPER_NOUN_NT'language of play' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'language of play' {nonlocal: 'language of play'(var)natural language}{meaning: {language of play = VARIABLE_MC}}}
    +                        PROPER_NOUN_NT'language of play' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'language of play' {nonlocal: 'language of play'(var)natural language} {meaning: {language of play = VARIABLE_MC}}}
                             COMMON_NOUN_NT'natural language that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=natural languages variable-pointer(x) >>} {eval: TEST_VALUE_NT}
                         SENTENCE_NT'the language of play is usually the english language' {unit: 1} {classified}
                             VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
    -                        PROPER_NOUN_NT'language of play' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'language of play' {nonlocal: 'language of play'(var)natural language}{meaning: {language of play = VARIABLE_MC}}}
    -                        PROPER_NOUN_NT'english language' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'english language'} {eval: CONSTANT_NT'english language' {kind: natural language} {instance: I2'english language'[natural language]} {enumeration: 0}{meaning: {english language = NAMED_CONSTANT_MC}}}
    +                        PROPER_NOUN_NT'language of play' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'language of play' {nonlocal: 'language of play'(var)natural language} {meaning: {language of play = VARIABLE_MC}}}
    +                        PROPER_NOUN_NT'english language' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'english language'} {eval: CONSTANT_NT'english language' {kind: natural language} {instance: I2'english language'[natural language]} {enumeration: 0} {meaning: {english language = NAMED_CONSTANT_MC}}}
                         SENTENCE_NT'a grammatical tense is a kind of value' {unit: 1} {classified}
                             VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                             COMMON_NOUN_NT'grammatical tense' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=grammatical tense(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}
    @@ -1651,9 +1651,9 @@ ROOT_NT
                         SENTENCE_NT'the adaptive text viewpoint of the english language is first' {unit: 1} {classified} {interpretation of subject: infs'natural language'-k}
                             VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                             X_OF_Y_NT'adaptive text viewpoint of the english language' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                            PROPER_NOUN_NT'english language' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'english language'} {eval: CONSTANT_NT'english language' {kind: natural language} {instance: I2'english language'[natural language]} {enumeration: 0}{meaning: {english language = NAMED_CONSTANT_MC}}}
    +                            PROPER_NOUN_NT'english language' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'english language'} {eval: CONSTANT_NT'english language' {kind: natural language} {instance: I2'english language'[natural language]} {enumeration: 0} {meaning: {english language = NAMED_CONSTANT_MC}}}
                                 PROPER_NOUN_NT'adaptive text viewpoint' {refined} {eval: CONSTANT_NT {kind: narrative viewpoints valued property} {property: 'adaptive text viewpoint'=narrative viewpoint}}
    -                        PROPER_NOUN_NT'first person plural' {refined} {refers: infs'first person plural'} {eval: CONSTANT_NT'first person plural' {kind: narrative viewpoint} {instance: I14'first person plural'[narrative viewpoint]} {enumeration: 0}{meaning: {first person plural = NAMED_CONSTANT_MC}}}
    +                        PROPER_NOUN_NT'first person plural' {refined} {refers: infs'first person plural'} {eval: CONSTANT_NT'first person plural' {kind: narrative viewpoint} {instance: I14'first person plural'[narrative viewpoint]} {enumeration: 0} {meaning: {first person plural = NAMED_CONSTANT_MC}}}
                         SENTENCE_NT'a grammatical case is a kind of value' {unit: 1} {classified} {interpretation of subject: infs'natural language'-k}
                             VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                             COMMON_NOUN_NT'grammatical case' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=grammatical case(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}
    @@ -2539,14 +2539,14 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'those in the accusative'
                                         INVOCATION_NT'those in the accusative' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'accusative' {token to be parsed against: TEST_VALUE_NT'grammatical case'} {required: grammatical case}
    -                                            CONSTANT_NT'accusative' {kind: grammatical case} {instance: I18'accusative'[grammatical case]} {enumeration: 0}{meaning: {accusative = NAMED_CONSTANT_MC}}
    +                                            CONSTANT_NT'accusative' {kind: grammatical case} {instance: I18'accusative'[grammatical case]} {enumeration: 0} {meaning: {accusative = NAMED_CONSTANT_MC}}
                         IMPERATIVE_NT'to say those' {unit: 1} {imperative definition: 333}
                             CODE_BLOCK_NT
                                 CODE_BLOCK_NT'say those in the nominative' {control structure: SAY}
                                     INVOCATION_LIST_SAY_NT'those in the nominative'
                                         INVOCATION_NT'those in the nominative' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'nominative' {token to be parsed against: TEST_VALUE_NT'grammatical case'} {required: grammatical case}
    -                                            CONSTANT_NT'nominative' {kind: grammatical case} {instance: I17'nominative'[grammatical case]} {enumeration: 0}{meaning: {nominative = NAMED_CONSTANT_MC}}
    +                                            CONSTANT_NT'nominative' {kind: grammatical case} {instance: I17'nominative'[grammatical case]} {enumeration: 0} {meaning: {nominative = NAMED_CONSTANT_MC}}
                         IMPERATIVE_NT'to say those in ( case - grammatical case )' {unit: 1} {imperative definition: 334}
                             CODE_BLOCK_NT
                                 CODE_BLOCK_NT {control structure: IF}
    @@ -2560,7 +2560,7 @@ ROOT_NT
                                                 NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                     UNKNOWN_NT'item'
                                                 RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                         CODE_BLOCK_NT {control structure: IF}
                                             INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 2}
                                                 INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -2625,7 +2625,7 @@ ROOT_NT
                                                 NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                     UNKNOWN_NT'item'
                                                 RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                         CODE_BLOCK_NT {control structure: IF}
                                             INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 2}
                                                 INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -2697,7 +2697,7 @@ ROOT_NT
                                                 NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                     UNKNOWN_NT'item'
                                                 RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                         CODE_BLOCK_NT {control structure: IF}
                                             INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 2}
                                                 INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -2762,7 +2762,7 @@ ROOT_NT
                                                 NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                     UNKNOWN_NT'item'
                                                 RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                         CODE_BLOCK_NT {control structure: IF}
                                             INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 2}
                                                 INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -2828,7 +2828,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -2894,7 +2894,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -2960,7 +2960,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3026,7 +3026,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3092,7 +3092,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3158,7 +3158,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3224,7 +3224,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3290,7 +3290,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3356,7 +3356,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3422,7 +3422,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3488,7 +3488,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3557,7 +3557,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the prior naming context is plural' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the prior naming context is plural' {phrase invoked: }
    @@ -3722,7 +3722,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the item is the player' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the item is the player' {phrase invoked: }
    @@ -3768,7 +3768,7 @@ ROOT_NT
                                         NEW_LOCAL_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                             UNKNOWN_NT'item'
                                         RVALUE_CONTEXT_NT'prior named object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object}{meaning: {prior named object = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'prior named object' {nonlocal: 'prior named object'(var)object} {meaning: {prior named object = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the item is the player' {colon_block_command} {unit: 1} {indent: 1}
                                         INVOCATION_NT'if the item is the player' {phrase invoked: }
    @@ -5255,7 +5255,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'text that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=texts variable-pointer(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'the command prompt is ">"' {unit: 2} {classified}
                                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'command prompt' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'command prompt' {nonlocal: 'command prompt'(var)text}{meaning: {command prompt = VARIABLE_MC}}}
    +                                PROPER_NOUN_NT'command prompt' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'command prompt' {nonlocal: 'command prompt'(var)text} {meaning: {command prompt = VARIABLE_MC}}}
                                     PROPER_NOUN_NT'">"' {refined} {eval: CONSTANT_NT'">"' {kind: text}}
                                 SENTENCE_NT'the left hand status line -- documented at var_sl -- is a te' {unit: 2} {classified}
                                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    @@ -5318,15 +5318,15 @@ ROOT_NT
                                     COMMON_NOUN_NT'number variables' {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=numbers variable-pointer(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'the release number is usually 1' {unit: 2} {classified}
                                     VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'release number' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'release number' {nonlocal: 'release number'(const)number}{meaning: {release number = VARIABLE_MC}}}
    +                                PROPER_NOUN_NT'release number' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'release number' {nonlocal: 'release number'(const)number} {meaning: {release number = VARIABLE_MC}}}
                                     PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: text} {explicit literal} {number: 1}}
                                 SENTENCE_NT'the story headline is usually "An Interactive Fiction"' {unit: 2} {classified}
                                     VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'story headline' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'story headline' {nonlocal: 'story headline'(const)text}{meaning: {story headline = VARIABLE_MC}}}
    +                                PROPER_NOUN_NT'story headline' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'story headline' {nonlocal: 'story headline'(const)text} {meaning: {story headline = VARIABLE_MC}}}
                                     PROPER_NOUN_NT'"An Interactive Fiction"' {refined} {eval: CONSTANT_NT'"An Interactive Fiction"' {kind: text}}
                                 SENTENCE_NT'the story genre is usually "Fiction"' {unit: 2} {classified}
                                     VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'story genre' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'story genre' {nonlocal: 'story genre'(const)text}{meaning: {story genre = VARIABLE_MC}}}
    +                                PROPER_NOUN_NT'story genre' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'story genre' {nonlocal: 'story genre'(const)text} {meaning: {story genre = VARIABLE_MC}}}
                                     PROPER_NOUN_NT'"Fiction"' {refined} {eval: CONSTANT_NT'"Fiction"' {kind: text}}
                                 SENTENCE_NT'the story title variable translates into inter as Story' {unit: 2} {classified}
                                     VERB_NT'translates into' {verb 'translate' 3p s act IS_TENSE +ve} {prep1: into} {prep2: as} {special meaning: translates-into-i6} {category: 3}
    @@ -5414,7 +5414,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'the action-processing rulebook has a person called the actor' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'action-processing rulebook' {kind: rulebook} {rulebook: action-processing}{meaning: {action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'action-processing rulebook' {kind: rulebook} {rulebook: action-processing} {meaning: {action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}
    @@ -5429,42 +5429,42 @@ ROOT_NT
                                     COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'the specific action-processing rulebook has a truth state ca' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing}{meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing} {meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'truth state' {indefinite 'a' n/m/f nom/acc s}
                                             UNPARSED_NOUN_NT'action in world'
                                 SENTENCE_NT'the specific action-processing rulebook has a truth state ca' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing}{meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing} {meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'truth state' {indefinite 'a' n/m/f nom/acc s}
                                             UNPARSED_NOUN_NT'action keeping silent'
                                 SENTENCE_NT'the specific action-processing rulebook has a rulebook calle' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing}{meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing} {meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s}
                                             UNPARSED_NOUN_NT'specific check rulebook'
                                 SENTENCE_NT'the specific action-processing rulebook has a rulebook calle' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing}{meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing} {meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s}
                                             UNPARSED_NOUN_NT'specific carry out rulebook'
                                 SENTENCE_NT'the specific action-processing rulebook has a rulebook calle' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing}{meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing} {meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s}
                                             UNPARSED_NOUN_NT'specific report rulebook'
                                 SENTENCE_NT'the specific action-processing rulebook has a truth state ca' {unit: 2} {classified}
                                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing}{meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'specific action-processing rulebook' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'specific action-processing rulebook' {kind: rulebook} {rulebook: specific action-processing} {meaning: {specific action-processing rulebook = RULEBOOK_MC}}}
                                     ALLOWED_NT {refined}
                                         PROPERTYCALLED_NT'called'
                                             UNPARSED_NOUN_NT'truth state' {indefinite 'a' n/m/f nom/acc s}
    @@ -5483,7 +5483,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'object-based rulebook' {indefinite 'an' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=objects based rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'reaching inside rules have outcomes allow access ( success )' {unit: 2} {classified}
                                     VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'reaching inside rules' {refined} {eval: CONSTANT_NT'reaching inside rules' {kind: objects based rulebook} {rulebook: reaching inside}{meaning: {reaching inside rules = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'reaching inside rules' {refined} {eval: CONSTANT_NT'reaching inside rules' {kind: objects based rulebook} {rulebook: reaching inside} {meaning: {reaching inside rules = RULEBOOK_MC}}}
                                     RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                         PROPERTY_LIST_NT'and' {refined}
                                             UNPARSED_NOUN_NT'outcomes allow access ( success )'
    @@ -5494,7 +5494,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'object-based rulebook' {indefinite 'an' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=objects based rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'reaching outside rules have outcomes allow access ( success ' {unit: 2} {classified}
                                     VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'reaching outside rules' {refined} {eval: CONSTANT_NT'reaching outside rules' {kind: objects based rulebook} {rulebook: reaching outside}{meaning: {reaching outside rules = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'reaching outside rules' {refined} {eval: CONSTANT_NT'reaching outside rules' {kind: objects based rulebook} {rulebook: reaching outside} {meaning: {reaching outside rules = RULEBOOK_MC}}}
                                     RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                         PROPERTY_LIST_NT'and' {refined}
                                             UNPARSED_NOUN_NT'outcomes allow access ( success )'
    @@ -5505,7 +5505,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'visibility rules have outcomes there is sufficient light ( f' {unit: 2} {classified}
                                     VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'visibility rules' {refined} {eval: CONSTANT_NT'visibility rules' {kind: rulebook} {rulebook: visibility}{meaning: {visibility rules = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'visibility rules' {refined} {eval: CONSTANT_NT'visibility rules' {kind: rulebook} {rulebook: visibility} {meaning: {visibility rules = RULEBOOK_MC}}}
                                     RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                         PROPERTY_LIST_NT'and' {refined}
                                             UNPARSED_NOUN_NT'outcomes there is sufficient light ( failure )'
    @@ -5516,7 +5516,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'persuasion rules have outcomes persuasion succeeds ( success' {unit: 2} {classified}
                                     VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'persuasion rules' {refined} {eval: CONSTANT_NT'persuasion rules' {kind: rulebook} {rulebook: persuasion}{meaning: {persuasion rules = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'persuasion rules' {refined} {eval: CONSTANT_NT'persuasion rules' {kind: rulebook} {rulebook: persuasion} {meaning: {persuasion rules = RULEBOOK_MC}}}
                                     RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                         PROPERTY_LIST_NT'and' {refined}
                                             UNPARSED_NOUN_NT'outcomes persuasion succeeds ( success )'
    @@ -5555,7 +5555,7 @@ ROOT_NT
                                     COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
                                 SENTENCE_NT'the does the player mean rules have outcomes it is very like' {unit: 2} {classified}
                                     VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'does the player mean rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'does the player mean rules' {kind: rulebook} {rulebook: does the player mean}{meaning: {does the player mean rules = RULEBOOK_MC}}}
    +                                PROPER_NOUN_NT'does the player mean rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'does the player mean rules' {kind: rulebook} {rulebook: does the player mean} {meaning: {does the player mean rules = RULEBOOK_MC}}}
                                     RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                         PROPERTY_LIST_NT',' {refined}
                                             UNPARSED_NOUN_NT'outcomes it is very likely'
    @@ -5640,7 +5640,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'follow the scene changing rules' {unit: 2}
                                             INVOCATION_NT'follow the scene changing rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'scene changing rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'scene changing rules' {kind: rulebook} {rulebook: scene changing}{meaning: {scene changing rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'scene changing rules' {kind: rulebook} {rulebook: scene changing} {meaning: {scene changing rules = RULEBOOK_MC}}
                                 SENTENCE_NT'the when play begins stage rule is listed in the startup rul' {unit: 2} {classified}
                                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: positive} {special meaning: rule-listed-in}
                                     UNPARSED_NOUN_NT'the when play begins stage rule'
    @@ -5662,7 +5662,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'follow the when play begins rulebook' {unit: 2}
                                             INVOCATION_NT'follow the when play begins rulebook' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'when play begins rulebook' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'when play begins rulebook' {kind: rulebook} {rulebook: when play begins}{meaning: {when play begins rulebook = RULEBOOK_MC}}
    +                                                CONSTANT_NT'when play begins rulebook' {kind: rulebook} {rulebook: when play begins} {meaning: {when play begins rulebook = RULEBOOK_MC}}
                                 IMPERATIVE_NT'this is the fix baseline scoring rule' {unit: 2} {imperative definition: 371}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'now the last notified score is the score' {unit: 2} {control structure: NOW}
    @@ -5683,13 +5683,13 @@ ROOT_NT
                                         INVOCATION_LIST_NT'follow the every turn rules' {unit: 2}
                                             INVOCATION_NT'follow the every turn rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'every turn rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'every turn rules' {kind: rulebook} {rulebook: every turn}{meaning: {every turn rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'every turn rules' {kind: rulebook} {rulebook: every turn} {meaning: {every turn rules = RULEBOOK_MC}}
                                 IMPERATIVE_NT'a first turn sequence rule' {unit: 2} {imperative definition: 375}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'follow the scene changing rules' {unit: 2}
                                             INVOCATION_NT'follow the scene changing rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'scene changing rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'scene changing rules' {kind: rulebook} {rulebook: scene changing}{meaning: {scene changing rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'scene changing rules' {kind: rulebook} {rulebook: scene changing} {meaning: {scene changing rules = RULEBOOK_MC}}
                                 SENTENCE_NT'the generate action rule is listed first in the turn sequenc' {unit: 2} {classified}
                                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: positive} {special meaning: rule-listed-in}
                                     UNPARSED_NOUN_NT'the generate action rule'
    @@ -5719,7 +5719,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'follow the scene changing rules' {unit: 2}
                                             INVOCATION_NT'follow the scene changing rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'scene changing rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'scene changing rules' {kind: rulebook} {rulebook: scene changing}{meaning: {scene changing rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'scene changing rules' {kind: rulebook} {rulebook: scene changing} {meaning: {scene changing rules = RULEBOOK_MC}}
                                 SENTENCE_NT'the adjust light rule is listed last in the turn sequence ru' {unit: 2} {classified}
                                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: positive} {special meaning: rule-listed-in}
                                     UNPARSED_NOUN_NT'the adjust light rule'
    @@ -5793,13 +5793,13 @@ ROOT_NT
                                         INVOCATION_LIST_NT'follow the when play ends rulebook' {unit: 2}
                                             INVOCATION_NT'follow the when play ends rulebook' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'when play ends rulebook' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'when play ends rulebook' {kind: rulebook} {rulebook: when play ends}{meaning: {when play ends rulebook = RULEBOOK_MC}}
    +                                                CONSTANT_NT'when play ends rulebook' {kind: rulebook} {rulebook: when play ends} {meaning: {when play ends rulebook = RULEBOOK_MC}}
                                 IMPERATIVE_NT'this is the print player's obituary rule' {unit: 2} {imperative definition: 379}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'carry out the printing the player's obituary activity' {unit: 2}
                                             INVOCATION_NT'carry out the printing the player's obituary activity' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'printing the player's obituary' {token to be parsed against: TEST_VALUE_NT'activity on nothing'} {required: activity}
    -                                                CONSTANT_NT'printing the player's obituary' {kind: activity on objects} {activity: printing the player's obituary}{meaning: {printing the player's obituary = ACTIVITY_MC}}
    +                                                CONSTANT_NT'printing the player's obituary' {kind: activity on objects} {activity: printing the player's obituary} {meaning: {printing the player's obituary = ACTIVITY_MC}}
                                 SENTENCE_NT'the resurrect player if asked rule translates into inter as ' {unit: 2} {classified}
                                     VERB_NT'translates into' {verb 'translate' 3p s act IS_TENSE +ve} {prep1: into} {prep2: as} {special meaning: translates-into-i6} {category: 2}
                                     UNPARSED_NOUN_NT'resurrect player if asked rule' {definite 'the' n/m/f s/p nom/acc}
    @@ -5885,7 +5885,7 @@ ROOT_NT
                                                 INVOCATION_LIST_NT'set pronouns from the current item from the multiple object ' {unit: 2} {results_from_splitting} {indent: 1}
                                                     INVOCATION_NT'set pronouns from the current item from the multiple object ' {phrase invoked: }
                                                         RVALUE_CONTEXT_NT'current item from the multiple object list' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                        NONLOCAL_VARIABLE_NT'current item from the multiple object list' {nonlocal: 'current item from the multiple object list'(var)object}{meaning: {current item from the multiple object list = VARIABLE_MC}}
    +                                                        NONLOCAL_VARIABLE_NT'current item from the multiple object list' {nonlocal: 'current item from the multiple object list'(var)object} {meaning: {current item from the multiple object list = VARIABLE_MC}}
                                 IMPERATIVE_NT'this is the announce items from multiple object lists rule' {unit: 2} {imperative definition: 381}
                                     CODE_BLOCK_NT
                                         CODE_BLOCK_NT {control structure: IF}
    @@ -5904,13 +5904,13 @@ ROOT_NT
                                         INVOCATION_LIST_NT'abide by the before rules' {unit: 2}
                                             INVOCATION_NT'abide by the before rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'before rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'before rules' {kind: rulebook} {rulebook: before}{meaning: {before rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'before rules' {kind: rulebook} {rulebook: before} {meaning: {before rules = RULEBOOK_MC}}
                                 IMPERATIVE_NT'this is the instead stage rule' {unit: 2} {imperative definition: 383}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'abide by the instead rules' {unit: 2}
                                             INVOCATION_NT'abide by the instead rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'instead rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'instead rules' {kind: rulebook} {rulebook: instead}{meaning: {instead rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'instead rules' {kind: rulebook} {rulebook: instead} {meaning: {instead rules = RULEBOOK_MC}}
                                 IMPERATIVE_NT'this is the end action-processing in success rule' {unit: 2} {imperative definition: 384}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'rule succeeds' {unit: 2}
    @@ -5952,7 +5952,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'follow the player's action awareness rules' {unit: 2}
                                             INVOCATION_NT'follow the player's action awareness rules' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'player's action awareness rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                CONSTANT_NT'player's action awareness rules' {kind: rulebook} {rulebook: player's action awareness}{meaning: {player's action awareness rules = RULEBOOK_MC}}
    +                                                CONSTANT_NT'player's action awareness rules' {kind: rulebook} {rulebook: player's action awareness} {meaning: {player's action awareness rules = RULEBOOK_MC}}
                                         CODE_BLOCK_NT {control structure: IF}
                                             INVOCATION_LIST_NT'if rule succeeded' {unit: 2} {colon_block_command}
                                                 INVOCATION_NT'if rule succeeded' {phrase invoked: }
    @@ -5990,7 +5990,7 @@ ROOT_NT
                                                 INVOCATION_LIST_NT'abide by the after rules' {unit: 2} {results_from_splitting} {indent: 1}
                                                     INVOCATION_NT'abide by the after rules' {phrase invoked: }
                                                         RVALUE_CONTEXT_NT'after rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                        CONSTANT_NT'after rules' {kind: rulebook} {rulebook: after}{meaning: {after rules = RULEBOOK_MC}}
    +                                                        CONSTANT_NT'after rules' {kind: rulebook} {rulebook: after} {meaning: {after rules = RULEBOOK_MC}}
                                 IMPERATIVE_NT'a specific action-processing rule ( this is the investigate ' {unit: 2} {imperative definition: 389}
                                     CODE_BLOCK_NT
                                         CODE_BLOCK_NT {control structure: IF}
    @@ -6002,7 +6002,7 @@ ROOT_NT
                                                 INVOCATION_LIST_NT'follow the player's action awareness rules' {unit: 2} {indent: 2}
                                                     INVOCATION_NT'follow the player's action awareness rules' {phrase invoked: }
                                                         RVALUE_CONTEXT_NT'player's action awareness rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                        CONSTANT_NT'player's action awareness rules' {kind: rulebook} {rulebook: player's action awareness}{meaning: {player's action awareness rules = RULEBOOK_MC}}
    +                                                        CONSTANT_NT'player's action awareness rules' {kind: rulebook} {rulebook: player's action awareness} {meaning: {player's action awareness rules = RULEBOOK_MC}}
                                                 CODE_BLOCK_NT {control structure: IF}
                                                     INVOCATION_LIST_NT'if rule succeeded' {unit: 2} {indent: 2} {colon_block_command}
                                                         INVOCATION_NT'if rule succeeded' {phrase invoked: }
    @@ -6153,7 +6153,7 @@ ROOT_NT
                                     ADJECTIVE_NT'non-recurring' {refined} {predicate: non-recurring} {creation: << non-recurring(x) ^ non-recurring(x) >>}
                                 SENTENCE_NT'the entire game is recurring' {unit: 2} {classified} {interpretation of subject: infs'scene'-k}
                                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    -                                PROPER_NOUN_NT'entire game' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'entire game'} {eval: CONSTANT_NT'entire game' {kind: scene} {instance: I36'entire game'[scene]} {enumeration: 0}{meaning: {entire game = NAMED_CONSTANT_MC}}}
    +                                PROPER_NOUN_NT'entire game' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'entire game'} {eval: CONSTANT_NT'entire game' {kind: scene} {instance: I36'entire game'[scene]} {enumeration: 0} {meaning: {entire game = NAMED_CONSTANT_MC}}}
                                     ADJECTIVE_NT'recurring' {refined} {predicate: recurring} {creation: << recurring(x) ^ recurring(x) >>}
                             HEADING_NT'section 7 - scene descriptions' {heading 5} {under: H5'section 7 - scene descriptions'} {unit: 2}
                                 SENTENCE_NT'a scene has a text called description' {unit: 2} {classified}
    @@ -6176,7 +6176,7 @@ ROOT_NT
                                                         INVOCATION_NT'description of the event' {phrase invoked: } {kind variable declarations: K=text} {save self}
                                                             RVALUE_CONTEXT_NT'description of the event' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                                 PROPERTY_VALUE_NT'description of the event' {record as self}
    -                                                                CONSTANT_NT {kind: nothing valued property} {property: 'description'=text}{meaning: {description = PROPERTY_MC}}
    +                                                                CONSTANT_NT {kind: nothing valued property} {property: 'description'=text} {meaning: {description = PROPERTY_MC}}
                                                                     LOCAL_VARIABLE_NT'the event' {local: LV"event"-scene scene}
                                                     INVOCATION_LIST_SAY_NT'paragraph break'
                                                         INVOCATION_NT'paragraph break' {phrase invoked: }
    @@ -6481,7 +6481,7 @@ ROOT_NT
                                         INVOCATION_LIST_SAY_NT'listing group size in words'
                                             INVOCATION_NT'listing group size in words' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'listing group size' {token to be parsed against: TEST_VALUE_NT'number'} {required: number}
    -                                                NONLOCAL_VARIABLE_NT'listing group size' {nonlocal: 'listing group size'(var)number}{meaning: {listing group size = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'listing group size' {nonlocal: 'listing group size'(var)number} {meaning: {listing group size = VARIABLE_MC}}
                                         INVOCATION_LIST_SAY_NT'" "'
                                             INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
                                                 RVALUE_CONTEXT_NT'" "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -6489,7 +6489,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'carry out the printing the plural name activity with the ite' {unit: 2}
                                         INVOCATION_NT'carry out the printing the plural name activity with the ite' {phrase invoked: } {kind variable declarations: K=object}
                                             RVALUE_CONTEXT_NT'printing the plural name' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                            CONSTANT_NT'printing the plural name' {kind: activity on objects} {activity: printing the plural name}{meaning: {printing the plural name = ACTIVITY_MC}}
    +                                            CONSTANT_NT'printing the plural name' {kind: activity on objects} {activity: printing the plural name} {meaning: {printing the plural name = ACTIVITY_MC}}
                                             RVALUE_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                 LOCAL_VARIABLE_NT'item' {local: LV"item"-thing thing}
                             SENTENCE_NT'the standard printing a number of something rule is listed l' {unit: 2} {classified}
    @@ -6585,7 +6585,7 @@ ROOT_NT
                                 UNPARSED_NOUN_NT'an activity'
                             SENTENCE_NT'the for deciding whether all includes rules have outcomes it' {unit: 2} {classified}
                                 VERB_NT'have' {verb 'have' 3p p act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'for deciding whether all includes rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'for deciding whether all includes rules' {kind: objects based rulebook} {rulebook: for deciding whether all includes}{meaning: {for deciding whether all includes rules = RULEBOOK_MC}}}
    +                            PROPER_NOUN_NT'for deciding whether all includes rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'for deciding whether all includes rules' {kind: objects based rulebook} {rulebook: for deciding whether all includes} {meaning: {for deciding whether all includes rules = RULEBOOK_MC}}}
                                 RELATIONSHIP_NT'have' {meaning: is-had-by} {refined}
                                     PROPERTY_LIST_NT'and' {refined}
                                         UNPARSED_NOUN_NT'outcomes it does not ( failure )'
    @@ -6764,7 +6764,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'repeat through the table of final question options' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'repeat through the table of final question options' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'table of final question options' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of final question options' {kind: table name} {table: table_data}{meaning: {table of final question options = TABLE_MC}}
    +                                                CONSTANT_NT'table of final question options' {kind: table name} {table: table_data} {meaning: {table of final question options = TABLE_MC}}
                                         CODE_BLOCK_NT
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the only if victorious entry is false or the story has en' {colon_block_command} {unit: 2} {indent: 2}
    @@ -6788,7 +6788,7 @@ ROOT_NT
                                                                                     INVOCATION_NT'there is a final response rule entry' {phrase invoked: } {resulting: truth state}
                                                                                         LVALUE_TR_CONTEXT_NT'a final response rule entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                             TABLE_ENTRY_NT'a final response rule entry'
    -                                                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'}{meaning: {final response rule = TABLE_COLUMN_MC}}
    +                                                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'} {meaning: {final response rule = TABLE_COLUMN_MC}}
                                                                         TEST_PROPOSITION_NT'the final response activity entry is not empty' {proposition: << NOT< empty('the final response activity entry') NOT> >>} {term: 'the final response activity entry'}
                                                         CODE_BLOCK_NT
                                                             CODE_BLOCK_NT {control structure: IF}
    @@ -6801,7 +6801,7 @@ ROOT_NT
                                                                                         INVOCATION_NT'there is a final question wording entry' {phrase invoked: } {resulting: truth state}
                                                                                             LVALUE_TR_CONTEXT_NT'a final question wording entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                                 TABLE_ENTRY_NT'a final question wording entry'
    -                                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'final question wording'}{meaning: {final question wording = TABLE_COLUMN_MC}}
    +                                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'final question wording'} {meaning: {final question wording = TABLE_COLUMN_MC}}
                                                                 CODE_BLOCK_NT
                                                                     INVOCATION_LIST_NT'increase named options count by 1' {unit: 2} {results_from_splitting} {indent: 5}
                                                                         INVOCATION_NT'increase named options count by 1' {phrase invoked: }
    @@ -6818,7 +6818,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'abide by the immediately quit rule' {unit: 2} {results_from_splitting} {indent: 2}
                                                 INVOCATION_NT'abide by the immediately quit rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'immediately quit rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'immediately quit rule' {kind: rule} {rule: immediately quit rule}{meaning: {immediately quit rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'immediately quit rule' {kind: rule} {rule: immediately quit rule} {meaning: {immediately quit rule = MISCELLANEOUS_MC}}
                                     CODE_BLOCK_NT'say "Would you like to " ( a )' {control structure: SAY}
                                         INVOCATION_LIST_SAY_NT'"Would you like to " ( a )'
                                             INVOCATION_NT'"Would you like to " ( a )' {phrase invoked: } {kind variable declarations: K=text}
    @@ -6828,7 +6828,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'repeat through the table of final question options' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'repeat through the table of final question options' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'table of final question options' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of final question options' {kind: table name} {table: table_data}{meaning: {table of final question options = TABLE_MC}}
    +                                                CONSTANT_NT'table of final question options' {kind: table name} {table: table_data} {meaning: {table of final question options = TABLE_MC}}
                                         CODE_BLOCK_NT
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the only if victorious entry is false or the story has en' {colon_block_command} {unit: 2} {indent: 2}
    @@ -6852,7 +6852,7 @@ ROOT_NT
                                                                                     INVOCATION_NT'there is a final response rule entry' {phrase invoked: } {resulting: truth state}
                                                                                         LVALUE_TR_CONTEXT_NT'a final response rule entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                             TABLE_ENTRY_NT'a final response rule entry'
    -                                                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'}{meaning: {final response rule = TABLE_COLUMN_MC}}
    +                                                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'} {meaning: {final response rule = TABLE_COLUMN_MC}}
                                                                         TEST_PROPOSITION_NT'the final response activity entry is not empty' {proposition: << NOT< empty('the final response activity entry') NOT> >>} {term: 'the final response activity entry'}
                                                         CODE_BLOCK_NT
                                                             CODE_BLOCK_NT {control structure: IF}
    @@ -6865,14 +6865,14 @@ ROOT_NT
                                                                                         INVOCATION_NT'there is a final question wording entry' {phrase invoked: } {resulting: truth state}
                                                                                             LVALUE_TR_CONTEXT_NT'a final question wording entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                                 TABLE_ENTRY_NT'a final question wording entry'
    -                                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'final question wording'}{meaning: {final question wording = TABLE_COLUMN_MC}}
    +                                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'final question wording'} {meaning: {final question wording = TABLE_COLUMN_MC}}
                                                                 CODE_BLOCK_NT
                                                                     CODE_BLOCK_NT'say final question wording entry' {control structure: SAY}
                                                                         INVOCATION_LIST_SAY_NT'final question wording entry'
                                                                             INVOCATION_NT'final question wording entry' {phrase invoked: } {kind variable declarations: K=text}
                                                                                 RVALUE_CONTEXT_NT'final question wording entry' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                                                     TABLE_ENTRY_NT'final question wording entry'
    -                                                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'final question wording'}{meaning: {final question wording = TABLE_COLUMN_MC}}
    +                                                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'final question wording'} {meaning: {final question wording = TABLE_COLUMN_MC}}
                                                                     INVOCATION_LIST_NT'decrease named options count by 1' {unit: 2} {indent: 5}
                                                                         INVOCATION_NT'decrease named options count by 1' {phrase invoked: }
                                                                             LVALUE_CONTEXT_NT'named options count' {token to be parsed against: TEST_VALUE_NT'equation'}
    @@ -6927,7 +6927,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'repeat through the table of final question options' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'repeat through the table of final question options' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'table of final question options' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of final question options' {kind: table name} {table: table_data}{meaning: {table of final question options = TABLE_MC}}
    +                                                CONSTANT_NT'table of final question options' {kind: table name} {table: table_data} {meaning: {table of final question options = TABLE_MC}}
                                         CODE_BLOCK_NT
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the only if victorious entry is false or the story has en' {colon_block_command} {unit: 2} {indent: 2}
    @@ -6951,7 +6951,7 @@ ROOT_NT
                                                                                     INVOCATION_NT'there is a final response rule entry' {phrase invoked: } {resulting: truth state}
                                                                                         LVALUE_TR_CONTEXT_NT'a final response rule entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                             TABLE_ENTRY_NT'a final response rule entry'
    -                                                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'}{meaning: {final response rule = TABLE_COLUMN_MC}}
    +                                                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'} {meaning: {final response rule = TABLE_COLUMN_MC}}
                                                                         TEST_PROPOSITION_NT'the final response activity entry is not empty' {proposition: << NOT< empty('the final response activity entry') NOT> >>} {term: 'the final response activity entry'}
                                                         CODE_BLOCK_NT
                                                             CODE_BLOCK_NT {control structure: IF}
    @@ -6963,10 +6963,10 @@ ROOT_NT
                                                                                     INVOCATION_LIST_NT'player's command matches the topic entry' {unit: 2}
                                                                                         INVOCATION_NT'player's command matches the topic entry' {phrase invoked: } {resulting: truth state}
                                                                                             RVALUE_CONTEXT_NT'player's command' {token to be parsed against: TEST_VALUE_NT'a snippet'} {required: snippet}
    -                                                                                            NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet}{meaning: {player's command = VARIABLE_MC}}
    +                                                                                            NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet} {meaning: {player's command = VARIABLE_MC}}
                                                                                             RVALUE_CONTEXT_NT'topic entry' {token to be parsed against: TEST_VALUE_NT'a topic'} {required: topic}
                                                                                                 TABLE_ENTRY_NT'topic entry'
    -                                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'topic'}{meaning: {topic = TABLE_COLUMN_MC}}
    +                                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'topic'} {meaning: {topic = TABLE_COLUMN_MC}}
                                                                 CODE_BLOCK_NT
                                                                     CODE_BLOCK_NT {control structure: IF}
                                                                         INVOCATION_LIST_NT'if there is a final response rule entry' {unit: 2} {indent: 5} {colon_block_command}
    @@ -6978,19 +6978,19 @@ ROOT_NT
                                                                                                 INVOCATION_NT'there is a final response rule entry' {phrase invoked: } {resulting: truth state}
                                                                                                     LVALUE_TR_CONTEXT_NT'a final response rule entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                                         TABLE_ENTRY_NT'a final response rule entry'
    -                                                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'}{meaning: {final response rule = TABLE_COLUMN_MC}}
    +                                                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'} {meaning: {final response rule = TABLE_COLUMN_MC}}
                                                                         CODE_BLOCK_NT
                                                                             INVOCATION_LIST_NT'abide by final response rule entry' {unit: 2} {results_from_splitting} {indent: 6}
                                                                                 INVOCATION_NT'abide by final response rule entry' {phrase invoked: }
                                                                                     RVALUE_CONTEXT_NT'final response rule entry' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
                                                                                         TABLE_ENTRY_NT'final response rule entry'
    -                                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'}{meaning: {final response rule = TABLE_COLUMN_MC}}
    +                                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'final response rule'} {meaning: {final response rule = TABLE_COLUMN_MC}}
                                                                         CODE_BLOCK_NT'otherwise' {results_from_splitting} {indent: 5} {control structure: O}
                                                                             INVOCATION_LIST_NT'carry out the final response activity entry activity' {unit: 2} {indent: 6}
                                                                                 INVOCATION_NT'carry out the final response activity entry activity' {phrase invoked: }
                                                                                     RVALUE_CONTEXT_NT'final response activity entry' {token to be parsed against: TEST_VALUE_NT'activity on nothing'} {required: activity}
                                                                                         TABLE_ENTRY_NT'final response activity entry'
    -                                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'final response activity'}{meaning: {final response activity = TABLE_COLUMN_MC}}
    +                                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'final response activity'} {meaning: {final response activity = TABLE_COLUMN_MC}}
                                                                     INVOCATION_LIST_NT'rule succeeds' {unit: 2} {indent: 5}
                                                                         INVOCATION_NT'rule succeeds' {phrase invoked: }
                                     CODE_BLOCK_NT'say "Please give one of the answers above." ( a )' {control structure: SAY}
    @@ -7007,7 +7007,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'carry out the printing the locale description activity with ' {unit: 2}
                                         INVOCATION_NT'carry out the printing the locale description activity with ' {phrase invoked: } {kind variable declarations: K=object}
                                             RVALUE_CONTEXT_NT'printing the locale description' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                            CONSTANT_NT'printing the locale description' {kind: activity on objects} {activity: printing the locale description}{meaning: {printing the locale description = ACTIVITY_MC}}
    +                                            CONSTANT_NT'printing the locale description' {kind: activity on objects} {activity: printing the locale description} {meaning: {printing the locale description = ACTIVITY_MC}}
                                             RVALUE_CONTEXT_NT'o' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                 LOCAL_VARIABLE_NT'o' {local: LV"o"-object object}
                             IMPERATIVE_NT'to set the/-- locale priority of ( o - an object ) to ( n - ' {unit: 2} {imperative definition: 414}
    @@ -7036,19 +7036,19 @@ ROOT_NT
                                                                         INVOCATION_NT'there is a notable-object of o in the table of locale priori' {phrase invoked: } {resulting: truth state}
                                                                             LVALUE_TR_CONTEXT_NT'a notable-object of o in the table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                 TABLE_ENTRY_NT'a notable-object of o in the table of locale priorities'
    -                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'notable-object'}{meaning: {notable-object = TABLE_COLUMN_MC}}
    -                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'notable-object'}{meaning: {notable-object = TABLE_COLUMN_MC}}
    +                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'notable-object'} {meaning: {notable-object = TABLE_COLUMN_MC}}
    +                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'notable-object'} {meaning: {notable-object = TABLE_COLUMN_MC}}
                                                                                     LOCAL_VARIABLE_NT'o' {local: LV"o"-object object}
    -                                                                                CONSTANT_NT'the table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                                                                CONSTANT_NT'the table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                                 CODE_BLOCK_NT
                                                     INVOCATION_LIST_NT'choose row with a notable-object of o in the table of locale' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'choose row with a notable-object of o in the table of locale' {phrase invoked: } {kind variable declarations: K=object}
                                                             RVALUE_CONTEXT_NT'a notable-object' {token to be parsed against: TEST_VALUE_NT} {required: table column}
    -                                                            CONSTANT_NT'a notable-object' {kind: nothing valued table column} {table column: 'notable-object'}{meaning: {notable-object = TABLE_COLUMN_MC}}
    +                                                            CONSTANT_NT'a notable-object' {kind: nothing valued table column} {table column: 'notable-object'} {meaning: {notable-object = TABLE_COLUMN_MC}}
                                                             RVALUE_CONTEXT_NT'o' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                                 LOCAL_VARIABLE_NT'o' {local: LV"o"-object object}
                                                             RVALUE_CONTEXT_NT'table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                            CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                                            CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                                     CODE_BLOCK_NT {control structure: IF}
                                                         INVOCATION_LIST_NT'if n is at most 0' {unit: 2} {indent: 3} {colon_block_command}
                                                             INVOCATION_NT'if n is at most 0' {phrase invoked: }
    @@ -7070,7 +7070,7 @@ ROOT_NT
                                                             INVOCATION_LIST_NT'choose a blank row in the table of locale priorities' {unit: 2} {indent: 4}
                                                                 INVOCATION_NT'choose a blank row in the table of locale priorities' {phrase invoked: }
                                                                     RVALUE_CONTEXT_NT'table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                                    CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                                                    CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                                             INVOCATION_LIST_NT'now the notable-object entry is o' {unit: 2} {indent: 4} {control structure: NOW}
                                                                 CONDITION_CONTEXT_NT'the notable-object entry is o'
                                                             INVOCATION_LIST_NT'now the locale description priority entry is n' {unit: 2} {indent: 4} {control structure: NOW}
    @@ -7091,7 +7091,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'repeat through the table of locale priorities' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'repeat through the table of locale priorities' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                                CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                         CODE_BLOCK_NT
                                             INVOCATION_LIST_NT'blank out the whole row' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'blank out the whole row' {phrase invoked: }
    @@ -7102,11 +7102,11 @@ ROOT_NT
                                             NEW_LOCAL_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                 UNKNOWN_NT'domain'
                                             RVALUE_CONTEXT_NT'parameter-object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object}{meaning: {parameter-object = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object} {meaning: {parameter-object = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'carry out the choosing notable locale objects activity with ' {unit: 2}
                                         INVOCATION_NT'carry out the choosing notable locale objects activity with ' {phrase invoked: } {kind variable declarations: K=object}
                                             RVALUE_CONTEXT_NT'choosing notable locale objects' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                            CONSTANT_NT'choosing notable locale objects' {kind: activity on objects} {activity: choosing notable locale objects}{meaning: {choosing notable locale objects = ACTIVITY_MC}}
    +                                            CONSTANT_NT'choosing notable locale objects' {kind: activity on objects} {activity: choosing notable locale objects} {meaning: {choosing notable locale objects = ACTIVITY_MC}}
                                             RVALUE_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                 LOCAL_VARIABLE_NT'domain' {local: LV"domain"-object object}
                                     INVOCATION_LIST_NT'continue the activity' {unit: 2}
    @@ -7118,26 +7118,26 @@ ROOT_NT
                                             NEW_LOCAL_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                 UNKNOWN_NT'domain'
                                             RVALUE_CONTEXT_NT'parameter-object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object}{meaning: {parameter-object = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object} {meaning: {parameter-object = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'sort the table of locale priorities in locale description pr' {unit: 2} {indent: 1}
                                         INVOCATION_NT'sort the table of locale priorities in locale description pr' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                            CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                            CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                             RVALUE_CONTEXT_NT'locale description priority' {token to be parsed against: TEST_VALUE_NT'table column'} {required: table column}
    -                                            CONSTANT_NT'locale description priority' {kind: nothing valued table column} {table column: 'locale description priority'}{meaning: {locale description priority = TABLE_COLUMN_MC}}
    +                                            CONSTANT_NT'locale description priority' {kind: nothing valued table column} {table column: 'locale description priority'} {meaning: {locale description priority = TABLE_COLUMN_MC}}
                                     CODE_BLOCK_NT {control structure: RPT}
                                         INVOCATION_LIST_NT'repeat through the table of locale priorities' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'repeat through the table of locale priorities' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                                CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                         CODE_BLOCK_NT
                                             INVOCATION_LIST_NT'carry out the printing a locale paragraph about activity wit' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'carry out the printing a locale paragraph about activity wit' {phrase invoked: } {kind variable declarations: K=object}
                                                     RVALUE_CONTEXT_NT'printing a locale paragraph about' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                    CONSTANT_NT'printing a locale paragraph about' {kind: activity on objects} {activity: printing a locale paragraph about}{meaning: {printing a locale paragraph about = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'printing a locale paragraph about' {kind: activity on objects} {activity: printing a locale paragraph about} {meaning: {printing a locale paragraph about = ACTIVITY_MC}}
                                                     RVALUE_CONTEXT_NT'notable-object entry' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                         TABLE_ENTRY_NT'notable-object entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'notable-object'}{meaning: {notable-object = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'notable-object'} {meaning: {notable-object = TABLE_COLUMN_MC}}
                                     INVOCATION_LIST_NT'continue the activity' {unit: 2} {indent: 1}
                                         INVOCATION_NT'continue the activity' {phrase invoked: }
                             IMPERATIVE_NT'for printing the locale description ( this is the you-can-al' {unit: 2} {imperative definition: 418}
    @@ -7147,7 +7147,7 @@ ROOT_NT
                                             NEW_LOCAL_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                 UNKNOWN_NT'domain'
                                             RVALUE_CONTEXT_NT'parameter-object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object}{meaning: {parameter-object = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object} {meaning: {parameter-object = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the mentionable count be 0' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the mentionable count be 0' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'mentionable count' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: number}
    @@ -7168,7 +7168,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'repeat through the table of locale priorities' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'repeat through the table of locale priorities' {phrase invoked: }
                                                 RVALUE_CONTEXT_NT'table of locale priorities' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data}{meaning: {table of locale priorities = TABLE_MC}}
    +                                                CONSTANT_NT'table of locale priorities' {kind: table name} {table: table_data} {meaning: {table of locale priorities = TABLE_MC}}
                                         CODE_BLOCK_NT
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the locale description priority entry is greater than 0' {unit: 2} {indent: 2} {colon_block_command}
    @@ -7209,7 +7209,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'begin the listing nondescript items activity with the domain' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'begin the listing nondescript items activity with the domain' {phrase invoked: } {kind variable declarations: K=object}
                                                     RVALUE_CONTEXT_NT'listing nondescript items' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                    CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items}{meaning: {listing nondescript items = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items} {meaning: {listing nondescript items = ACTIVITY_MC}}
                                                     RVALUE_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                         LOCAL_VARIABLE_NT'domain' {local: LV"domain"-object object}
                                             CODE_BLOCK_NT {control structure: IF}
    @@ -7221,7 +7221,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'abandon the listing nondescript items activity with the doma' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'abandon the listing nondescript items activity with the doma' {phrase invoked: } {kind variable declarations: K=object}
                                                             RVALUE_CONTEXT_NT'listing nondescript items' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                            CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items}{meaning: {listing nondescript items = ACTIVITY_MC}}
    +                                                            CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items} {meaning: {listing nondescript items = ACTIVITY_MC}}
                                                             RVALUE_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                                 LOCAL_VARIABLE_NT'domain' {local: LV"domain"-object object}
                                                 CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 2} {control structure: O}
    @@ -7234,7 +7234,7 @@ ROOT_NT
                                                                             INVOCATION_LIST_NT'handling the listing nondescript items activity with the dom' {unit: 2}
                                                                                 INVOCATION_NT'handling the listing nondescript items activity with the dom' {phrase invoked: } {resulting: truth state} {kind variable declarations: K=object}
                                                                                     RVALUE_CONTEXT_NT'listing nondescript items' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                                                    CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items}{meaning: {listing nondescript items = ACTIVITY_MC}}
    +                                                                                    CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items} {meaning: {listing nondescript items = ACTIVITY_MC}}
                                                                                     RVALUE_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                                                         LOCAL_VARIABLE_NT'domain' {local: LV"domain"-object object}
                                                         CODE_BLOCK_NT
    @@ -7376,7 +7376,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'end the listing nondescript items activity with the domain' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'end the listing nondescript items activity with the domain' {phrase invoked: } {kind variable declarations: K=object}
                                                             RVALUE_CONTEXT_NT'listing nondescript items' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                            CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items}{meaning: {listing nondescript items = ACTIVITY_MC}}
    +                                                            CONSTANT_NT'listing nondescript items' {kind: activity on objects} {activity: listing nondescript items} {meaning: {listing nondescript items = ACTIVITY_MC}}
                                                             RVALUE_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                                 LOCAL_VARIABLE_NT'domain' {local: LV"domain"-object object}
                                     INVOCATION_LIST_NT'continue the activity' {unit: 2} {indent: 1}
    @@ -7392,7 +7392,7 @@ ROOT_NT
                                             NEW_LOCAL_CONTEXT_NT'domain' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                 UNKNOWN_NT'domain'
                                             RVALUE_CONTEXT_NT'parameter-object' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object}{meaning: {parameter-object = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'parameter-object' {nonlocal: 'parameter-object'(var)object} {meaning: {parameter-object = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the held item be the first thing held by the domain' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the held item be the first thing held by the domain' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'held item' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
    @@ -7508,7 +7508,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'carry out the writing a paragraph about activity with the it' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'carry out the writing a paragraph about activity with the it' {phrase invoked: } {kind variable declarations: K=object}
                                                     RVALUE_CONTEXT_NT'writing a paragraph about' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                    CONSTANT_NT'writing a paragraph about' {kind: activity on objects} {activity: writing a paragraph about}{meaning: {writing a paragraph about = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'writing a paragraph about' {kind: activity on objects} {activity: writing a paragraph about} {meaning: {writing a paragraph about = ACTIVITY_MC}}
                                                     RVALUE_CONTEXT_NT'item' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                         LOCAL_VARIABLE_NT'item' {local: LV"item"-thing thing}
                                             CODE_BLOCK_NT {control structure: IF}
    @@ -7523,7 +7523,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'increase the locale paragraph count by 1' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'increase the locale paragraph count by 1' {phrase invoked: }
                                                             LVALUE_CONTEXT_NT'locale paragraph count' {token to be parsed against: TEST_VALUE_NT'equation'}
    -                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number}{meaning: {locale paragraph count = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number} {meaning: {locale paragraph count = VARIABLE_MC}}
                                                             RVALUE_CONTEXT_NT'1' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                                 CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}
                                                     INVOCATION_LIST_NT'now the item is mentioned' {unit: 2} {indent: 3} {control structure: NOW}
    @@ -7554,7 +7554,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'increase the locale paragraph count by 1' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'increase the locale paragraph count by 1' {phrase invoked: }
                                                             LVALUE_CONTEXT_NT'locale paragraph count' {token to be parsed against: TEST_VALUE_NT'equation'}
    -                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number}{meaning: {locale paragraph count = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number} {meaning: {locale paragraph count = VARIABLE_MC}}
                                                             RVALUE_CONTEXT_NT'1' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                                 CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}
                                                     CODE_BLOCK_NT'say "[initial appearance of the item]"' {control structure: SAY}
    @@ -7562,7 +7562,7 @@ ROOT_NT
                                                             INVOCATION_NT'initial appearance of the item' {phrase invoked: } {kind variable declarations: K=text} {save self}
                                                                 RVALUE_CONTEXT_NT'initial appearance of the item' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                                     PROPERTY_VALUE_NT'initial appearance of the item' {record as self}
    -                                                                    CONSTANT_NT {kind: nothing valued property} {property: 'initial appearance'=text}{meaning: {initial appearance = PROPERTY_MC}}
    +                                                                    CONSTANT_NT {kind: nothing valued property} {property: 'initial appearance'=text} {meaning: {initial appearance = PROPERTY_MC}}
                                                                         LOCAL_VARIABLE_NT'the item' {local: LV"item"-thing thing}
                                                     CODE_BLOCK_NT'say "[paragraph break]"' {control structure: SAY}
                                                         INVOCATION_LIST_SAY_NT'paragraph break'
    @@ -7638,7 +7638,7 @@ ROOT_NT
                                                             INVOCATION_NT'initial appearance of the item' {phrase invoked: } {kind variable declarations: K=text} {save self}
                                                                 RVALUE_CONTEXT_NT'initial appearance of the item' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                                     PROPERTY_VALUE_NT'initial appearance of the item' {record as self}
    -                                                                    CONSTANT_NT {kind: nothing valued property} {property: 'initial appearance'=text}{meaning: {initial appearance = PROPERTY_MC}}
    +                                                                    CONSTANT_NT {kind: nothing valued property} {property: 'initial appearance'=text} {meaning: {initial appearance = PROPERTY_MC}}
                                                                         LOCAL_VARIABLE_NT'the item' {local: LV nothing}
                                                     CODE_BLOCK_NT'say paragraph break' {control structure: SAY}
                                                         INVOCATION_LIST_SAY_NT'paragraph break'
    @@ -7687,7 +7687,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'increase the locale paragraph count by 1' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'increase the locale paragraph count by 1' {phrase invoked: }
                                                             LVALUE_CONTEXT_NT'locale paragraph count' {token to be parsed against: TEST_VALUE_NT'equation'}
    -                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number}{meaning: {locale paragraph count = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number} {meaning: {locale paragraph count = VARIABLE_MC}}
                                                             RVALUE_CONTEXT_NT'1' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                                 CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}
                                                     CODE_BLOCK_NT'say "On [the item] " ( a )' {control structure: SAY}
    @@ -7753,7 +7753,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'increase the locale paragraph count by 1' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'increase the locale paragraph count by 1' {phrase invoked: }
                                                             LVALUE_CONTEXT_NT'locale paragraph count' {token to be parsed against: TEST_VALUE_NT'equation'}
    -                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number}{meaning: {locale paragraph count = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'locale paragraph count' {nonlocal: 'locale paragraph count'(var)number} {meaning: {locale paragraph count = VARIABLE_MC}}
                                                             RVALUE_CONTEXT_NT'1' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                                 CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}
                                                     CODE_BLOCK_NT'say "On [the item] " ( a )' {control structure: SAY}
    @@ -7935,7 +7935,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the taking inventory action is Taking a' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the taking inventory action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'taking inventory action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'taking inventory action' {kind: action name} {action name: taking inventory}{meaning: {taking inventory action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'taking inventory action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'taking inventory action' {kind: action name} {action name: taking inventory} {meaning: {taking inventory action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Taking an inventory of
                                 one's immediate possessions: the thin' {refined} {eval: CONSTANT_NT'Taking an inventory of
    @@ -7964,7 +7964,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'list the contents of the player , with newlines , indented ,' {unit: 2}
                                         INVOCATION_NT'list the contents of the player' {phrase invoked: } {phrase options invoked: with newlines , indented , including contents , giving inventory information , with extra indentation}
                                             RVALUE_CONTEXT_NT'player' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'player' {nonlocal: 'player'(var)person}{meaning: {player = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'player' {nonlocal: 'player'(var)person} {meaning: {player = VARIABLE_MC}}
                             IMPERATIVE_NT'report an actor taking inventory ( this is the report other ' {unit: 2} {imperative definition: 432}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -7994,7 +7994,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the taking action is The taking action ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the taking action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'taking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'taking action' {kind: action name} {action name: taking}{meaning: {taking action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'taking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'taking action' {kind: action name} {action name: taking} {meaning: {taking action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The taking action is the only way
                                 an action in the Standard ' {refined} {eval: CONSTANT_NT'The taking action is the only way
    @@ -8047,7 +8047,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'if the noun is part of something ( called the whole )' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the noun is part of something ( called the whole )' {phrase invoked: }
                                                 CONDITION_CONTEXT_NT'noun is part of something ( called the whole )'
    -                                                TEST_PROPOSITION_NT'noun is part of something ( called the whole )' {proposition: << kind=thing_c(<(*1.component_parent) : 'noun'>) ^ called='whole':thing(<(*1.component_parent) : 'noun'>) >>} {term: 'noun'}
    +                                                TEST_PROPOSITION_NT'noun is part of something ( called the whole )' {proposition: << kind=thing_c() ^ called='whole':thing() >>} {term: 'noun'}
                                         CODE_BLOCK_NT
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is the player' {colon_block_command} {unit: 2} {indent: 2}
    @@ -8075,7 +8075,7 @@ ROOT_NT
                                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the owner be the not-counting-parts holder of the noun' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the owner be the not-counting-parts holder of the noun' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'owner' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
    @@ -8085,7 +8085,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'not-counting-parts holder of the noun' {unit: 2}
                                                         INVOCATION_NT'not-counting-parts holder of the noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: WHI}
                                         INVOCATION_LIST_NT'while the owner is not nothing and the owner is not the loca' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'while the owner is not nothing and the owner is not the loca' {phrase invoked: }
    @@ -8130,7 +8130,7 @@ ROOT_NT
                                             NEW_LOCAL_CONTEXT_NT'h' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                 UNKNOWN_NT'h'
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: WHI}
                                         INVOCATION_LIST_NT'while h is not nothing and h is not a room' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'while h is not nothing and h is not a room' {phrase invoked: }
    @@ -8181,7 +8181,7 @@ ROOT_NT
                                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the local ceiling is the noun' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the local ceiling is the noun' {phrase invoked: }
    @@ -8435,7 +8435,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the removing it from action is Removing' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the removing it from action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'removing it from action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'removing it from action' {kind: action name} {action name: removing it from}{meaning: {removing it from action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'removing it from action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'removing it from action' {kind: action name} {action name: removing it from} {meaning: {removing it from action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Removing is not really
                                 an action in its own right. Whereas t' {refined} {eval: CONSTANT_NT'Removing is not really
    @@ -8472,7 +8472,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'holder of the noun' {unit: 2}
                                                         INVOCATION_NT'holder of the noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the owner is a person' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the owner is a person' {phrase invoked: }
    @@ -8488,9 +8488,9 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'convert to the taking off action on the noun' {unit: 2} {results_from_splitting} {indent: 3}
                                                         INVOCATION_NT'convert to the taking off action on the noun' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'taking off action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                            CONSTANT_NT'taking off action' {kind: action name} {action name: taking off}{meaning: {taking off action = MISCELLANEOUS_MC}}
    +                                                            CONSTANT_NT'taking off action' {kind: action name} {action name: taking off} {meaning: {taking off action = MISCELLANEOUS_MC}}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is the player' {colon_block_command} {unit: 2} {indent: 2}
                                                     INVOCATION_NT'if the actor is the player' {phrase invoked: }
    @@ -8509,9 +8509,9 @@ ROOT_NT
                                     INVOCATION_LIST_NT'convert to the taking action on the noun' {unit: 2}
                                         INVOCATION_NT'convert to the taking action on the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'taking action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                            CONSTANT_NT'taking action' {kind: action name} {action name: taking}{meaning: {taking action = MISCELLANEOUS_MC}}
    +                                            CONSTANT_NT'taking action' {kind: action name} {action name: taking} {meaning: {taking action = MISCELLANEOUS_MC}}
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             SENTENCE_NT'the can't take component parts rule is listed before the can' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: positive} {special meaning: rule-listed-in}
                                 UNPARSED_NOUN_NT'the can't take component parts rule'
    @@ -8527,7 +8527,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the dropping action is Dropping is one ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the dropping action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'dropping action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'dropping action' {kind: action name} {action name: dropping}{meaning: {dropping action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'dropping action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'dropping action' {kind: action name} {action name: dropping} {meaning: {dropping action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Dropping is one of five actions
                                 by which an actor can get ri' {refined} {eval: CONSTANT_NT'Dropping is one of five actions
    @@ -8642,7 +8642,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'silently try the actor trying taking off the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'actor trying taking off the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is wearing the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: }
    @@ -8775,7 +8775,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the putting it on action is By this act' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the putting it on action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'putting it on action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'putting it on action' {kind: action name} {action name: putting it on}{meaning: {putting it on action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'putting it on action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'putting it on action' {kind: action name} {action name: putting it on} {meaning: {putting it on action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'By this action, an actor puts
                                 something he is holding on top' {refined} {eval: CONSTANT_NT'By this action, an actor puts
    @@ -8793,9 +8793,9 @@ ROOT_NT
                                             INVOCATION_LIST_NT'convert to the dropping action on the noun' {unit: 2} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'convert to the dropping action on the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'dropping action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                    CONSTANT_NT'dropping action' {kind: action name} {action name: dropping}{meaning: {dropping action = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'dropping action' {kind: action name} {action name: dropping} {meaning: {dropping action = MISCELLANEOUS_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'check an actor putting something on ( this is the can't put ' {unit: 2} {imperative definition: 459}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -8817,9 +8817,9 @@ ROOT_NT
                                     INVOCATION_LIST_NT'carry out the implicitly taking activity with the noun' {unit: 2}
                                         INVOCATION_NT'carry out the implicitly taking activity with the noun' {phrase invoked: } {kind variable declarations: K=object}
                                             RVALUE_CONTEXT_NT'implicitly taking' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                            CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking}{meaning: {implicitly taking = ACTIVITY_MC}}
    +                                            CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking} {meaning: {implicitly taking = ACTIVITY_MC}}
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the actor is carrying the noun' {unit: 2} {colon_block_command}
                                             INVOCATION_NT'if the actor is carrying the noun' {phrase invoked: }
    @@ -8841,7 +8841,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'component parts core of the noun' {unit: 2}
                                                         INVOCATION_NT'component parts core of the noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the second-cpc be the component parts core of the second' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the second-cpc be the component parts core of the second' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'second-cpc' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
    @@ -8851,7 +8851,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'component parts core of the second noun' {unit: 2}
                                                         INVOCATION_NT'component parts core of the second noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the transfer ceiling be the common ancestor of the noun-' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the transfer ceiling be the common ancestor of the noun-' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'transfer ceiling' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
    @@ -8926,7 +8926,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'silently try the actor trying taking off the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'actor trying taking off the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is wearing the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: }
    @@ -9024,7 +9024,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the inserting it into action is By this' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the inserting it into action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'inserting it into action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'inserting it into action' {kind: action name} {action name: inserting it into}{meaning: {inserting it into action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'inserting it into action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'inserting it into action' {kind: action name} {action name: inserting it into} {meaning: {inserting it into action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'By this action, an actor puts
                                 something he is holding into a' {refined} {eval: CONSTANT_NT'By this action, an actor puts
    @@ -9042,9 +9042,9 @@ ROOT_NT
                                             INVOCATION_LIST_NT'convert to the dropping action on the noun' {unit: 2} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'convert to the dropping action on the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'dropping action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                    CONSTANT_NT'dropping action' {kind: action name} {action name: dropping}{meaning: {dropping action = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'dropping action' {kind: action name} {action name: dropping} {meaning: {dropping action = MISCELLANEOUS_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'check an actor inserting something into ( this is the can't ' {unit: 2} {imperative definition: 468}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -9066,9 +9066,9 @@ ROOT_NT
                                     INVOCATION_LIST_NT'carry out the implicitly taking activity with the noun' {unit: 2}
                                         INVOCATION_NT'carry out the implicitly taking activity with the noun' {phrase invoked: } {kind variable declarations: K=object}
                                             RVALUE_CONTEXT_NT'implicitly taking' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                            CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking}{meaning: {implicitly taking = ACTIVITY_MC}}
    +                                            CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking} {meaning: {implicitly taking = ACTIVITY_MC}}
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT} {required: value}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the actor is carrying the noun' {unit: 2} {colon_block_command}
                                             INVOCATION_NT'if the actor is carrying the noun' {phrase invoked: }
    @@ -9090,7 +9090,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'component parts core of the noun' {unit: 2}
                                                         INVOCATION_NT'component parts core of the noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the second-cpc be the component parts core of the second' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the second-cpc be the component parts core of the second' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'second-cpc' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
    @@ -9100,7 +9100,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'component parts core of the second noun' {unit: 2}
                                                         INVOCATION_NT'component parts core of the second noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'let the transfer ceiling be the common ancestor of the noun-' {unit: 2} {indent: 1}
                                         INVOCATION_NT'let the transfer ceiling be the common ancestor of the noun-' {phrase invoked: }
                                             NEW_LOCAL_CONTEXT_NT'transfer ceiling' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
    @@ -9196,7 +9196,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'silently try the actor trying taking off the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'actor trying taking off the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is wearing the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: }
    @@ -9296,7 +9296,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the eating action is Eating is the only' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the eating action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'eating action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'eating action' {kind: action name} {action name: eating}{meaning: {eating action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'eating action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'eating action' {kind: action name} {action name: eating} {meaning: {eating action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Eating is the only one of the
                                 built-in actions which can, in' {refined} {eval: CONSTANT_NT'Eating is the only one of the
    @@ -9346,7 +9346,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'try the actor trying taking off the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'try the actor trying taking off the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'actor trying taking off the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is wearing the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: }
    @@ -9389,9 +9389,9 @@ ROOT_NT
                                             INVOCATION_LIST_NT'carry out the implicitly taking activity with the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'carry out the implicitly taking activity with the noun' {phrase invoked: } {kind variable declarations: K=object}
                                                     RVALUE_CONTEXT_NT'implicitly taking' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                    CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking}{meaning: {implicitly taking = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking} {meaning: {implicitly taking = ACTIVITY_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT} {required: value}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is not carrying the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is not carrying the noun' {phrase invoked: }
    @@ -9444,42 +9444,42 @@ ROOT_NT
                             SENTENCE_NT'the specification of the going action is This is the action ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the going action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'This is the action which allows people
                                 to move from one room' {refined} {eval: CONSTANT_NT'This is the action which allows people
                                 to move from one room' {kind: text}}
                             SENTENCE_NT'the going action has a room called the room gone from ( matc' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'room' {indefinite 'a' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'room gone from ( matched as from )' {definite 'the' n/m/f s/p nom/acc}
                             SENTENCE_NT'the going action has an object called the room gone to ( mat' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'room gone to ( matched as to )' {definite 'the' n/m/f s/p nom/acc}
                             SENTENCE_NT'the going action has an object called the door gone through ' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'door gone through ( matched as through )' {definite 'the' n/m/f s/p nom/acc}
                             SENTENCE_NT'the going action has an object called the vehicle gone by ( ' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'vehicle gone by ( matched as by )' {definite 'the' n/m/f s/p nom/acc}
                             SENTENCE_NT'the going action has an object called the thing gone with ( ' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'going action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
    @@ -9515,7 +9515,7 @@ ROOT_NT
                                                     NEW_LOCAL_CONTEXT_NT'direction d' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                         UNKNOWN_NT'direction d'
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             INVOCATION_LIST_NT'let the target be the room-or-door direction d from the room' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'let the target be the room-or-door direction d from the room' {phrase invoked: }
                                                     LVALUE_LOCAL_CONTEXT_NT'target' {token to be parsed against: TEST_VALUE_NT} {required: value}
    @@ -9540,7 +9540,7 @@ ROOT_NT
                                                             LVALUE_LOCAL_CONTEXT_NT'target' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                                 LOCAL_VARIABLE_NT'target' {local: LV"target"-object object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the target is a door' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the target is a door' {phrase invoked: }
    @@ -9700,7 +9700,7 @@ ROOT_NT
                                                     NEW_LOCAL_CONTEXT_NT'direction d' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                         UNKNOWN_NT'direction d'
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             INVOCATION_LIST_NT'let the target be the room-or-door direction d from the room' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'let the target be the room-or-door direction d from the room' {phrase invoked: }
                                                     LVALUE_LOCAL_CONTEXT_NT'target' {token to be parsed against: TEST_VALUE_NT} {required: value}
    @@ -9725,7 +9725,7 @@ ROOT_NT
                                                             LVALUE_LOCAL_CONTEXT_NT'target' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                                 LOCAL_VARIABLE_NT'target' {local: LV"target"-object object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the target is a door' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the target is a door' {phrase invoked: }
    @@ -9914,8 +9914,8 @@ ROOT_NT
                                                                         UNKNOWN_NT'back way'
                                                                     RVALUE_CONTEXT_NT'opposite of the noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                                         PROPERTY_VALUE_NT'opposite of the noun'
    -                                                                        CONSTANT_NT {kind: nothing valued property} {property: 'opposite'=direction}{meaning: {opposite = PROPERTY_MC}}
    -                                                                        NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                                        CONSTANT_NT {kind: nothing valued property} {property: 'opposite'=direction} {meaning: {opposite = PROPERTY_MC}}
    +                                                                        NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                             CODE_BLOCK_NT {control structure: IF}
                                                                 INVOCATION_LIST_NT'if the location is the room gone to' {colon_block_command} {unit: 2} {indent: 4}
                                                                     INVOCATION_NT'if the location is the room gone to' {phrase invoked: }
    @@ -9933,7 +9933,7 @@ ROOT_NT
                                                                                             RVALUE_CONTEXT_NT'back way' {token to be parsed against: TEST_VALUE_NT'direction'} {required: direction}
                                                                                                 LOCAL_VARIABLE_NT'back way' {local: LV nothing}
                                                                                             RVALUE_CONTEXT_NT'location' {token to be parsed against: TEST_VALUE_NT'room'} {required: room} {token check to do: TEST_VALUE_NT'room'}
    -                                                                                            NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object}{meaning: {location = VARIABLE_MC}}
    +                                                                                            NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object} {meaning: {location = VARIABLE_MC}}
                                                                     INVOCATION_LIST_NT'let the room normally this way be the room noun from the roo' {unit: 2} {indent: 5}
                                                                         INVOCATION_NT'let the room normally this way be the room noun from the roo' {phrase invoked: }
                                                                             NEW_LOCAL_CONTEXT_NT'room normally this way' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: room}
    @@ -9943,7 +9943,7 @@ ROOT_NT
                                                                                     INVOCATION_LIST_NT'room noun from the room gone from' {unit: 2}
                                                                                         INVOCATION_NT'room noun from the room gone from' {phrase invoked: } {resulting: room} {unproven}
                                                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'direction'} {required: direction} {token check to do: TEST_VALUE_NT'direction'}
    -                                                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                                                             RVALUE_CONTEXT_NT'room gone from' {token to be parsed against: TEST_VALUE_NT'room'} {required: room}
                                                                                                 NONLOCAL_VARIABLE_NT'room gone from' {nonlocal: 'room gone from'(var)room}
                                                                     CODE_BLOCK_NT {control structure: IF}
    @@ -10152,7 +10152,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the entering action is Whereas the goin' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the entering action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'entering action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'entering action' {kind: action name} {action name: entering}{meaning: {entering action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'entering action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'entering action' {kind: action name} {action name: entering} {meaning: {entering action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Whereas the going action allows
                                 people to move from one loca' {refined} {eval: CONSTANT_NT'Whereas the going action allows
    @@ -10185,9 +10185,9 @@ ROOT_NT
                                             INVOCATION_LIST_NT'convert to the going action on the noun' {unit: 2} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'convert to the going action on the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'going action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                    CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'check an actor entering ( this is the convert enter compass ' {unit: 2} {imperative definition: 496}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -10199,9 +10199,9 @@ ROOT_NT
                                             INVOCATION_LIST_NT'convert to the going action on the noun' {unit: 2} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'convert to the going action on the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'going action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                    CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'check an actor entering ( this is the can't enter what's alr' {unit: 2} {imperative definition: 497}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -10223,7 +10223,7 @@ ROOT_NT
                                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the local ceiling is the noun' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the local ceiling is the noun' {phrase invoked: }
    @@ -10278,7 +10278,7 @@ ROOT_NT
                                                                             INVOCATION_LIST_NT'player's command includes "stand"' {unit: 2}
                                                                                 INVOCATION_NT'player's command includes "stand"' {phrase invoked: } {resulting: truth state}
                                                                                     RVALUE_CONTEXT_NT'player's command' {token to be parsed against: TEST_VALUE_NT'a snippet'} {required: snippet}
    -                                                                                    NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet}{meaning: {player's command = VARIABLE_MC}}
    +                                                                                    NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet} {meaning: {player's command = VARIABLE_MC}}
                                                                                     RVALUE_CONTEXT_NT'"stand"' {token to be parsed against: TEST_VALUE_NT'a topic'} {required: topic}
                                                                                         CONSTANT_NT'"stand"' {kind: topic}
                                                         CODE_BLOCK_NT
    @@ -10297,7 +10297,7 @@ ROOT_NT
                                                                                     INVOCATION_LIST_NT'player's command includes "sit"'
                                                                                         INVOCATION_NT'player's command includes "sit"' {phrase invoked: } {resulting: truth state}
                                                                                             RVALUE_CONTEXT_NT'player's command' {token to be parsed against: TEST_VALUE_NT'a snippet'} {required: snippet}
    -                                                                                            NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet}{meaning: {player's command = VARIABLE_MC}}
    +                                                                                            NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet} {meaning: {player's command = VARIABLE_MC}}
                                                                                             RVALUE_CONTEXT_NT'"sit"' {token to be parsed against: TEST_VALUE_NT'a topic'} {required: topic}
                                                                                                 CONSTANT_NT'"sit"' {kind: topic}
                                                                 CODE_BLOCK_NT
    @@ -10316,7 +10316,7 @@ ROOT_NT
                                                                                             INVOCATION_LIST_NT'player's command includes "lie"'
                                                                                                 INVOCATION_NT'player's command includes "lie"' {phrase invoked: } {resulting: truth state}
                                                                                                     RVALUE_CONTEXT_NT'player's command' {token to be parsed against: TEST_VALUE_NT'a snippet'} {required: snippet}
    -                                                                                                    NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet}{meaning: {player's command = VARIABLE_MC}}
    +                                                                                                    NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet} {meaning: {player's command = VARIABLE_MC}}
                                                                                                     RVALUE_CONTEXT_NT'"lie"' {token to be parsed against: TEST_VALUE_NT'a topic'} {required: topic}
                                                                                                         CONSTANT_NT'"lie"' {kind: topic}
                                                                         CODE_BLOCK_NT
    @@ -10430,7 +10430,7 @@ ROOT_NT
                                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the local ceiling is the actor' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'if the local ceiling is the actor' {phrase invoked: }
    @@ -10471,7 +10471,7 @@ ROOT_NT
                                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: WHI}
                                         INVOCATION_LIST_NT'while the holder of the actor is not the local ceiling' {colon_block_command} {unit: 2} {indent: 1}
                                             INVOCATION_NT'while the holder of the actor is not the local ceiling' {phrase invoked: }
    @@ -10550,12 +10550,12 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'holder of the noun' {unit: 2}
                                                         INVOCATION_NT'holder of the noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the noun is part of the target' {unit: 2} {indent: 1} {colon_block_command}
                                             INVOCATION_NT'if the noun is part of the target' {phrase invoked: }
                                                 CONDITION_CONTEXT_NT'noun is part of the target'
    -                                                TEST_PROPOSITION_NT'noun is part of the target' {proposition: << ('the target' == <(*1.component_parent) : 'noun'>) >>} {term: 'noun'}
    +                                                TEST_PROPOSITION_NT'noun is part of the target' {proposition: << ('the target' == ) >>} {term: 'noun'}
                                         CODE_BLOCK_NT
                                             INVOCATION_LIST_NT'let the target be the holder of the target' {unit: 2} {results_from_splitting} {indent: 2}
                                                 INVOCATION_NT'let the target be the holder of the target' {phrase invoked: }
    @@ -10629,9 +10629,9 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'convert to the entering action on the noun' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'convert to the entering action on the noun' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'entering action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                            CONSTANT_NT'entering action' {kind: action name} {action name: entering}{meaning: {entering action = MISCELLANEOUS_MC}}
    +                                                            CONSTANT_NT'entering action' {kind: action name} {action name: entering} {meaning: {entering action = MISCELLANEOUS_MC}}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                     INVOCATION_LIST_NT'continue the action' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'continue the action' {phrase invoked: }
                                             INVOCATION_LIST_NT'let the target be the holder of the target' {unit: 2} {indent: 2}
    @@ -10651,7 +10651,7 @@ ROOT_NT
                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'report an actor entering ( this is the standard report enter' {unit: 2} {imperative definition: 504}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -10717,7 +10717,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'describe locale for the noun' {unit: 2} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'describe locale for the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             SENTENCE_NT'exiting is an action applying to nothing' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
                                 UNPARSED_NOUN_NT'exiting'
    @@ -10728,7 +10728,7 @@ ROOT_NT
                                 UNPARSED_NOUN_NT'Exit'
                             SENTENCE_NT'the exiting action has an object called the container exited' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'exiting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'exiting action' {kind: action name} {action name: exiting}{meaning: {exiting action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'exiting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'exiting action' {kind: action name} {action name: exiting} {meaning: {exiting action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
    @@ -10736,7 +10736,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the exiting action is Whereas the going' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the exiting action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'exiting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'exiting action' {kind: action name} {action name: exiting}{meaning: {exiting action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'exiting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'exiting action' {kind: action name} {action name: exiting} {meaning: {exiting action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Whereas the going action allows
                                 people to move from one loca' {refined} {eval: CONSTANT_NT'Whereas the going action allows
    @@ -10772,7 +10772,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'convert to the going action on the outside' {unit: 2} {results_from_splitting} {indent: 3}
                                                         INVOCATION_NT'convert to the going action on the outside' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'going action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                            CONSTANT_NT'going action' {kind: action name} {action name: going}{meaning: {going action = MISCELLANEOUS_MC}}
    +                                                            CONSTANT_NT'going action' {kind: action name} {action name: going} {meaning: {going action = MISCELLANEOUS_MC}}
                                                             RVALUE_CONTEXT_NT'outside' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                                 CONSTANT_NT'outside' {kind: direction} {instance: I33'outside'} {enumeration: 0}
                             IMPERATIVE_NT'check an actor exiting ( this is the can't exit when not ins' {unit: 2} {imperative definition: 508}
    @@ -10838,7 +10838,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'convert to the getting off action on the platform' {unit: 2} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'convert to the getting off action on the platform' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'getting off action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                    CONSTANT_NT'getting off action' {kind: action name} {action name: getting off}{meaning: {getting off action = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'getting off action' {kind: action name} {action name: getting off} {meaning: {getting off action = MISCELLANEOUS_MC}}
                                                     RVALUE_CONTEXT_NT'platform' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
                                                         LOCAL_VARIABLE_NT'platform' {local: LV"platform"-supporter supporter}
                             IMPERATIVE_NT'carry out an actor exiting ( this is the standard exiting ru' {unit: 2} {imperative definition: 511}
    @@ -10924,7 +10924,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the getting off action is The getting o' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the getting off action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'getting off action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'getting off action' {kind: action name} {action name: getting off}{meaning: {getting off action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'getting off action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'getting off action' {kind: action name} {action name: getting off} {meaning: {getting off action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The getting off action is for
                                 actors who are currently on to' {refined} {eval: CONSTANT_NT'The getting off action is for
    @@ -10971,7 +10971,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'not-counting-parts holder of the noun' {unit: 2}
                                                         INVOCATION_NT'not-counting-parts holder of the noun' {phrase invoked: } {resulting: object}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_NT'surreptitiously move the actor to the former exterior' {unit: 2}
                                         INVOCATION_NT'surreptitiously move the actor to the former exterior' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    @@ -11018,35 +11018,35 @@ ROOT_NT
                             SENTENCE_NT'the specification of the looking action is The looking actio' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the looking action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking}{meaning: {looking action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking} {meaning: {looking action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The looking action describes the
                                 player's current room and a' {refined} {eval: CONSTANT_NT'The looking action describes the
                                 player's current room and a' {kind: text}}
                             SENTENCE_NT'the looking action has an action name called the room-descri' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking}{meaning: {looking action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking} {meaning: {looking action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'action name' {indefinite 'an' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'room-describing action' {definite 'the' n/m/f s/p nom/acc}
                             SENTENCE_NT'the looking action has a truth state called abbreviated form' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking}{meaning: {looking action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking} {meaning: {looking action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'truth state' {indefinite 'a' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'abbreviated form allowed'
                             SENTENCE_NT'the looking action has a number called the visibility level ' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking}{meaning: {looking action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking} {meaning: {looking action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'number' {indefinite 'a' n/m/f nom/acc s}
                                         UNPARSED_NOUN_NT'visibility level count' {definite 'the' n/m/f s/p nom/acc}
                             SENTENCE_NT'the looking action has an object called the visibility ceili' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking}{meaning: {looking action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'looking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking action' {kind: action name} {action name: looking} {meaning: {looking action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
    @@ -11093,7 +11093,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'begin the printing the name of a dark room activity' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'begin the printing the name of a dark room activity' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'printing the name of a dark room' {token to be parsed against: TEST_VALUE_NT'activity on nothing'} {required: activity}
    -                                                    CONSTANT_NT'printing the name of a dark room' {kind: activity on objects} {activity: printing the name of a dark room}{meaning: {printing the name of a dark room = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'printing the name of a dark room' {kind: activity on objects} {activity: printing the name of a dark room} {meaning: {printing the name of a dark room = ACTIVITY_MC}}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if handling the printing the name of a dark room activity' {colon_block_command} {unit: 2} {indent: 2}
                                                     INVOCATION_NT'if handling the printing the name of a dark room activity' {phrase invoked: }
    @@ -11103,7 +11103,7 @@ ROOT_NT
                                                                     INVOCATION_LIST_NT'handling the printing the name of a dark room activity' {unit: 2}
                                                                         INVOCATION_NT'handling the printing the name of a dark room activity' {phrase invoked: } {resulting: truth state}
                                                                             RVALUE_CONTEXT_NT'printing the name of a dark room' {token to be parsed against: TEST_VALUE_NT'activity'} {required: activity}
    -                                                                            CONSTANT_NT'printing the name of a dark room' {kind: activity on objects} {activity: printing the name of a dark room}{meaning: {printing the name of a dark room = ACTIVITY_MC}}
    +                                                                            CONSTANT_NT'printing the name of a dark room' {kind: activity on objects} {activity: printing the name of a dark room} {meaning: {printing the name of a dark room = ACTIVITY_MC}}
                                                 CODE_BLOCK_NT
                                                     CODE_BLOCK_NT'say "Darkness" ( a )' {control structure: SAY}
                                                         INVOCATION_LIST_SAY_NT'"Darkness" ( a )'
    @@ -11113,7 +11113,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'end the printing the name of a dark room activity' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'end the printing the name of a dark room activity' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'printing the name of a dark room' {token to be parsed against: TEST_VALUE_NT'activity on nothing'} {required: activity}
    -                                                    CONSTANT_NT'printing the name of a dark room' {kind: activity on objects} {activity: printing the name of a dark room}{meaning: {printing the name of a dark room = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'printing the name of a dark room' {kind: activity on objects} {activity: printing the name of a dark room} {meaning: {printing the name of a dark room = ACTIVITY_MC}}
                                         CODE_BLOCK_NT'otherwise' {control structure: O}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the visibility ceiling is the location' {colon_block_command} {indent: 1}
    @@ -11227,7 +11227,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'begin the printing the description of a dark room activity' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'begin the printing the description of a dark room activity' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'printing the description of a dark room' {token to be parsed against: TEST_VALUE_NT'activity on nothing'} {required: activity}
    -                                                    CONSTANT_NT'printing the description of a dark room' {kind: activity on objects} {activity: printing the description of a dark room}{meaning: {printing the description of a dark room = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'printing the description of a dark room' {kind: activity on objects} {activity: printing the description of a dark room} {meaning: {printing the description of a dark room = ACTIVITY_MC}}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if handling the printing the description of a dark room acti' {colon_block_command} {unit: 2} {indent: 2}
                                                     INVOCATION_NT'if handling the printing the description of a dark room acti' {phrase invoked: }
    @@ -11237,7 +11237,7 @@ ROOT_NT
                                                                     INVOCATION_LIST_NT'handling the printing the description of a dark room activit' {unit: 2}
                                                                         INVOCATION_NT'handling the printing the description of a dark room activit' {phrase invoked: } {resulting: truth state}
                                                                             RVALUE_CONTEXT_NT'printing the description of a dark room' {token to be parsed against: TEST_VALUE_NT'activity'} {required: activity}
    -                                                                            CONSTANT_NT'printing the description of a dark room' {kind: activity on objects} {activity: printing the description of a dark room}{meaning: {printing the description of a dark room = ACTIVITY_MC}}
    +                                                                            CONSTANT_NT'printing the description of a dark room' {kind: activity on objects} {activity: printing the description of a dark room} {meaning: {printing the description of a dark room = ACTIVITY_MC}}
                                                 CODE_BLOCK_NT
                                                     INVOCATION_LIST_NT'now the prior named object is nothing' {unit: 2} {indent: 3} {control structure: NOW}
                                                         CONDITION_CONTEXT_NT'the prior named object is nothing'
    @@ -11249,7 +11249,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'end the printing the description of a dark room activity' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'end the printing the description of a dark room activity' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'printing the description of a dark room' {token to be parsed against: TEST_VALUE_NT'activity on nothing'} {required: activity}
    -                                                    CONSTANT_NT'printing the description of a dark room' {kind: activity on objects} {activity: printing the description of a dark room}{meaning: {printing the description of a dark room = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'printing the description of a dark room' {kind: activity on objects} {activity: printing the description of a dark room} {meaning: {printing the description of a dark room = ACTIVITY_MC}}
                                         CODE_BLOCK_NT'otherwise' {control structure: O}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the visibility ceiling is the location' {colon_block_command} {indent: 1}
    @@ -11433,14 +11433,14 @@ ROOT_NT
                             SENTENCE_NT'the specification of the examining action is The act of look' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the examining action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'examining action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'examining action' {kind: action name} {action name: examining}{meaning: {examining action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'examining action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'examining action' {kind: action name} {action name: examining} {meaning: {examining action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The act of looking closely at
                                 something. Note that the noun ' {refined} {eval: CONSTANT_NT'The act of looking closely at
                                 something. Note that the noun ' {kind: text}}
                             SENTENCE_NT'the examining action has a truth state called examine text p' {unit: 2} {classified}
                                 VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                            PROPER_NOUN_NT'examining action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'examining action' {kind: action name} {action name: examining}{meaning: {examining action = MISCELLANEOUS_MC}}}
    +                            PROPER_NOUN_NT'examining action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'examining action' {kind: action name} {action name: examining} {meaning: {examining action = MISCELLANEOUS_MC}}}
                                 ALLOWED_NT {refined}
                                     PROPERTYCALLED_NT'called'
                                         UNPARSED_NOUN_NT'truth state' {indefinite 'a' n/m/f nom/acc s}
    @@ -11460,8 +11460,8 @@ ROOT_NT
                                                     INVOCATION_NT'description of the noun' {phrase invoked: } {kind variable declarations: K=text} {save self}
                                                         RVALUE_CONTEXT_NT'description of the noun' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                             PROPERTY_VALUE_NT'description of the noun' {record as self}
    -                                                            CONSTANT_NT {kind: nothing valued property} {property: 'description'=text}{meaning: {description = PROPERTY_MC}}
    -                                                            NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            CONSTANT_NT {kind: nothing valued property} {property: 'description'=text} {meaning: {description = PROPERTY_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                 INVOCATION_LIST_SAY_NT'line break'
                                                     INVOCATION_NT'line break' {phrase invoked: }
                                             INVOCATION_LIST_NT'now examine text printed is true' {unit: 2} {indent: 2} {control structure: NOW}
    @@ -11513,7 +11513,7 @@ ROOT_NT
                                                             INVOCATION_LIST_NT'list the contents of the noun , as a sentence , tersely , no' {unit: 2} {indent: 4}
                                                                 INVOCATION_NT'list the contents of the noun' {phrase invoked: } {phrase options invoked: as a sentence , tersely , not listing concealed items , prefacing with is/are}
                                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                             CODE_BLOCK_NT'say "."' {control structure: SAY}
                                                                 INVOCATION_LIST_SAY_NT'"."'
                                                                     INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
    @@ -11567,7 +11567,7 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'list the contents of the noun , as a sentence , tersely , no' {unit: 2} {indent: 3}
                                                         INVOCATION_NT'list the contents of the noun' {phrase invoked: } {phrase options invoked: as a sentence , tersely , not listing concealed items , prefacing with is/are , including contents , giving brief inventory information}
                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                     CODE_BLOCK_NT'say "."' {control structure: SAY}
                                                         INVOCATION_LIST_SAY_NT'"."'
                                                             INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
    @@ -11627,7 +11627,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the looking under action is The standar' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the looking under action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'looking under action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking under action' {kind: action name} {action name: looking under}{meaning: {looking under action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'looking under action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'looking under action' {kind: action name} {action name: looking under} {meaning: {looking under action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The standard Inform world
                                 model does not have a concept of t' {refined} {eval: CONSTANT_NT'The standard Inform world
    @@ -11680,7 +11680,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the searching action is Searching looks' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the searching action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'searching action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'searching action' {kind: action name} {action name: searching}{meaning: {searching action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'searching action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'searching action' {kind: action name} {action name: searching} {meaning: {searching action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Searching looks at the contents
                                 of an open or transparent co' {refined} {eval: CONSTANT_NT'Searching looks at the contents
    @@ -11745,7 +11745,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'list the contents of the noun , as a sentence , tersely , no' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'list the contents of the noun' {phrase invoked: } {phrase options invoked: as a sentence , tersely , not listing concealed items , prefacing with is/are}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             CODE_BLOCK_NT'say "."' {control structure: SAY}
                                                 INVOCATION_LIST_SAY_NT'"."'
                                                     INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
    @@ -11773,7 +11773,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'list the contents of the noun , as a sentence , tersely , no' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'list the contents of the noun' {phrase invoked: } {phrase options invoked: as a sentence , tersely , not listing concealed items , prefacing with is/are}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             CODE_BLOCK_NT'say "."' {control structure: SAY}
                                                 INVOCATION_LIST_SAY_NT'"."'
                                                     INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
    @@ -11811,7 +11811,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the consulting it about action is Consu' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the consulting it about action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'consulting it about action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'consulting it about action' {kind: action name} {action name: consulting it about}{meaning: {consulting it about action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'consulting it about action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'consulting it about action' {kind: action name} {action name: consulting it about} {meaning: {consulting it about action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Consulting is a very
                                 flexible and potentially powerful actio' {refined} {eval: CONSTANT_NT'Consulting is a very
    @@ -11847,7 +11847,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the locking it with action is Locking i' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the locking it with action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'locking it with action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'locking it with action' {kind: action name} {action name: locking it with}{meaning: {locking it with action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'locking it with action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'locking it with action' {kind: action name} {action name: locking it with} {meaning: {locking it with action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Locking is the act of
                                 using an object such as a key to ensur' {refined} {eval: CONSTANT_NT'Locking is the act of
    @@ -11993,7 +11993,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the unlocking it with action is Unlocki' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the unlocking it with action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'unlocking it with action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'unlocking it with action' {kind: action name} {action name: unlocking it with}{meaning: {unlocking it with action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'unlocking it with action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'unlocking it with action' {kind: action name} {action name: unlocking it with} {meaning: {unlocking it with action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Unlocking undoes the
                                 effect of locking, and renders the noun' {refined} {eval: CONSTANT_NT'Unlocking undoes the
    @@ -12118,7 +12118,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the switching on action is The switchin' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the switching on action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'switching on action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'switching on action' {kind: action name} {action name: switching on}{meaning: {switching on action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'switching on action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'switching on action' {kind: action name} {action name: switching on} {meaning: {switching on action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The switching on and switching
                                 off actions are for the simpl' {refined} {eval: CONSTANT_NT'The switching on and switching
    @@ -12198,7 +12198,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the switching off action is The switchi' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the switching off action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'switching off action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'switching off action' {kind: action name} {action name: switching off}{meaning: {switching off action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'switching off action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'switching off action' {kind: action name} {action name: switching off} {meaning: {switching off action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The switching off and switching
                                 on actions are for the simpl' {refined} {eval: CONSTANT_NT'The switching off and switching
    @@ -12278,7 +12278,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the opening action is Opening makes som' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the opening action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'opening action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'opening action' {kind: action name} {action name: opening}{meaning: {opening action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'opening action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'opening action' {kind: action name} {action name: opening} {meaning: {opening action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Opening makes something no longer
                                 a physical barrier. The ac' {refined} {eval: CONSTANT_NT'Opening makes something no longer
    @@ -12393,7 +12393,7 @@ ROOT_NT
                                                             INVOCATION_LIST_NT'list the contents of the noun , as a sentence , tersely , no' {unit: 2} {indent: 4}
                                                                 INVOCATION_NT'list the contents of the noun' {phrase invoked: } {phrase options invoked: as a sentence , tersely , not listing concealed items}
                                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                             CODE_BLOCK_NT'say "."' {control structure: SAY}
                                                                 INVOCATION_LIST_SAY_NT'"."'
                                                                     INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
    @@ -12452,7 +12452,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the closing action is Closing makes som' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the closing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'closing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'closing action' {kind: action name} {action name: closing}{meaning: {closing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'closing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'closing action' {kind: action name} {action name: closing} {meaning: {closing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Closing makes something into
                                 a physical barrier. The action ' {refined} {eval: CONSTANT_NT'Closing makes something into
    @@ -12558,7 +12558,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the wearing action is The Standard Rule' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the wearing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'wearing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'wearing action' {kind: action name} {action name: wearing}{meaning: {wearing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'wearing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'wearing action' {kind: action name} {action name: wearing} {meaning: {wearing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules give Inform
                                 only a simple model of clothi' {refined} {eval: CONSTANT_NT'The Standard Rules give Inform
    @@ -12674,7 +12674,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the taking off action is The Standard R' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the taking off action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'taking off action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'taking off action' {kind: action name} {action name: taking off}{meaning: {taking off action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'taking off action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'taking off action' {kind: action name} {action name: taking off} {meaning: {taking off action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules give Inform
                                 only a simple model of clothi' {refined} {eval: CONSTANT_NT'The Standard Rules give Inform
    @@ -12765,7 +12765,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the giving it to action is This action ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the giving it to action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'giving it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'giving it to action' {kind: action name} {action name: giving it to}{meaning: {giving it to action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'giving it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'giving it to action' {kind: action name} {action name: giving it to} {meaning: {giving it to action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'This action is indexed by
                                 Inform under 'Actions concerning o' {refined} {eval: CONSTANT_NT'This action is indexed by
    @@ -12849,7 +12849,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'silently try the actor trying taking off the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'actor trying taking off the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is wearing the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: }
    @@ -12899,9 +12899,9 @@ ROOT_NT
                                     INVOCATION_LIST_NT'move the noun to the second noun' {unit: 2}
                                         INVOCATION_NT'move the noun to the second noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                             IMPERATIVE_NT'report an actor giving something to ( this is the standard r' {unit: 2} {imperative definition: 586}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -12944,7 +12944,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the showing it to action is Anyone can ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the showing it to action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'showing it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'showing it to action' {kind: action name} {action name: showing it to}{meaning: {showing it to action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'showing it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'showing it to action' {kind: action name} {action name: showing it to} {meaning: {showing it to action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Anyone can show anyone
                                 else something which they are carryin' {refined} {eval: CONSTANT_NT'Anyone can show anyone
    @@ -12981,9 +12981,9 @@ ROOT_NT
                                             INVOCATION_LIST_NT'convert to the examining action on the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'convert to the examining action on the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'examining action' {token to be parsed against: TEST_VALUE_NT'an action name'} {required: action name}
    -                                                    CONSTANT_NT'examining action' {kind: action name} {action name: examining}{meaning: {examining action = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'examining action' {kind: action name} {action name: examining} {meaning: {examining action = MISCELLANEOUS_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'check an actor showing something to ( this is the block show' {unit: 2} {imperative definition: 589}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -13010,7 +13010,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the waking action is This is the act of' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the waking action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'waking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waking action' {kind: action name} {action name: waking}{meaning: {waking action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'waking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waking action' {kind: action name} {action name: waking} {meaning: {waking action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'This is the act of jostling
                                 a sleeping person to wake him or' {refined} {eval: CONSTANT_NT'This is the act of jostling
    @@ -13043,7 +13043,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the throwing it at action is Throwing s' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the throwing it at action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'throwing it at action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'throwing it at action' {kind: action name} {action name: throwing it at}{meaning: {throwing it at action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'throwing it at action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'throwing it at action' {kind: action name} {action name: throwing it at} {meaning: {throwing it at action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Throwing something at
                                 someone or something is difficult for ' {refined} {eval: CONSTANT_NT'Throwing something at
    @@ -13064,7 +13064,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'silently try the actor trying taking off the noun' {unit: 2} {indent: 2}
                                                 INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'actor trying taking off the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'actor trying taking off the noun' {kind: action} {explicit action: }
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the actor is wearing the noun' {unit: 2} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: }
    @@ -13124,7 +13124,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the attacking action is Violence is sel' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the attacking action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'attacking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'attacking action' {kind: action name} {action name: attacking}{meaning: {attacking action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'attacking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'attacking action' {kind: action name} {action name: attacking} {meaning: {attacking action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Violence is seldom the answer,
                                 and attempts to attack anothe' {refined} {eval: CONSTANT_NT'Violence is seldom the answer,
    @@ -13157,7 +13157,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the kissing action is Possibly because ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the kissing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'kissing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'kissing action' {kind: action name} {action name: kissing}{meaning: {kissing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'kissing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'kissing action' {kind: action name} {action name: kissing} {meaning: {kissing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Possibly because Inform was
                                 originally written by an English' {refined} {eval: CONSTANT_NT'Possibly because Inform was
    @@ -13209,7 +13209,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the answering it that action is The Sta' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the answering it that action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'answering it that action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'answering it that action' {kind: action name} {action name: answering it that}{meaning: {answering it that action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'answering it that action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'answering it that action' {kind: action name} {action name: answering it that} {meaning: {answering it that action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules do
                                 not include any systematic way to hand' {refined} {eval: CONSTANT_NT'The Standard Rules do
    @@ -13242,7 +13242,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the telling it about action is The Stan' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the telling it about action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'telling it about action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'telling it about action' {kind: action name} {action name: telling it about}{meaning: {telling it about action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'telling it about action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'telling it about action' {kind: action name} {action name: telling it about} {meaning: {telling it about action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules do
                                 not include any systematic way to hand' {refined} {eval: CONSTANT_NT'The Standard Rules do
    @@ -13296,7 +13296,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the asking it about action is The Stand' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the asking it about action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'asking it about action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'asking it about action' {kind: action name} {action name: asking it about}{meaning: {asking it about action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'asking it about action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'asking it about action' {kind: action name} {action name: asking it about} {meaning: {asking it about action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules do
                                 not include any systematic way to hand' {refined} {eval: CONSTANT_NT'The Standard Rules do
    @@ -13329,7 +13329,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the asking it for action is The Standar' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the asking it for action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'asking it for action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'asking it for action' {kind: action name} {action name: asking it for}{meaning: {asking it for action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'asking it for action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'asking it for action' {kind: action name} {action name: asking it for} {meaning: {asking it for action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules do
                                 not include any systematic way to hand' {refined} {eval: CONSTANT_NT'The Standard Rules do
    @@ -13354,11 +13354,11 @@ ROOT_NT
                                     INVOCATION_LIST_NT'convert to request of the noun to perform giving it to actio' {unit: 2}
                                         INVOCATION_NT'convert to request of the noun to perform giving it to actio' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                             RVALUE_CONTEXT_NT'giving it to action' {token to be parsed against: TEST_VALUE_NT'action name'} {required: action name}
    -                                            CONSTANT_NT'giving it to action' {kind: action name} {action name: giving it to}{meaning: {giving it to action = MISCELLANEOUS_MC}}
    +                                            CONSTANT_NT'giving it to action' {kind: action name} {action name: giving it to} {meaning: {giving it to action = MISCELLANEOUS_MC}}
                                             RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                                             RVALUE_CONTEXT_NT'actor' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                 NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}
                         HEADING_NT'section 7 - standard actions which are checked but then do n' {heading 5} {under: H5'section 7 - standard actions which are checked but then do nothing unless rules intervene'} {unit: 2}
    @@ -13373,7 +13373,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the waiting action is The inaction acti' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the waiting action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'waiting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waiting action' {kind: action name} {action name: waiting}{meaning: {waiting action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'waiting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waiting action' {kind: action name} {action name: waiting} {meaning: {waiting action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The inaction action: where would
                                 we be without waiting? Wait' {refined} {eval: CONSTANT_NT'The inaction action: where would
    @@ -13419,7 +13419,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the touching action is Touching is just' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the touching action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'touching action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'touching action' {kind: action name} {action name: touching}{meaning: {touching action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'touching action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'touching action' {kind: action name} {action name: touching} {meaning: {touching action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Touching is just that, touching
                                 something without applying p' {refined} {eval: CONSTANT_NT'Touching is just that, touching
    @@ -13551,7 +13551,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the waving action is Waving in this sen' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the waving action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'waving action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waving action' {kind: action name} {action name: waving}{meaning: {waving action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'waving action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waving action' {kind: action name} {action name: waving} {meaning: {waving action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Waving in this sense is like
                                 waving a sceptre: the item to b' {refined} {eval: CONSTANT_NT'Waving in this sense is like
    @@ -13616,7 +13616,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the pulling action is Pulling is the ac' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the pulling action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'pulling action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'pulling action' {kind: action name} {action name: pulling}{meaning: {pulling action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'pulling action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'pulling action' {kind: action name} {action name: pulling} {meaning: {pulling action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Pulling is the act of pulling
                                 something not grossly larger t' {refined} {eval: CONSTANT_NT'Pulling is the act of pulling
    @@ -13725,7 +13725,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the pushing action is Pushing is the ac' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the pushing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'pushing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'pushing action' {kind: action name} {action name: pushing}{meaning: {pushing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'pushing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'pushing action' {kind: action name} {action name: pushing} {meaning: {pushing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Pushing is the act of pushing
                                 something not grossly larger t' {refined} {eval: CONSTANT_NT'Pushing is the act of pushing
    @@ -13834,7 +13834,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the turning action is Turning is the ac' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the turning action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'turning action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'turning action' {kind: action name} {action name: turning}{meaning: {turning action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'turning action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'turning action' {kind: action name} {action name: turning} {meaning: {turning action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Turning is the act of rotating
                                 something - say, a dial.In ' {refined} {eval: CONSTANT_NT'Turning is the act of rotating
    @@ -13943,7 +13943,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the pushing it to action is This action' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the pushing it to action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'pushing it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'pushing it to action' {kind: action name} {action name: pushing it to}{meaning: {pushing it to action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'pushing it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'pushing it to action' {kind: action name} {action name: pushing it to} {meaning: {pushing it to action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'This action covers pushing
                                 a large object, not being carried' {refined} {eval: CONSTANT_NT'This action covers pushing
    @@ -14064,7 +14064,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the squeezing action is Squeezing is an' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the squeezing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'squeezing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'squeezing action' {kind: action name} {action name: squeezing}{meaning: {squeezing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'squeezing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'squeezing action' {kind: action name} {action name: squeezing} {meaning: {squeezing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'Squeezing is an action which
                                 can conveniently vary from sque' {refined} {eval: CONSTANT_NT'Squeezing is an action which
    @@ -14130,7 +14130,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the saying yes action is The Standard R' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the saying yes action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'saying yes action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'saying yes action' {kind: action name} {action name: saying yes}{meaning: {saying yes action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'saying yes action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'saying yes action' {kind: action name} {action name: saying yes} {meaning: {saying yes action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor saying yes ( this is the block saying yes rul' {unit: 2} {imperative definition: 629}
    @@ -14159,7 +14159,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the saying no action is The Standard Ru' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the saying no action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'saying no action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'saying no action' {kind: action name} {action name: saying no}{meaning: {saying no action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'saying no action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'saying no action' {kind: action name} {action name: saying no} {meaning: {saying no action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor saying no ( this is the block saying no rule ' {unit: 2} {imperative definition: 630}
    @@ -14188,7 +14188,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the burning action is The Standard Rule' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the burning action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'burning action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'burning action' {kind: action name} {action name: burning}{meaning: {burning action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'burning action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'burning action' {kind: action name} {action name: burning} {meaning: {burning action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor burning ( this is the block burning rule )' {unit: 2} {imperative definition: 631}
    @@ -14217,7 +14217,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the waking up action is The Standard Ru' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the waking up action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'waking up action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waking up action' {kind: action name} {action name: waking up}{meaning: {waking up action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'waking up action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waking up action' {kind: action name} {action name: waking up} {meaning: {waking up action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor waking up ( this is the block waking up rule ' {unit: 2} {imperative definition: 632}
    @@ -14248,7 +14248,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the thinking action is The Standard Rul' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the thinking action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'thinking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'thinking action' {kind: action name} {action name: thinking}{meaning: {thinking action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'thinking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'thinking action' {kind: action name} {action name: thinking} {meaning: {thinking action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor thinking ( this is the block thinking rule )' {unit: 2} {imperative definition: 633}
    @@ -14277,7 +14277,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the smelling action is The Standard Rul' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the smelling action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'smelling action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'smelling action' {kind: action name} {action name: smelling}{meaning: {smelling action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'smelling action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'smelling action' {kind: action name} {action name: smelling} {meaning: {smelling action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'report an actor smelling ( this is the report smelling rule ' {unit: 2} {imperative definition: 634}
    @@ -14319,7 +14319,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the listening to action is The Standard' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the listening to action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'listening to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'listening to action' {kind: action name} {action name: listening to}{meaning: {listening to action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'listening to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'listening to action' {kind: action name} {action name: listening to} {meaning: {listening to action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'report an actor listening to ( this is the report listening ' {unit: 2} {imperative definition: 635}
    @@ -14361,7 +14361,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the tasting action is The Standard Rule' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the tasting action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'tasting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'tasting action' {kind: action name} {action name: tasting}{meaning: {tasting action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'tasting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'tasting action' {kind: action name} {action name: tasting} {meaning: {tasting action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'report an actor tasting ( this is the report tasting rule )' {unit: 2} {imperative definition: 636}
    @@ -14403,7 +14403,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the cutting action is The Standard Rule' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the cutting action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'cutting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'cutting action' {kind: action name} {action name: cutting}{meaning: {cutting action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'cutting action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'cutting action' {kind: action name} {action name: cutting} {meaning: {cutting action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor cutting ( this is the block cutting rule )' {unit: 2} {imperative definition: 637}
    @@ -14432,7 +14432,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the jumping action is The Standard Rule' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the jumping action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'jumping action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'jumping action' {kind: action name} {action name: jumping}{meaning: {jumping action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'jumping action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'jumping action' {kind: action name} {action name: jumping} {meaning: {jumping action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'report an actor jumping ( this is the report jumping rule )' {unit: 2} {imperative definition: 638}
    @@ -14474,7 +14474,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the tying it to action is The Standard ' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the tying it to action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'tying it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'tying it to action' {kind: action name} {action name: tying it to}{meaning: {tying it to action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'tying it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'tying it to action' {kind: action name} {action name: tying it to} {meaning: {tying it to action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor tying something to ( this is the block tying ' {unit: 2} {imperative definition: 639}
    @@ -14503,7 +14503,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the drinking action is The Standard Rul' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the drinking action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'drinking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'drinking action' {kind: action name} {action name: drinking}{meaning: {drinking action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'drinking action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'drinking action' {kind: action name} {action name: drinking} {meaning: {drinking action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor drinking ( this is the block drinking rule )' {unit: 2} {imperative definition: 640}
    @@ -14534,7 +14534,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the saying sorry action is The Standard' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the saying sorry action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'saying sorry action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'saying sorry action' {kind: action name} {action name: saying sorry}{meaning: {saying sorry action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'saying sorry action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'saying sorry action' {kind: action name} {action name: saying sorry} {meaning: {saying sorry action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor saying sorry ( this is the block saying sorry' {unit: 2} {imperative definition: 641}
    @@ -14568,7 +14568,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the swinging action is The Standard Rul' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the swinging action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'swinging action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'swinging action' {kind: action name} {action name: swinging}{meaning: {swinging action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'swinging action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'swinging action' {kind: action name} {action name: swinging} {meaning: {swinging action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor swinging ( this is the block swinging rule )' {unit: 2} {imperative definition: 642}
    @@ -14599,7 +14599,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the rubbing action is The Standard Rule' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the rubbing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'rubbing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'rubbing action' {kind: action name} {action name: rubbing}{meaning: {rubbing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'rubbing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'rubbing action' {kind: action name} {action name: rubbing} {meaning: {rubbing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor rubbing ( this is the can't rub another perso' {unit: 2} {imperative definition: 643}
    @@ -14662,7 +14662,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the setting it to action is The Standar' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the setting it to action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'setting it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'setting it to action' {kind: action name} {action name: setting it to}{meaning: {setting it to action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'setting it to action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'setting it to action' {kind: action name} {action name: setting it to} {meaning: {setting it to action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor setting something to ( this is the block sett' {unit: 2} {imperative definition: 645}
    @@ -14691,7 +14691,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the waving hands action is The Standard' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the waving hands action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'waving hands action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waving hands action' {kind: action name} {action name: waving hands}{meaning: {waving hands action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'waving hands action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'waving hands action' {kind: action name} {action name: waving hands} {meaning: {waving hands action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'report an actor waving hands ( this is the report waving han' {unit: 2} {imperative definition: 646}
    @@ -14733,7 +14733,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the buying action is The Standard Rules' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the buying action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'buying action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'buying action' {kind: action name} {action name: buying}{meaning: {buying action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'buying action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'buying action' {kind: action name} {action name: buying} {meaning: {buying action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor buying ( this is the block buying rule )' {unit: 2} {imperative definition: 647}
    @@ -14764,7 +14764,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the climbing action is The Standard Rul' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the climbing action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'climbing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'climbing action' {kind: action name} {action name: climbing}{meaning: {climbing action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'climbing action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'climbing action' {kind: action name} {action name: climbing} {meaning: {climbing action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor climbing ( this is the block climbing rule )' {unit: 2} {imperative definition: 648}
    @@ -14793,7 +14793,7 @@ ROOT_NT
                             SENTENCE_NT'the specification of the sleeping action is The Standard Rul' {unit: 2} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                                 X_OF_Y_NT'specification of the sleeping action' {definite 'the' n/m/f s/p nom/acc} {refined}
    -                                PROPER_NOUN_NT'sleeping action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'sleeping action' {kind: action name} {action name: sleeping}{meaning: {sleeping action = MISCELLANEOUS_MC}}}
    +                                PROPER_NOUN_NT'sleeping action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'sleeping action' {kind: action name} {action name: sleeping} {meaning: {sleeping action = MISCELLANEOUS_MC}}}
                                     PROPER_NOUN_NT'specification' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'specification'=text}}
                                 PROPER_NOUN_NT'The Standard Rules define this action in only a minimal way,' {refined} {eval: CONSTANT_NT'The Standard Rules define this action in only a minimal way,' {kind: text}}
                             IMPERATIVE_NT'check an actor sleeping ( this is the block sleeping rule )' {unit: 2} {imperative definition: 649}
    @@ -15838,7 +15838,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'carry out the issuing the response text activity with r' {unit: 2}
                                             INVOCATION_NT'carry out the issuing the response text activity with r' {phrase invoked: } {kind variable declarations: K=response}
                                                 RVALUE_CONTEXT_NT'issuing the response text' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                CONSTANT_NT'issuing the response text' {kind: activity on responses} {activity: issuing the response text}{meaning: {issuing the response text = ACTIVITY_MC}}
    +                                                CONSTANT_NT'issuing the response text' {kind: activity on responses} {activity: issuing the response text} {meaning: {issuing the response text = ACTIVITY_MC}}
                                                 RVALUE_CONTEXT_NT'r' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                     LOCAL_VARIABLE_NT'r' {local: LV"r"-response response}
                             HEADING_NT'section 5 - saying lists of things' {heading 5} {under: H5'section 5 - saying lists of things'} {unit: 2}
    @@ -16384,7 +16384,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'follow the character movement rules' {unit: 4} {results_from_splitting} {indent: 1}
                                     INVOCATION_NT'follow the character movement rules' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'character movement rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                        CONSTANT_NT'character movement rules' {kind: rulebook} {rulebook: character movement}{meaning: {character movement rules = RULEBOOK_MC}}
    +                                        CONSTANT_NT'character movement rules' {kind: rulebook} {rulebook: character movement} {meaning: {character movement rules = RULEBOOK_MC}}
                 IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 802}
                     CODE_BLOCK_NT
                         INVOCATION_LIST_NT'now the last person named is the player' {unit: 4} {control structure: NOW}
    @@ -16433,13 +16433,13 @@ ROOT_NT
                                 INVOCATION_LIST_NT'follow the shopper rules' {unit: 4} {indent: 2}
                                     INVOCATION_NT'follow the shopper rules' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'shopper rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                        CONSTANT_NT'shopper rules' {kind: rulebook} {rulebook: shopper}{meaning: {shopper rules = RULEBOOK_MC}}
    +                                        CONSTANT_NT'shopper rules' {kind: rulebook} {rulebook: shopper} {meaning: {shopper rules = RULEBOOK_MC}}
                                 INVOCATION_LIST_NT'now the current actor is passive' {unit: 4} {indent: 2} {control structure: NOW}
                                     CONDITION_CONTEXT_NT'the current actor is passive'
                         INVOCATION_LIST_NT'follow the movement reporting rule' {unit: 4} {indent: 1}
                             INVOCATION_NT'follow the movement reporting rule' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'movement reporting rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                CONSTANT_NT'movement reporting rule' {kind: rule} {rule: movement reporting rule}{meaning: {movement reporting rule = MISCELLANEOUS_MC}}
    +                                CONSTANT_NT'movement reporting rule' {kind: rule} {rule: movement reporting rule} {meaning: {movement reporting rule = MISCELLANEOUS_MC}}
                 IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 805}
                     CODE_BLOCK_NT
                         CODE_BLOCK_NT {control structure: RPT}
    @@ -16455,13 +16455,13 @@ ROOT_NT
                                 INVOCATION_LIST_NT'follow the shopowner rules' {unit: 4} {indent: 2}
                                     INVOCATION_NT'follow the shopowner rules' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'shopowner rules' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                        CONSTANT_NT'shopowner rules' {kind: rulebook} {rulebook: shopowner}{meaning: {shopowner rules = RULEBOOK_MC}}
    +                                        CONSTANT_NT'shopowner rules' {kind: rulebook} {rulebook: shopowner} {meaning: {shopowner rules = RULEBOOK_MC}}
                                 INVOCATION_LIST_NT'now the current owner is passive' {unit: 4} {indent: 2} {control structure: NOW}
                                     CONDITION_CONTEXT_NT'the current owner is passive'
                         INVOCATION_LIST_NT'follow the infection rule' {unit: 4} {indent: 1}
                             INVOCATION_NT'follow the infection rule' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'infection rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                CONSTANT_NT'infection rule' {kind: rule} {rule: infection rule}{meaning: {infection rule = MISCELLANEOUS_MC}}
    +                                CONSTANT_NT'infection rule' {kind: rule} {rule: infection rule} {meaning: {infection rule = MISCELLANEOUS_MC}}
                 IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 806}
                     CODE_BLOCK_NT
                         CODE_BLOCK_NT {control structure: IF}
    @@ -16503,7 +16503,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'try the current owner closing the escape' {unit: 4} {results_from_splitting} {indent: 1}
                                     INVOCATION_NT'try the current owner closing the escape' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'current owner closing the escape' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                        CONSTANT_NT'current owner closing the escape' {kind: action} {explicit action: }
    +                                        CONSTANT_NT'current owner closing the escape' {kind: action} {explicit action: }
                                 CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 810}
                     CODE_BLOCK_NT
    @@ -16511,7 +16511,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'", muttering darkly about air-conditioning and electricity, '
                                 INVOCATION_NT'", muttering darkly about air-conditioning and electricity, ' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'", muttering darkly about air-conditioning and electricity, ' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16519,7 +16519,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'"."'
                                 INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16557,7 +16557,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'try the current owner filing the target' {unit: 4} {indent: 2}
                                     INVOCATION_NT'try the current owner filing the target' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'current owner filing the target' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                        CONSTANT_NT'current owner filing the target' {kind: action} {explicit action: }
    +                                        CONSTANT_NT'current owner filing the target' {kind: action} {explicit action: }
                 SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified}
                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
                     UNPARSED_NOUN_NT'filing'
    @@ -16567,7 +16567,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'try the person asked taking the noun' {unit: 4}
                             INVOCATION_NT'try the person asked taking the noun' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked taking the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked taking the noun' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked taking the noun' {kind: action} {explicit action: }
                         CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 814}
                     CODE_BLOCK_NT
    @@ -16583,7 +16583,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" tries unsuccessfully to get "'
                                         INVOCATION_NT'" tries unsuccessfully to get "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" tries unsuccessfully to get "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16591,7 +16591,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'"."'
                                         INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16605,7 +16605,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" registers "'
                                 INVOCATION_NT'" registers "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" registers "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16613,7 +16613,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" and files it away."'
                                 INVOCATION_NT'" and files it away."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" and files it away."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16633,7 +16633,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'try the current actor resolving the problem' {unit: 4} {results_from_splitting} {indent: 1}
                                     INVOCATION_NT'try the current actor resolving the problem' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'current actor resolving the problem' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                        CONSTANT_NT'current actor resolving the problem' {kind: action} {explicit action: }
    +                                        CONSTANT_NT'current actor resolving the problem' {kind: action} {explicit action: }
                                 CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 817}
                     CODE_BLOCK_NT
    @@ -16648,7 +16648,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'try the current actor approaching the pool hall' {unit: 4} {indent: 2}
                                     INVOCATION_NT'try the current actor approaching the pool hall' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'current actor approaching the pool hall' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                        CONSTANT_NT'current actor approaching the pool hall' {kind: action} {explicit action: }
    +                                        CONSTANT_NT'current actor approaching the pool hall' {kind: action} {explicit action: }
                             CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
                                 INVOCATION_LIST_NT'let way be a random direction' {unit: 4} {indent: 2}
                                     INVOCATION_NT'let way be a random direction' {phrase invoked: }
    @@ -16663,7 +16663,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'try the current actor going the way' {unit: 4} {indent: 2}
                                     INVOCATION_NT'try the current actor going the way' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'current actor going the way' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                        CONSTANT_NT'current actor going the way' {kind: action} {explicit action:  nothing}>}
    +                                        CONSTANT_NT'current actor going the way' {kind: action} {explicit action:  nothing}>}
                 IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 818}
                 DEFN_CONT_NT'a room is air-conditioned' {unit: 4}
                     CODE_BLOCK_NT
    @@ -16749,14 +16749,14 @@ ROOT_NT
                         INVOCATION_LIST_NT'try the person asked approaching the public library' {unit: 4}
                             INVOCATION_NT'try the person asked approaching the public library' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked approaching the public library' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked approaching the public library' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked approaching the public library' {kind: action} {explicit action: }
                         CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 822}
                     CODE_BLOCK_NT
                         INVOCATION_LIST_NT'move the noun to the public library' {unit: 4}
                             INVOCATION_NT'move the noun to the public library' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                 RVALUE_CONTEXT_NT'public library' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                     CONSTANT_NT'public library' {kind: room} {instance: I110'public library'} {enumeration: 0}
                         INVOCATION_LIST_NT'now the noun is submitted' {unit: 4} {control structure: NOW}
    @@ -16767,7 +16767,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" turns in "'
                                 INVOCATION_NT'" turns in "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" turns in "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16775,7 +16775,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'"."'
                                 INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16803,7 +16803,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'try the person asked approaching the post office' {unit: 4}
                             INVOCATION_NT'try the person asked approaching the post office' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked approaching the post office' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked approaching the post office' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked approaching the post office' {kind: action} {explicit action: }
                         CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 827}
                     CODE_BLOCK_NT
    @@ -16815,7 +16815,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" slips "'
                                 INVOCATION_NT'" slips "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" slips "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16823,7 +16823,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'a noun'
                                 INVOCATION_NT'a noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" into the outgoing mail slot."'
                                 INVOCATION_NT'" into the outgoing mail slot."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" into the outgoing mail slot."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16840,7 +16840,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" shoves into the mail slot "'
                                         INVOCATION_NT'" shoves into the mail slot "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" shoves into the mail slot "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16873,7 +16873,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'try the person asked approaching the rental store' {unit: 4}
                             INVOCATION_NT'try the person asked approaching the rental store' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked approaching the rental store' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked approaching the rental store' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked approaching the rental store' {kind: action} {explicit action: }
                         CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 831}
                     CODE_BLOCK_NT
    @@ -16882,7 +16882,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'move the noun to the movie rental store' {unit: 4}
                             INVOCATION_NT'move the noun to the movie rental store' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                 RVALUE_CONTEXT_NT'movie rental store' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                     CONSTANT_NT'movie rental store' {kind: room} {instance: I104'movie rental store'} {enumeration: 0}
                 IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 832}
    @@ -16891,7 +16891,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" returns "'
                                 INVOCATION_NT'" returns "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" returns "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16899,7 +16899,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'"."'
                                 INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16916,7 +16916,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" turns in "'
                                         INVOCATION_NT'" turns in "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" turns in "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -16965,9 +16965,9 @@ ROOT_NT
                                                         INVOCATION_LIST_NT'location of the person asked' {unit: 4}
                                                             INVOCATION_NT'location of the person asked' {phrase invoked: } {resulting: room}
                                                                 RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                                NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                                                NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                                 RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                         CODE_BLOCK_NT {control structure: IF}
                             INVOCATION_LIST_NT'if the way is a direction' {unit: 4} {colon_block_command}
                                 INVOCATION_NT'if the way is a direction' {phrase invoked: }
    @@ -16977,7 +16977,7 @@ ROOT_NT
                                 INVOCATION_LIST_NT'try the person asked going the way' {unit: 4} {results_from_splitting} {indent: 1}
                                     INVOCATION_NT'try the person asked going the way' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'person asked going the way' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                        CONSTANT_NT'person asked going the way' {kind: action} {explicit action: }
    +                                        CONSTANT_NT'person asked going the way' {kind: action} {explicit action: }
                             CODE_BLOCK_NT'otherwise' {results_from_splitting} {control structure: O}
                                 INVOCATION_LIST_NT'stop the action' {unit: 4} {indent: 1}
                                     INVOCATION_NT'stop the action' {phrase invoked: }
    @@ -16991,7 +16991,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'try the person asked giving the noun to vanessa' {unit: 4}
                             INVOCATION_NT'try the person asked giving the noun to vanessa' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked giving the noun to vanessa' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked giving the noun to vanessa' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked giving the noun to vanessa' {kind: action} {explicit action: }
                 SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified}
                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}
                     UNPARSED_NOUN_NT'the block giving rule'
    @@ -17001,13 +17001,13 @@ ROOT_NT
                         INVOCATION_LIST_NT'abide by the block giving rule' {unit: 4}
                             INVOCATION_NT'abide by the block giving rule' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'block giving rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                CONSTANT_NT'block giving rule' {kind: rule} {rule: block giving rule}{meaning: {block giving rule = MISCELLANEOUS_MC}}
    +                                CONSTANT_NT'block giving rule' {kind: rule} {rule: block giving rule} {meaning: {block giving rule = MISCELLANEOUS_MC}}
                 IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 839}
                     CODE_BLOCK_NT
                         INVOCATION_LIST_NT'try the person asked approaching cold comfort' {unit: 4}
                             INVOCATION_NT'try the person asked approaching cold comfort' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked approaching cold comfort' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked approaching cold comfort' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked approaching cold comfort' {kind: action} {explicit action: }
                         CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 840}
                     CODE_BLOCK_NT
    @@ -17038,7 +17038,7 @@ ROOT_NT
                                 RVALUE_CONTEXT_NT'reward' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                     LOCAL_VARIABLE_NT'reward' {local: LV"reward"-thing thing}
                                 RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                         INVOCATION_LIST_NT'now the noun is nowhere' {unit: 4} {control structure: NOW}
                             CONDITION_CONTEXT_NT'the noun is nowhere'
                         CODE_BLOCK_NT {control structure: IF}
    @@ -17051,7 +17051,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" trades in "'
                                         INVOCATION_NT'" trades in "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" trades in "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17059,7 +17059,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" and receives "'
                                         INVOCATION_NT'" and receives "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" and receives "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17138,7 +17138,7 @@ ROOT_NT
                                 NEW_LOCAL_CONTEXT_NT'current color' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: infection color}
                                     UNKNOWN_NT'current color'
                                 RVALUE_CONTEXT_NT'french vanilla' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                CONSTANT_NT'french vanilla' {kind: infection color} {instance: I62'french vanilla'[infection color]} {enumeration: 0}{meaning: {french vanilla = NAMED_CONSTANT_MC}}
    +                                CONSTANT_NT'french vanilla' {kind: infection color} {instance: I62'french vanilla'[infection color]} {enumeration: 0} {meaning: {french vanilla = NAMED_CONSTANT_MC}}
                         CODE_BLOCK_NT {control structure: WHI}
                             INVOCATION_LIST_NT'while current color is not cookie dough cream' {colon_block_command} {unit: 4} {indent: 1}
                                 INVOCATION_NT'while current color is not cookie dough cream' {phrase invoked: }
    @@ -17201,7 +17201,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'infection color understood'
                                 INVOCATION_NT'infection color understood' {phrase invoked: } {kind variable declarations: K=infection color}
                                     RVALUE_CONTEXT_NT'infection color understood' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    -                                    NONLOCAL_VARIABLE_NT'infection color understood' {nonlocal: 'infection color understood'(var)infection color}{meaning: {infection color understood = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'infection color understood' {nonlocal: 'infection color understood'(var)infection color} {meaning: {infection color understood = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" for you!'"'
                                 INVOCATION_NT'" for you!'"' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" for you!'"' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17244,7 +17244,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'try the person asked eating the noun' {unit: 4}
                             INVOCATION_NT'try the person asked eating the noun' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'person asked eating the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'person asked eating the noun' {kind: action} {explicit action: }
    +                                CONSTANT_NT'person asked eating the noun' {kind: action} {explicit action: }
                         CODE_BLOCK_NT {control structure: INS}
                 IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 845}
                     CODE_BLOCK_NT
    @@ -17260,7 +17260,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" licks "'
                                         INVOCATION_NT'" licks "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" licks "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17268,7 +17268,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'"."'
                                         INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17279,7 +17279,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" pops the end of "'
                                 INVOCATION_NT'" pops the end of "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" pops the end of "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17287,7 +17287,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" into "'
                                 INVOCATION_NT'" into "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" into "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17330,7 +17330,7 @@ ROOT_NT
                                 INVOCATION_NT'infection color' {phrase invoked: } {kind variable declarations: K=infection color} {save self}
                                     RVALUE_CONTEXT_NT'infection color' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                         PROPERTY_VALUE_NT'infection color' {record as self}
    -                                        CONSTANT_NT'infection color' {kind: infection colors valued property} {property: 'infection color'=infection color}{meaning: {infection color = PROPERTY_MC}}
    +                                        CONSTANT_NT'infection color' {kind: infection colors valued property} {property: 'infection color'=infection color} {meaning: {infection color = PROPERTY_MC}}
                                             CONSTANT_NT {kind: object} {self}
                             INVOCATION_LIST_SAY_NT'" "'
                                 INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
    @@ -17455,7 +17455,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" cannot be infected."'
                                         INVOCATION_NT'" cannot be infected."' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" cannot be infected."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17483,7 +17483,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'noun'
                                 INVOCATION_NT'noun' {phrase invoked: } {kind variable declarations: K=object}
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'"."'
                                 INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17494,7 +17494,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the person asked'
                                 INVOCATION_NT'the person asked' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" sneezes on "'
                                 INVOCATION_NT'" sneezes on "' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" sneezes on "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17512,7 +17512,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'noun'
                                 INVOCATION_NT'noun' {phrase invoked: } {kind variable declarations: K=object}
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'end if'
                                 INVOCATION_NT'end if' {phrase invoked: }
                             INVOCATION_LIST_SAY_NT'"!"'
    @@ -17551,7 +17551,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the second noun'
                                         INVOCATION_NT'the second noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" cannot inject anything."'
                                         INVOCATION_NT'" cannot inject anything."' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" cannot inject anything."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17579,7 +17579,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" is not infected, and the syringe contains a cure, not a va'
                                         INVOCATION_NT'" is not infected, and the syringe contains a cure, not a va' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" is not infected, and the syringe contains a cure, not a va' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17606,7 +17606,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'", who is now cured (but could easily be reinfected)."'
                                 INVOCATION_NT'", who is now cured (but could easily be reinfected)."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'", who is now cured (but could easily be reinfected)."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -17764,7 +17764,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'try the person asked trying opening the blocking door' {unit: 3}
                                         INVOCATION_NT'try the person asked trying opening the blocking door' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked trying opening the blocking door' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                            CONSTANT_NT'person asked trying opening the blocking door' {kind: action} {explicit action: }
    +                                            CONSTANT_NT'person asked trying opening the blocking door' {kind: action} {explicit action: }
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the blocking door is closed' {unit: 3} {colon_block_command}
                                             INVOCATION_NT'if the blocking door is closed' {phrase invoked: }
    @@ -17778,7 +17778,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'try the person asked trying closing the door ajar' {unit: 3}
                                         INVOCATION_NT'try the person asked trying closing the door ajar' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked trying closing the door ajar' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                            CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {explicit action: }
    +                                            CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {explicit action: }
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the door ajar is open' {unit: 3} {colon_block_command}
                                             INVOCATION_NT'if the door ajar is open' {phrase invoked: }
    @@ -17792,7 +17792,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'try the person asked trying closing the door ajar' {unit: 3}
                                         INVOCATION_NT'try the person asked trying closing the door ajar' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked trying closing the door ajar' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                            CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {explicit action: }
    +                                            CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {explicit action: }
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the door ajar is open' {unit: 3} {colon_block_command}
                                             INVOCATION_NT'if the door ajar is open' {phrase invoked: }
    @@ -17806,7 +17806,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'try the person asked trying unlocking keylessly the sealed c' {unit: 3}
                                         INVOCATION_NT'try the person asked trying unlocking keylessly the sealed c' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked trying unlocking keylessly the sealed chest' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                            CONSTANT_NT'person asked trying unlocking keylessly the sealed chest' {kind: action} {explicit action: }
    +                                            CONSTANT_NT'person asked trying unlocking keylessly the sealed chest' {kind: action} {explicit action: }
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the sealed chest is locked' {unit: 3} {colon_block_command}
                                             INVOCATION_NT'if the sealed chest is locked' {phrase invoked: }
    @@ -17830,7 +17830,7 @@ ROOT_NT
                                                 INVOCATION_LIST_NT'abide by the must have accessible the second noun rule' {unit: 3} {indent: 2}
                                                     INVOCATION_NT'abide by the must have accessible the second noun rule' {phrase invoked: }
                                                         RVALUE_CONTEXT_NT'must have accessible the second noun rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                        CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule}{meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
    +                                                        CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule} {meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
                                             CODE_BLOCK_NT'otherwise' {control structure: O}
                                                 CODE_BLOCK_NT {control structure: IF}
                                                     INVOCATION_LIST_NT'if a visible passkey ( called item ) unbolts the noun' {colon_block_command} {indent: 1}
    @@ -17843,7 +17843,7 @@ ROOT_NT
                                                         INVOCATION_LIST_NT'abide by the must have accessible the second noun rule' {unit: 3} {indent: 2}
                                                             INVOCATION_NT'abide by the must have accessible the second noun rule' {phrase invoked: }
                                                                 RVALUE_CONTEXT_NT'must have accessible the second noun rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                                CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule}{meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
    +                                                                CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule} {meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
                                                     CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
                                                         CODE_BLOCK_NT {control structure: IF}
                                                             INVOCATION_LIST_NT'if the player is the person asked' {unit: 3} {indent: 2} {colon_block_command}
    @@ -17855,7 +17855,7 @@ ROOT_NT
                                                                     INVOCATION_LIST_SAY_NT'key-refusal for noun'
                                                                         INVOCATION_NT'key-refusal for noun' {phrase invoked: }
                                                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'an object'} {required: object}
    -                                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                                         INVOCATION_LIST_NT'stop the action' {unit: 3} {indent: 2}
                                                             INVOCATION_NT'stop the action' {phrase invoked: }
                                 IMPERATIVE_NT'to say key-refusal for ( locked-thing - an object )' {unit: 3} {imperative definition: 872}
    @@ -17863,7 +17863,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'carry out the refusing keys activity with the locked-thing' {unit: 3}
                                             INVOCATION_NT'carry out the refusing keys activity with the locked-thing' {phrase invoked: } {kind variable declarations: K=object}
                                                 RVALUE_CONTEXT_NT'refusing keys' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                CONSTANT_NT'refusing keys' {kind: activity on objects} {activity: refusing keys}{meaning: {refusing keys = ACTIVITY_MC}}
    +                                                CONSTANT_NT'refusing keys' {kind: activity on objects} {activity: refusing keys} {meaning: {refusing keys = ACTIVITY_MC}}
                                                 RVALUE_CONTEXT_NT'locked-thing' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                     LOCAL_VARIABLE_NT'locked-thing' {local: LV"locked-thing"-object object}
                                 SENTENCE_NT'refusing keys of something is an activity' {unit: 3} {classified}
    @@ -17945,7 +17945,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'abide by the must have accessible the second noun rule' {unit: 3}
                                                 INVOCATION_NT'abide by the must have accessible the second noun rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'must have accessible the second noun rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule}{meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule} {meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
                                     SENTENCE_NT'the right second rule is listed instead of the can't unlock ' {unit: 3} {classified}
                                         VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: positive} {special meaning: rule-listed-in}
                                         UNPARSED_NOUN_NT'the right second rule'
    @@ -17987,7 +17987,7 @@ ROOT_NT
                                         UNPARSED_NOUN_NT'applying to one thing'
                                     SENTENCE_NT'the unlocking keylessly action has an object called the key ' {unit: 3} {classified}
                                         VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                    PROPER_NOUN_NT'unlocking keylessly action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'unlocking keylessly action' {kind: action name} {action name: unlocking keylessly}{meaning: {unlocking keylessly action = MISCELLANEOUS_MC}}}
    +                                    PROPER_NOUN_NT'unlocking keylessly action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'unlocking keylessly action' {kind: action name} {action name: unlocking keylessly} {meaning: {unlocking keylessly action = MISCELLANEOUS_MC}}}
                                         ALLOWED_NT {refined}
                                             PROPERTYCALLED_NT'called'
                                                 UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
    @@ -17997,15 +17997,15 @@ ROOT_NT
                                             INVOCATION_LIST_NT'abide by the can't unlock without a lock rule' {unit: 3}
                                                 INVOCATION_NT'abide by the can't unlock without a lock rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'can't unlock without a lock rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'can't unlock without a lock rule' {kind: rule} {rule: can't unlock without a lock rule}{meaning: {can't unlock without a lock rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'can't unlock without a lock rule' {kind: rule} {rule: can't unlock without a lock rule} {meaning: {can't unlock without a lock rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'abide by the can't unlock what's already unlocked rule' {unit: 3}
                                                 INVOCATION_NT'abide by the can't unlock what's already unlocked rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'can't unlock what's already unlocked rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'can't unlock what's already unlocked rule' {kind: rule} {rule: can't unlock what's already unlocked rule}{meaning: {can't unlock what's already unlocked rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'can't unlock what's already unlocked rule' {kind: rule} {rule: can't unlock what's already unlocked rule} {meaning: {can't unlock what's already unlocked rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'abide by the need a matching key rule' {unit: 3}
                                                 INVOCATION_NT'abide by the need a matching key rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'need a matching key rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'need a matching key rule' {kind: rule} {rule: need a matching key rule}{meaning: {need a matching key rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'need a matching key rule' {kind: rule} {rule: need a matching key rule} {meaning: {need a matching key rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'now the key unlocked with is the second noun' {unit: 3} {control structure: NOW}
                                                 CONDITION_CONTEXT_NT'the key unlocked with is the second noun'
                                     IMPERATIVE_NT'carry out an actor unlocking keylessly ( this is the standar' {unit: 3} {imperative definition: 878}
    @@ -18033,7 +18033,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'try the person asked unlocking the noun with the key unlocke' {unit: 3} {indent: 1}
                                                 INVOCATION_NT'try the person asked unlocking the noun with the key unlocke' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'person asked unlocking the noun with the key unlocked with' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'person asked unlocking the noun with the key unlocked with' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'person asked unlocking the noun with the key unlocked with' {kind: action} {explicit action: }
                             HEADING_NT'part 3 - locking' {heading 3} {under: H3'part 3 - locking'} {unit: 3}
                                 HEADING_NT'section 1 - regular locking' {heading 5} {under: H5'section 1 - regular locking'} {unit: 3}
                                     SENTENCE_NT'understand the command lock as something new' {unit: 3} {classified}
    @@ -18063,7 +18063,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'abide by the must have accessible the second noun rule' {unit: 3}
                                                 INVOCATION_NT'abide by the must have accessible the second noun rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'must have accessible the second noun rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule}{meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'must have accessible the second noun rule' {kind: rule} {rule: must have accessible the second noun rule} {meaning: {must have accessible the second noun rule = MISCELLANEOUS_MC}}
                                     SENTENCE_NT'the right second rule is listed instead of the can't lock wi' {unit: 3} {classified}
                                         VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: positive} {special meaning: rule-listed-in}
                                         UNPARSED_NOUN_NT'the right second rule'
    @@ -18091,7 +18091,7 @@ ROOT_NT
                                         UNPARSED_NOUN_NT'applying to one thing'
                                     SENTENCE_NT'the locking keylessly action has an object called the key lo' {unit: 3} {classified}
                                         VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    -                                    PROPER_NOUN_NT'locking keylessly action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'locking keylessly action' {kind: action name} {action name: locking keylessly}{meaning: {locking keylessly action = MISCELLANEOUS_MC}}}
    +                                    PROPER_NOUN_NT'locking keylessly action' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'locking keylessly action' {kind: action name} {action name: locking keylessly} {meaning: {locking keylessly action = MISCELLANEOUS_MC}}}
                                         ALLOWED_NT {refined}
                                             PROPERTYCALLED_NT'called'
                                                 UNPARSED_NOUN_NT'object' {indefinite 'an' n/m/f nom/acc s}
    @@ -18101,19 +18101,19 @@ ROOT_NT
                                             INVOCATION_LIST_NT'abide by the can't lock without a lock rule' {unit: 3}
                                                 INVOCATION_NT'abide by the can't lock without a lock rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'can't lock without a lock rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'can't lock without a lock rule' {kind: rule} {rule: can't lock without a lock rule}{meaning: {can't lock without a lock rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'can't lock without a lock rule' {kind: rule} {rule: can't lock without a lock rule} {meaning: {can't lock without a lock rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'abide by the can't lock what's already locked rule' {unit: 3}
                                                 INVOCATION_NT'abide by the can't lock what's already locked rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'can't lock what's already locked rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'can't lock what's already locked rule' {kind: rule} {rule: can't lock what's already locked rule}{meaning: {can't lock what's already locked rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'can't lock what's already locked rule' {kind: rule} {rule: can't lock what's already locked rule} {meaning: {can't lock what's already locked rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'abide by the can't lock what's open rule' {unit: 3}
                                                 INVOCATION_NT'abide by the can't lock what's open rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'can't lock what's open rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'can't lock what's open rule' {kind: rule} {rule: can't lock what's open rule}{meaning: {can't lock what's open rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'can't lock what's open rule' {kind: rule} {rule: can't lock what's open rule} {meaning: {can't lock what's open rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'abide by the need a matching key rule' {unit: 3}
                                                 INVOCATION_NT'abide by the need a matching key rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'need a matching key rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'need a matching key rule' {kind: rule} {rule: need a matching key rule}{meaning: {need a matching key rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'need a matching key rule' {kind: rule} {rule: need a matching key rule} {meaning: {need a matching key rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'now the key locked with is the second noun' {unit: 3} {control structure: NOW}
                                                 CONDITION_CONTEXT_NT'the key locked with is the second noun'
                                     IMPERATIVE_NT'carry out an actor locking keylessly ( this is the standard ' {unit: 3} {imperative definition: 881}
    @@ -18141,7 +18141,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'try the person asked locking the noun with the key locked wi' {unit: 3} {indent: 1}
                                                 INVOCATION_NT'try the person asked locking the noun with the key locked wi' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'person asked locking the noun with the key locked with' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                    CONSTANT_NT'person asked locking the noun with the key locked with' {kind: action} {explicit action: }
    +                                                    CONSTANT_NT'person asked locking the noun with the key locked with' {kind: action} {explicit action: }
                         HEADING_NT'volume 3 - the passkey kind , needed only if you want keys t' {heading 1} {under: H1'volume 3 - the passkey kind , needed only if you want keys to name themselves'} {unit: 3}
                             SENTENCE_NT'a passkey is a kind of thing' {unit: 3} {classified}
                                 VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    @@ -18253,7 +18253,7 @@ ROOT_NT
                                     INVOCATION_LIST_NT'abide by the carrying requirements rule' {unit: 3} {indent: 1}
                                         INVOCATION_NT'abide by the carrying requirements rule' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'carrying requirements rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                            CONSTANT_NT'carrying requirements rule' {kind: rule} {rule: carrying requirements rule}{meaning: {carrying requirements rule = MISCELLANEOUS_MC}}
    +                                            CONSTANT_NT'carrying requirements rule' {kind: rule} {rule: carrying requirements rule} {meaning: {carrying requirements rule = MISCELLANEOUS_MC}}
                             SENTENCE_NT'understand "put [passkey] on [keychain]" as putting it on' {unit: 3} {classified}
                                 VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
                                 UNPARSED_NOUN_NT'"put [passkey] on [keychain]"'
    @@ -18285,19 +18285,19 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'try taking the noun' {unit: 3} {indent: 3}
                                                         INVOCATION_NT'try taking the noun' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'taking the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                            CONSTANT_NT'taking the noun' {kind: action} {explicit action: }
    +                                                            CONSTANT_NT'taking the noun' {kind: action} {explicit action: }
                                                 CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 2} {control structure: O}
                                                     INVOCATION_LIST_NT'try the person asked trying taking the noun' {unit: 3} {indent: 3}
                                                         INVOCATION_NT'try the person asked trying taking the noun' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'person asked trying taking the noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                            CONSTANT_NT'person asked trying taking the noun' {kind: action} {explicit action: }
    +                                                            CONSTANT_NT'person asked trying taking the noun' {kind: action} {explicit action: }
                                         CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
                                             INVOCATION_LIST_NT'carry out the implicitly taking activity with the noun' {unit: 3} {indent: 2}
                                                 INVOCATION_NT'carry out the implicitly taking activity with the noun' {phrase invoked: } {kind variable declarations: K=object}
                                                     RVALUE_CONTEXT_NT'implicitly taking' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                    CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking}{meaning: {implicitly taking = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking} {meaning: {implicitly taking = ACTIVITY_MC}}
                                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT} {required: value}
    -                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             IMPERATIVE_NT'this is the second noun autotaking rule' {unit: 3} {imperative definition: 893}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -18315,19 +18315,19 @@ ROOT_NT
                                                     INVOCATION_LIST_NT'try taking the second noun' {unit: 3} {indent: 3}
                                                         INVOCATION_NT'try taking the second noun' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'taking the second noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                            CONSTANT_NT'taking the second noun' {kind: action} {explicit action: }
    +                                                            CONSTANT_NT'taking the second noun' {kind: action} {explicit action: }
                                                 CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 2} {control structure: O}
                                                     INVOCATION_LIST_NT'try the person asked trying taking the second noun' {unit: 3} {indent: 3}
                                                         INVOCATION_NT'try the person asked trying taking the second noun' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'person asked trying taking the second noun' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                                            CONSTANT_NT'person asked trying taking the second noun' {kind: action} {explicit action: }
    +                                                            CONSTANT_NT'person asked trying taking the second noun' {kind: action} {explicit action: }
                                         CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
                                             INVOCATION_LIST_NT'carry out the implicitly taking activity with the second nou' {unit: 3} {indent: 2}
                                                 INVOCATION_NT'carry out the implicitly taking activity with the second nou' {phrase invoked: } {kind variable declarations: K=object}
                                                     RVALUE_CONTEXT_NT'implicitly taking' {token to be parsed against: TEST_VALUE_NT} {required: activity}
    -                                                    CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking}{meaning: {implicitly taking = ACTIVITY_MC}}
    +                                                    CONSTANT_NT'implicitly taking' {kind: activity on objects} {activity: implicitly taking} {meaning: {implicitly taking = ACTIVITY_MC}}
                                                     RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT} {required: value}
    -                                                    NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                             IMPERATIVE_NT'this is the must hold the noun rule' {unit: 3} {imperative definition: 894}
                                 CODE_BLOCK_NT
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -18339,7 +18339,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'follow the noun autotaking rule' {unit: 3} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'follow the noun autotaking rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'noun autotaking rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'noun autotaking rule' {kind: rule} {rule: noun autotaking rule}{meaning: {noun autotaking rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'noun autotaking rule' {kind: rule} {rule: noun autotaking rule} {meaning: {noun autotaking rule = MISCELLANEOUS_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the person asked does not have the noun' {unit: 3} {colon_block_command}
                                             INVOCATION_NT'if the person asked does not have the noun' {phrase invoked: }
    @@ -18361,7 +18361,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'follow the second noun autotaking rule' {unit: 3} {results_from_splitting} {indent: 1}
                                                 INVOCATION_NT'follow the second noun autotaking rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'second noun autotaking rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'second noun autotaking rule' {kind: rule} {rule: second noun autotaking rule}{meaning: {second noun autotaking rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'second noun autotaking rule' {kind: rule} {rule: second noun autotaking rule} {meaning: {second noun autotaking rule = MISCELLANEOUS_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the person asked does not have the second noun' {unit: 3} {colon_block_command}
                                             INVOCATION_NT'if the person asked does not have the second noun' {phrase invoked: }
    @@ -18391,7 +18391,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'follow the noun autotaking rule' {unit: 3} {indent: 2}
                                                 INVOCATION_NT'follow the noun autotaking rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'noun autotaking rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'noun autotaking rule' {kind: rule} {rule: noun autotaking rule}{meaning: {noun autotaking rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'noun autotaking rule' {kind: rule} {rule: noun autotaking rule} {meaning: {noun autotaking rule = MISCELLANEOUS_MC}}
                                     CODE_BLOCK_NT {control structure: IF}
                                         INVOCATION_LIST_NT'if the noun is not key-accessible' {colon_block_command} {unit: 3} {indent: 1}
                                             INVOCATION_NT'if the noun is not key-accessible' {phrase invoked: }
    @@ -18426,7 +18426,7 @@ ROOT_NT
                                                     NEW_LOCAL_CONTEXT_NT'held second noun' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: object}
                                                         UNKNOWN_NT'held second noun'
                                                     RVALUE_CONTEXT_NT'second noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
    -                                                    NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}
    +                                                    NONLOCAL_VARIABLE_NT'second noun' {nonlocal: 'second noun'(var)object} {meaning: {second noun = VARIABLE_MC}}
                                             CODE_BLOCK_NT {control structure: IF}
                                                 INVOCATION_LIST_NT'if the second noun is on a keychain ( called the containing ' {unit: 3} {indent: 2} {colon_block_command}
                                                     INVOCATION_NT'if the second noun is on a keychain ( called the containing ' {phrase invoked: }
    @@ -18438,7 +18438,7 @@ ROOT_NT
                                             INVOCATION_LIST_NT'follow the second noun autotaking rule' {unit: 3} {indent: 2}
                                                 INVOCATION_NT'follow the second noun autotaking rule' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'second noun autotaking rule' {token to be parsed against: TEST_VALUE_NT'a rule'} {required: rule}
    -                                                    CONSTANT_NT'second noun autotaking rule' {kind: rule} {rule: second noun autotaking rule}{meaning: {second noun autotaking rule = MISCELLANEOUS_MC}}
    +                                                    CONSTANT_NT'second noun autotaking rule' {kind: rule} {rule: second noun autotaking rule} {meaning: {second noun autotaking rule = MISCELLANEOUS_MC}}
                                             INVOCATION_LIST_NT'now the second noun is the held second noun' {unit: 3} {indent: 2} {control structure: NOW}
                                                 CONDITION_CONTEXT_NT'the second noun is the held second noun'
                                     CODE_BLOCK_NT {control structure: IF}
    @@ -18531,7 +18531,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the location'
                                         INVOCATION_NT'the location' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'location' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object}{meaning: {location = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object} {meaning: {location = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'"."'
                                         INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -18550,9 +18550,9 @@ ROOT_NT
                                         INVOCATION_LIST_NT'best route from the location to the noun , using even locked' {unit: 4}
                                             INVOCATION_NT'best route from the location to the noun' {phrase invoked: } {phrase options invoked: using even locked doors} {resulting: object}
                                                 RVALUE_CONTEXT_NT'location' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object}{meaning: {location = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object} {meaning: {location = VARIABLE_MC}}
                                                 RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                                NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                         CODE_BLOCK_NT {control structure: IF}
                             INVOCATION_LIST_NT'if heading is not a direction' {unit: 4} {colon_block_command}
                                 INVOCATION_NT'if heading is not a direction' {phrase invoked: }
    @@ -18699,7 +18699,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'", but shrugs."'
                                 INVOCATION_NT'", but shrugs."' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'", but shrugs."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -18775,7 +18775,7 @@ ROOT_NT
                             INVOCATION_LIST_SAY_NT'the noun'
                                 INVOCATION_NT'the noun' {phrase invoked: }
                                     RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                             INVOCATION_LIST_SAY_NT'" falls out of sight, and you know you will never see it aga'
                                 INVOCATION_NT'" falls out of sight, and you know you will never see it aga' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'" falls out of sight, and you know you will never see it aga' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -19178,7 +19178,7 @@ ROOT_NT
                                                         INVOCATION_LIST_NT'best route from the location to the next room' {unit: 4}
                                                             INVOCATION_NT'best route from the location to the next room' {phrase invoked: } {resulting: object}
                                                                 RVALUE_CONTEXT_NT'location' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                                                NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object}{meaning: {location = VARIABLE_MC}}
    +                                                                NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object} {meaning: {location = VARIABLE_MC}}
                                                                 RVALUE_CONTEXT_NT'next room' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                                     LOCAL_VARIABLE_NT'next room' {local: LV nothing}
                                         CODE_BLOCK_NT'say "[way] to [the next room]"' {control structure: SAY}
    @@ -19308,7 +19308,7 @@ ROOT_NT
                                                         RVALUE_CONTEXT_NT'way' {token to be parsed against: TEST_VALUE_NT'direction'} {required: direction}
                                                             LOCAL_VARIABLE_NT'way' {local: LV nothing}
                                                         RVALUE_CONTEXT_NT'location' {token to be parsed against: TEST_VALUE_NT'room'} {required: room} {token check to do: TEST_VALUE_NT'room'}
    -                                                        NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object}{meaning: {location = VARIABLE_MC}}
    +                                                        NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object} {meaning: {location = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if the next room is a room' {unit: 4} {indent: 2} {colon_block_command}
                                         INVOCATION_NT'if the next room is a room' {phrase invoked: }
    @@ -19625,8 +19625,8 @@ ROOT_NT
                                     UNKNOWN_NT'source'
                                 RVALUE_CONTEXT_NT'conversation of the noun' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                     PROPERTY_VALUE_NT'conversation of the noun'
    -                                    CONSTANT_NT {kind: nothing valued property} {property: 'conversation'=table name}{meaning: {conversation = PROPERTY_MC}}
    -                                    NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                    CONSTANT_NT {kind: nothing valued property} {property: 'conversation'=table name} {meaning: {conversation = PROPERTY_MC}}
    +                                    NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                         CODE_BLOCK_NT {control structure: IF}
                             INVOCATION_LIST_NT'if topic understood is a topic listed in source' {colon_block_command} {unit: 4} {indent: 1}
                                 INVOCATION_NT'if topic understood is a topic listed in source' {phrase invoked: }
    @@ -19643,7 +19643,7 @@ ROOT_NT
                                                             INVOCATION_NT'there is a turn stamp entry' {phrase invoked: } {resulting: truth state}
                                                                 LVALUE_TR_CONTEXT_NT'a turn stamp entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                     TABLE_ENTRY_NT'a turn stamp entry'
    -                                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'turn stamp'}{meaning: {turn stamp = TABLE_COLUMN_MC}}
    +                                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'turn stamp'} {meaning: {turn stamp = TABLE_COLUMN_MC}}
                                     CODE_BLOCK_NT
                                         CODE_BLOCK_NT'say "You have already heard that [summary entry]."' {control structure: SAY}
                                             INVOCATION_LIST_SAY_NT'"You have already heard that "'
    @@ -19654,7 +19654,7 @@ ROOT_NT
                                                 INVOCATION_NT'summary entry' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'summary entry' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                         TABLE_ENTRY_NT'summary entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'summary'}{meaning: {summary = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'summary'} {meaning: {summary = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'"."'
                                                 INVOCATION_NT'"."' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'"."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -19669,7 +19669,7 @@ ROOT_NT
                                                 INVOCATION_NT'reply entry' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'reply entry' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                         TABLE_ENTRY_NT'reply entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'reply'}{meaning: {reply = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'reply'} {meaning: {reply = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'paragraph break'
                                                 INVOCATION_NT'paragraph break' {phrase invoked: }
                             CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
    @@ -19677,7 +19677,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" stares at you blankly."'
                                         INVOCATION_NT'" stares at you blankly."' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" stares at you blankly."' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -19687,7 +19687,7 @@ ROOT_NT
                         INVOCATION_LIST_NT'try asking the noun about it' {unit: 4}
                             INVOCATION_NT'try asking the noun about it' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'asking the noun about it' {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
    -                                CONSTANT_NT'asking the noun about it' {kind: action} {explicit action: }
    +                                CONSTANT_NT'asking the noun about it' {kind: action} {explicit action: }
                 SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 4} {classified}
                     VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
                     UNPARSED_NOUN_NT'"recap" or "recall" or "review"'
    @@ -19712,14 +19712,14 @@ ROOT_NT
                                             UNKNOWN_NT'source'
                                         RVALUE_CONTEXT_NT'conversation of the speaker' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                             PROPERTY_VALUE_NT'conversation of the speaker'
    -                                            CONSTANT_NT {kind: nothing valued property} {property: 'conversation'=table name}{meaning: {conversation = PROPERTY_MC}}
    +                                            CONSTANT_NT {kind: nothing valued property} {property: 'conversation'=table name} {meaning: {conversation = PROPERTY_MC}}
                                                 LOCAL_VARIABLE_NT'the speaker' {local: LV nothing}
                                 INVOCATION_LIST_NT'sort source in turn stamp order' {unit: 4} {indent: 2}
                                     INVOCATION_NT'sort source in turn stamp order' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'source' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
                                             LOCAL_VARIABLE_NT'source' {local: LV nothing}
                                         RVALUE_CONTEXT_NT'turn stamp' {token to be parsed against: TEST_VALUE_NT'table column'} {required: table column}
    -                                        CONSTANT_NT'turn stamp' {kind: nothing valued table column} {table column: 'turn stamp'}{meaning: {turn stamp = TABLE_COLUMN_MC}}
    +                                        CONSTANT_NT'turn stamp' {kind: nothing valued table column} {table column: 'turn stamp'} {meaning: {turn stamp = TABLE_COLUMN_MC}}
                                 CODE_BLOCK_NT'say "[The speaker] has so far told you: [line break]"' {control structure: SAY}
                                     INVOCATION_LIST_SAY_NT'the speaker'
                                         INVOCATION_NT'the speaker' {phrase invoked: }
    @@ -19754,7 +19754,7 @@ ROOT_NT
                                                                         INVOCATION_NT'there is a turn stamp entry' {phrase invoked: } {resulting: truth state}
                                                                             LVALUE_TR_CONTEXT_NT'a turn stamp entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                                 TABLE_ENTRY_NT'a turn stamp entry'
    -                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'turn stamp'}{meaning: {turn stamp = TABLE_COLUMN_MC}}
    +                                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'turn stamp'} {meaning: {turn stamp = TABLE_COLUMN_MC}}
                                                             TEST_PROPOSITION_NT'the speaker is character entry' {proposition: << ('the speaker' == 'character entry') >>} {term: 'the speaker'}
                                             CODE_BLOCK_NT
                                                 INVOCATION_LIST_NT'let index be 1' {unit: 4} {indent: 4}
    @@ -19772,7 +19772,7 @@ ROOT_NT
                                                         INVOCATION_NT'summary entry' {phrase invoked: } {kind variable declarations: K=text}
                                                             RVALUE_CONTEXT_NT'summary entry' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                                 TABLE_ENTRY_NT'summary entry'
    -                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'summary'}{meaning: {summary = TABLE_COLUMN_MC}}
    +                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'summary'} {meaning: {summary = TABLE_COLUMN_MC}}
                                                     INVOCATION_LIST_SAY_NT'line break'
                                                         INVOCATION_NT'line break' {phrase invoked: }
                                 CODE_BLOCK_NT {control structure: IF}
    @@ -19796,14 +19796,14 @@ ROOT_NT
                     X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
                         COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
                         PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
    -                PROPER_NOUN_NT'table of general chitchat' {refined} {eval: CONSTANT_NT'table of general chitchat' {kind: table name} {table: table_data}{meaning: {table of general chitchat = TABLE_MC}}}
    +                PROPER_NOUN_NT'table of general chitchat' {refined} {eval: CONSTANT_NT'table of general chitchat' {kind: table name} {table: table_data} {meaning: {table of general chitchat = TABLE_MC}}}
                 TABLE_NT'table of general chitchat topic reply summary turn stamp cha' {unit: 4}
                 SENTENCE_NT'the conversation of vanessa is the table of vanessa chatter' {unit: 4} {classified} {interpretation of subject: infs'person'}
                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                     X_OF_Y_NT'conversation of vanessa' {definite 'the' n/m/f s/p nom/acc} {refined}
                         PROPER_NOUN_NT'vanessa' {refined} {refers: infs'vanessa'} {eval: CONSTANT_NT'vanessa' {kind: woman} {instance: I129'vanessa'} {enumeration: 0}}
                         PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
    -                PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}
    +                PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data} {meaning: {table of vanessa chatter = TABLE_MC}}}
                 TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}
                 IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 923}
                     CODE_BLOCK_NT
    @@ -19816,14 +19816,14 @@ ROOT_NT
                                                 INVOCATION_LIST_NT'player's command includes "the"' {unit: 4}
                                                     INVOCATION_NT'player's command includes "the"' {phrase invoked: } {resulting: truth state}
                                                         RVALUE_CONTEXT_NT'player's command' {token to be parsed against: TEST_VALUE_NT'a snippet'} {required: snippet}
    -                                                        NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet}{meaning: {player's command = VARIABLE_MC}}
    +                                                        NONLOCAL_VARIABLE_NT'player's command' {nonlocal: 'player's command'(var)snippet} {meaning: {player's command = VARIABLE_MC}}
                                                         RVALUE_CONTEXT_NT'"the"' {token to be parsed against: TEST_VALUE_NT'a topic'} {required: topic}
                                                             CONSTANT_NT'"the"' {kind: topic}
                             CODE_BLOCK_NT
                                 INVOCATION_LIST_NT'cut the matched text' {unit: 4} {indent: 2}
                                     INVOCATION_NT'cut the matched text' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'matched text' {token to be parsed against: TEST_VALUE_NT'a snippet'} {required: snippet}
    -                                        NONLOCAL_VARIABLE_NT'matched text' {nonlocal: 'matched text'(var)snippet}{meaning: {matched text = VARIABLE_MC}}
    +                                        NONLOCAL_VARIABLE_NT'matched text' {nonlocal: 'matched text'(var)snippet} {meaning: {matched text = VARIABLE_MC}}
             HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}
                 SENTENCE_NT'a person has some text called walk style' {unit: 4} {classified}
                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
    @@ -19906,11 +19906,11 @@ ROOT_NT
                                                     UNKNOWN_NT'accomplice'
                                                 RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                     TABLE_ENTRY_NT'character entry'
    -                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                         INVOCATION_LIST_NT'choose row with heading chosen of next direction in the curr' {unit: 4} {indent: 3}
                                             INVOCATION_NT'choose row with heading chosen of next direction in the curr' {phrase invoked: } {kind variable declarations: K=direction}
                                                 RVALUE_CONTEXT_NT'heading chosen' {token to be parsed against: TEST_VALUE_NT} {required: table column}
    -                                                CONSTANT_NT'heading chosen' {kind: nothing valued table column} {table column: 'heading chosen'}{meaning: {heading chosen = TABLE_COLUMN_MC}}
    +                                                CONSTANT_NT'heading chosen' {kind: nothing valued table column} {table column: 'heading chosen'} {meaning: {heading chosen = TABLE_COLUMN_MC}}
                                                 RVALUE_CONTEXT_NT'next direction' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                     LOCAL_VARIABLE_NT'next direction' {local: LV"next direction"-direction direction}
                                                 RVALUE_CONTEXT_NT'current table' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    @@ -19944,7 +19944,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'choose row with character of accomplice in the current table' {unit: 4} {indent: 3}
                                             INVOCATION_NT'choose row with character of accomplice in the current table' {phrase invoked: } {kind variable declarations: K=thing}
                                                 RVALUE_CONTEXT_NT'character' {token to be parsed against: TEST_VALUE_NT} {required: table column}
    -                                                CONSTANT_NT'character' {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                CONSTANT_NT'character' {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                                 RVALUE_CONTEXT_NT'accomplice' {token to be parsed against: TEST_VALUE_NT} {required: value}
                                                     LOCAL_VARIABLE_NT'accomplice' {local: LV nothing}
                                                 RVALUE_CONTEXT_NT'current table' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    @@ -19958,7 +19958,7 @@ ROOT_NT
                                                     LOCAL_VARIABLE_NT'next direction' {local: LV"next direction"-direction direction}
                                                 RVALUE_CONTEXT_NT'heading chosen entry' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                                     TABLE_ENTRY_NT'heading chosen entry'
    -                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'heading chosen'}{meaning: {heading chosen = TABLE_COLUMN_MC}}
    +                                                    CONSTANT_NT {kind: nothing valued table column} {table column: 'heading chosen'} {meaning: {heading chosen = TABLE_COLUMN_MC}}
                 SENTENCE_NT'a door has a person called last opener' {unit: 4} {classified} {interpretation of subject: infs'person'}
                     VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
                     COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
    @@ -19982,7 +19982,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" opens "'
                                         INVOCATION_NT'" opens "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" opens "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -19990,7 +19990,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'". "' {suppress_newlines}
                                         INVOCATION_NT'". "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'". "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20003,7 +20003,7 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the noun'
                                         INVOCATION_NT'the noun' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'noun' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'noun' {nonlocal: 'noun'(var)object} {meaning: {noun = VARIABLE_MC}}
                                     INVOCATION_LIST_SAY_NT'" opens from the other side. "' {suppress_newlines}
                                         INVOCATION_NT'" opens from the other side. "' {phrase invoked: } {kind variable declarations: K=text}
                                             RVALUE_CONTEXT_NT'" opens from the other side. "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20031,16 +20031,16 @@ ROOT_NT
                                     INVOCATION_LIST_SAY_NT'the person asked as pronoun'
                                         [1/2] INVOCATION_NT'the person asked as pronoun' {phrase invoked: } {unproven}/1
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'a man'} {required: man} {token check to do: TEST_VALUE_NT'a man'}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                                         [2/2] INVOCATION_NT'the person asked as pronoun' {phrase invoked: } {unproven}
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'a woman'} {required: woman} {token check to do: TEST_VALUE_NT'a woman'}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                             CODE_BLOCK_NT'otherwise' {results_from_splitting} {control structure: O}
                                 CODE_BLOCK_NT'say "[The person asked]"' {control structure: SAY}
                                     INVOCATION_LIST_SAY_NT'the person asked'
                                         INVOCATION_NT'the person asked' {phrase invoked: }
                                             RVALUE_CONTEXT_NT'person asked' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
    -                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}
    +                                            NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object} {meaning: {person asked = VARIABLE_MC}}
                         CODE_BLOCK_NT'say " [if the person asked is in the location]comes[otherwis' {control structure: SAY}
                             INVOCATION_LIST_SAY_NT'" "'
                                 INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
    @@ -20104,12 +20104,12 @@ ROOT_NT
                                 INVOCATION_LIST_NT'choose a blank row in the table of visible entrances' {unit: 4} {results_from_splitting} {indent: 1}
                                     INVOCATION_NT'choose a blank row in the table of visible entrances' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'table of visible entrances' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                        CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data}{meaning: {table of visible entrances = TABLE_MC}}
    +                                        CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data} {meaning: {table of visible entrances = TABLE_MC}}
                             CODE_BLOCK_NT'otherwise' {results_from_splitting} {control structure: O}
                                 INVOCATION_LIST_NT'choose a blank row in the table of visible exits' {unit: 4} {indent: 1}
                                     INVOCATION_NT'choose a blank row in the table of visible exits' {phrase invoked: }
                                         RVALUE_CONTEXT_NT'table of visible exits' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                        CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data}{meaning: {table of visible exits = TABLE_MC}}
    +                                        CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data} {meaning: {table of visible exits = TABLE_MC}}
                         INVOCATION_LIST_NT'now character entry is the person asked' {unit: 4} {control structure: NOW}
                             CONDITION_CONTEXT_NT'character entry is the person asked'
                         INVOCATION_LIST_NT'now total entry is 1' {unit: 4} {control structure: NOW}
    @@ -20132,23 +20132,23 @@ ROOT_NT
                         INVOCATION_LIST_NT'sort the table of visible entrances in heading chosen order' {unit: 4}
                             INVOCATION_NT'sort the table of visible entrances in heading chosen order' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible entrances' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data}{meaning: {table of visible entrances = TABLE_MC}}
    +                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data} {meaning: {table of visible entrances = TABLE_MC}}
                                 RVALUE_CONTEXT_NT'heading chosen' {token to be parsed against: TEST_VALUE_NT'table column'} {required: table column}
    -                                CONSTANT_NT'heading chosen' {kind: nothing valued table column} {table column: 'heading chosen'}{meaning: {heading chosen = TABLE_COLUMN_MC}}
    +                                CONSTANT_NT'heading chosen' {kind: nothing valued table column} {table column: 'heading chosen'} {meaning: {heading chosen = TABLE_COLUMN_MC}}
                         INVOCATION_LIST_NT'tidy departures of the table of visible entrances' {unit: 4}
                             INVOCATION_NT'tidy departures of the table of visible entrances' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible entrances' {token to be parsed against: TEST_VALUE_NT'a table name'} {required: table name}
    -                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data}{meaning: {table of visible entrances = TABLE_MC}}
    +                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data} {meaning: {table of visible entrances = TABLE_MC}}
                         INVOCATION_LIST_NT'sort the table of visible exits in heading chosen order' {unit: 4}
                             INVOCATION_NT'sort the table of visible exits in heading chosen order' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible exits' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data}{meaning: {table of visible exits = TABLE_MC}}
    +                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data} {meaning: {table of visible exits = TABLE_MC}}
                                 RVALUE_CONTEXT_NT'heading chosen' {token to be parsed against: TEST_VALUE_NT'table column'} {required: table column}
    -                                CONSTANT_NT'heading chosen' {kind: nothing valued table column} {table column: 'heading chosen'}{meaning: {heading chosen = TABLE_COLUMN_MC}}
    +                                CONSTANT_NT'heading chosen' {kind: nothing valued table column} {table column: 'heading chosen'} {meaning: {heading chosen = TABLE_COLUMN_MC}}
                         INVOCATION_LIST_NT'tidy departures of the table of visible exits' {unit: 4}
                             INVOCATION_NT'tidy departures of the table of visible exits' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible exits' {token to be parsed against: TEST_VALUE_NT'a table name'} {required: table name}
    -                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data}{meaning: {table of visible exits = TABLE_MC}}
    +                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data} {meaning: {table of visible exits = TABLE_MC}}
                         INVOCATION_LIST_NT'let total row count be the number of filled rows in the tabl' {unit: 4}
                             INVOCATION_NT'let total row count be the number of filled rows in the tabl' {phrase invoked: }
                                 NEW_LOCAL_CONTEXT_NT'total row count' {token to be parsed against: TEST_VALUE_NT} {required: value} {new var: number}
    @@ -20162,13 +20162,13 @@ ROOT_NT
                                                         INVOCATION_LIST_NT'number of filled rows in the table of visible entrances' {unit: 4}
                                                             INVOCATION_NT'number of filled rows in the table of visible entrances' {phrase invoked: } {resulting: number}
                                                                 RVALUE_CONTEXT_NT'table of visible entrances' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data}{meaning: {table of visible entrances = TABLE_MC}}
    +                                                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data} {meaning: {table of visible entrances = TABLE_MC}}
                                                 RVALUE_CONTEXT_NT'number of filled rows in the table of visible exits' {token to be parsed against: TEST_VALUE_NT'arithmetic value'} {required: arithmetic value}
                                                     PHRASE_TO_DECIDE_VALUE_NT'number of filled rows in the table of visible exits'
                                                         INVOCATION_LIST_NT'number of filled rows in the table of visible exits' {unit: 4}
                                                             INVOCATION_NT'number of filled rows in the table of visible exits' {phrase invoked: } {resulting: number}
                                                                 RVALUE_CONTEXT_NT'table of visible exits' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data}{meaning: {table of visible exits = TABLE_MC}}
    +                                                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data} {meaning: {table of visible exits = TABLE_MC}}
                         CODE_BLOCK_NT {control structure: IF}
                             INVOCATION_LIST_NT'if total row count is 0' {unit: 4} {colon_block_command}
                                 INVOCATION_NT'if total row count is 0' {phrase invoked: }
    @@ -20180,19 +20180,19 @@ ROOT_NT
                         INVOCATION_LIST_NT'generate descriptions from the table of visible entrances' {unit: 4}
                             INVOCATION_NT'generate descriptions from the table of visible entrances' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible entrances' {token to be parsed against: TEST_VALUE_NT'a table name'} {required: table name}
    -                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data}{meaning: {table of visible entrances = TABLE_MC}}
    +                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data} {meaning: {table of visible entrances = TABLE_MC}}
                         INVOCATION_LIST_NT'generate descriptions from the table of visible exits' {unit: 4}
                             INVOCATION_NT'generate descriptions from the table of visible exits' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible exits' {token to be parsed against: TEST_VALUE_NT'a table name'} {required: table name}
    -                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data}{meaning: {table of visible exits = TABLE_MC}}
    +                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data} {meaning: {table of visible exits = TABLE_MC}}
                         INVOCATION_LIST_NT'clear the table of visible entrances' {unit: 4}
                             INVOCATION_NT'clear the table of visible entrances' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible entrances' {token to be parsed against: TEST_VALUE_NT'a table name'} {required: table name}
    -                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data}{meaning: {table of visible entrances = TABLE_MC}}
    +                                CONSTANT_NT'table of visible entrances' {kind: table name} {table: table_data} {meaning: {table of visible entrances = TABLE_MC}}
                         INVOCATION_LIST_NT'clear the table of visible exits' {unit: 4}
                             INVOCATION_NT'clear the table of visible exits' {phrase invoked: }
                                 RVALUE_CONTEXT_NT'table of visible exits' {token to be parsed against: TEST_VALUE_NT'a table name'} {required: table name}
    -                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data}{meaning: {table of visible exits = TABLE_MC}}
    +                                CONSTANT_NT'table of visible exits' {kind: table name} {table: table_data} {meaning: {table of visible exits = TABLE_MC}}
                 IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 931}
                     CODE_BLOCK_NT
                         INVOCATION_LIST_NT'let count be the number of filled rows in the current table' {unit: 4} {indent: 1}
    @@ -20231,7 +20231,7 @@ ROOT_NT
                                             UNKNOWN_NT'accomplice'
                                         RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'value'} {required: value}
                                             TABLE_ENTRY_NT'character entry'
    -                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if character entry is a person' {unit: 4} {indent: 2} {colon_block_command}
                                         INVOCATION_NT'if character entry is a person' {phrase invoked: }
    @@ -20251,7 +20251,7 @@ ROOT_NT
                                                                 INVOCATION_NT'there is a second entry' {phrase invoked: } {resulting: truth state}
                                                                     LVALUE_TR_CONTEXT_NT'a second entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                         TABLE_ENTRY_NT'a second entry'
    -                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'second'}{meaning: {second = TABLE_COLUMN_MC}}
    +                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'second'} {meaning: {second = TABLE_COLUMN_MC}}
                                                     TEST_PROPOSITION_NT'second entry is a person' {proposition: << kind=person('second entry') >>} {term: 'second entry'}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'now second entry is marked for listing' {unit: 4} {results_from_splitting} {indent: 3} {control structure: NOW}
    @@ -20267,7 +20267,7 @@ ROOT_NT
                                                                 INVOCATION_NT'there is a third entry' {phrase invoked: } {resulting: truth state}
                                                                     LVALUE_TR_CONTEXT_NT'a third entry' {token to be parsed against: TEST_VALUE_NT'table'}
                                                                         TABLE_ENTRY_NT'a third entry'
    -                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'third'}{meaning: {third = TABLE_COLUMN_MC}}
    +                                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'third'} {meaning: {third = TABLE_COLUMN_MC}}
                                                     TEST_PROPOSITION_NT'third entry is a person' {proposition: << kind=person('third entry') >>} {term: 'third entry'}
                                     CODE_BLOCK_NT
                                         INVOCATION_LIST_NT'now third entry is marked for listing' {unit: 4} {results_from_splitting} {indent: 3} {control structure: NOW}
    @@ -20282,9 +20282,9 @@ ROOT_NT
                                                     INVOCATION_NT'room the heading chosen entry from the location' {phrase invoked: } {resulting: room} {unproven}
                                                         RVALUE_CONTEXT_NT'heading chosen entry' {token to be parsed against: TEST_VALUE_NT'direction'} {required: direction}
                                                             TABLE_ENTRY_NT'heading chosen entry'
    -                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'heading chosen'}{meaning: {heading chosen = TABLE_COLUMN_MC}}
    +                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'heading chosen'} {meaning: {heading chosen = TABLE_COLUMN_MC}}
                                                         RVALUE_CONTEXT_NT'location' {token to be parsed against: TEST_VALUE_NT'room'} {required: room} {token check to do: TEST_VALUE_NT'room'}
    -                                                        NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object}{meaning: {location = VARIABLE_MC}}
    +                                                        NONLOCAL_VARIABLE_NT'location' {nonlocal: 'location'(var)object} {meaning: {location = VARIABLE_MC}}
                                 CODE_BLOCK_NT {control structure: IF}
                                     INVOCATION_LIST_NT'if total entry is 3' {unit: 4} {indent: 2} {colon_block_command}
                                         INVOCATION_NT'if total entry is 3' {phrase invoked: }
    @@ -20296,7 +20296,7 @@ ROOT_NT
                                                 INVOCATION_NT'the character entry' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                         TABLE_ENTRY_NT'character entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'", "'
                                                 INVOCATION_NT'", "' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'", "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20305,7 +20305,7 @@ ROOT_NT
                                                 INVOCATION_NT'the second entry' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'second entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                         TABLE_ENTRY_NT'second entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'second'}{meaning: {second = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'second'} {meaning: {second = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'optional comma'
                                                 INVOCATION_NT'optional comma' {phrase invoked: }
                                             INVOCATION_LIST_SAY_NT'" and "'
    @@ -20316,7 +20316,7 @@ ROOT_NT
                                                 INVOCATION_NT'the third entry' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'third entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                         TABLE_ENTRY_NT'third entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'third'}{meaning: {third = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'third'} {meaning: {third = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'" "'
                                                 INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'" "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20332,7 +20332,7 @@ ROOT_NT
                                                 INVOCATION_NT'the character entry' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                         TABLE_ENTRY_NT'character entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'" and "'
                                                 INVOCATION_NT'" and "' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'" and "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20341,7 +20341,7 @@ ROOT_NT
                                                 INVOCATION_NT'the second entry' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'second entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                         TABLE_ENTRY_NT'second entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'second'}{meaning: {second = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'second'} {meaning: {second = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'" "'
                                                 INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'" "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20363,11 +20363,11 @@ ROOT_NT
                                                         [1/2] INVOCATION_NT'the character entry as pronoun' {phrase invoked: } {unproven}/1
                                                             RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'a man'} {required: man} {token check to do: TEST_VALUE_NT'a man'}
                                                                 TABLE_ENTRY_NT'character entry'
    -                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                                         [2/2] INVOCATION_NT'the character entry as pronoun' {phrase invoked: } {unproven}
                                                             RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'a woman'} {required: woman} {token check to do: TEST_VALUE_NT'a woman'}
                                                                 TABLE_ENTRY_NT'character entry'
    -                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                                     INVOCATION_LIST_SAY_NT'" "'
                                                         INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
                                                             RVALUE_CONTEXT_NT'" "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20378,7 +20378,7 @@ ROOT_NT
                                                         INVOCATION_NT'the character entry' {phrase invoked: }
                                                             RVALUE_CONTEXT_NT'character entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                                 TABLE_ENTRY_NT'character entry'
    -                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                                CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                                     INVOCATION_LIST_SAY_NT'" "'
                                                         INVOCATION_NT'" "' {phrase invoked: } {kind variable declarations: K=text}
                                                             RVALUE_CONTEXT_NT'" "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20394,9 +20394,9 @@ ROOT_NT
                                                 INVOCATION_NT'walk style of the character entry' {phrase invoked: } {kind variable declarations: K=text} {save self}
                                                     RVALUE_CONTEXT_NT'walk style of the character entry' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                         PROPERTY_VALUE_NT'walk style of the character entry' {record as self}
    -                                                        CONSTANT_NT {kind: nothing valued property} {property: 'walk style'=text}{meaning: {walk style = PROPERTY_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued property} {property: 'walk style'=text} {meaning: {walk style = PROPERTY_MC}}
                                                             TABLE_ENTRY_NT'the character entry'
    -                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'character'}{meaning: {character = TABLE_COLUMN_MC}}
    +                                                            CONSTANT_NT {kind: nothing valued table column} {table column: 'character'} {meaning: {character = TABLE_COLUMN_MC}}
                                             INVOCATION_LIST_SAY_NT'"s "'
                                                 INVOCATION_NT'"s "' {phrase invoked: } {kind variable declarations: K=text}
                                                     RVALUE_CONTEXT_NT'"s "' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
    @@ -20561,7 +20561,7 @@ ROOT_NT
                                                 INVOCATION_NT'the heading chosen entry' {phrase invoked: }
                                                     RVALUE_CONTEXT_NT'heading chosen entry' {token to be parsed against: TEST_VALUE_NT'object'} {required: object}
                                                         TABLE_ENTRY_NT'heading chosen entry'
    -                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'heading chosen'}{meaning: {heading chosen = TABLE_COLUMN_MC}}
    +                                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'heading chosen'} {meaning: {heading chosen = TABLE_COLUMN_MC}}
                                     CODE_BLOCK_NT'otherwise' {results_from_splitting} {indent: 2} {control structure: O}
                                         CODE_BLOCK_NT'say "[the target]"' {control structure: SAY}
                                             INVOCATION_LIST_SAY_NT'the target'
    @@ -20642,7 +20642,7 @@ ROOT_NT
                     COMMON_NOUN_NT'number that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=numbers variable-pointer(x) >>} {eval: TEST_VALUE_NT}
                 SENTENCE_NT'group size is 1' {unit: 4} {classified} {interpretation of subject: infs'door'}
                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    -                PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}
    +                PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number} {meaning: {group size = VARIABLE_MC}}}
                     PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}
                 IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 933}
                     CODE_BLOCK_NT
    @@ -20830,7 +20830,7 @@ ROOT_NT
                                         INVOCATION_NT'infection color of the patient' {phrase invoked: } {kind variable declarations: K=infection color} {save self}
                                             RVALUE_CONTEXT_NT'infection color of the patient' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                                 PROPERTY_VALUE_NT'infection color of the patient' {record as self}
    -                                                CONSTANT_NT {kind: infection colors valued property} {property: 'infection color'=infection color}{meaning: {infection color = PROPERTY_MC}}
    +                                                CONSTANT_NT {kind: infection colors valued property} {property: 'infection color'=infection color} {meaning: {infection color = PROPERTY_MC}}
                                                     LOCAL_VARIABLE_NT'the patient' {local: LV nothing}
                                 INVOCATION_LIST_NT'decrement index' {unit: 4} {indent: 2}
                                     INVOCATION_NT'decrement index' {phrase invoked: }
    @@ -20925,7 +20925,7 @@ ROOT_NT
                                         INVOCATION_LIST_NT'number of filled rows in the table of dipping phrases' {unit: 4}
                                             INVOCATION_NT'number of filled rows in the table of dipping phrases' {phrase invoked: } {resulting: number}
                                                 RVALUE_CONTEXT_NT'table of dipping phrases' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                                CONSTANT_NT'table of dipping phrases' {kind: table name} {table: table_data}{meaning: {table of dipping phrases = TABLE_MC}}
    +                                                CONSTANT_NT'table of dipping phrases' {kind: table name} {table: table_data} {meaning: {table of dipping phrases = TABLE_MC}}
                         CODE_BLOCK_NT {control structure: IF}
                             INVOCATION_LIST_NT'if index is greater than 4' {unit: 4} {colon_block_command}
                                 INVOCATION_NT'if index is greater than 4' {phrase invoked: }
    @@ -20949,13 +20949,13 @@ ROOT_NT
                                 RVALUE_CONTEXT_NT'index' {token to be parsed against: TEST_VALUE_NT'number'} {required: number}
                                     LOCAL_VARIABLE_NT'index' {local: LV"index"-number number}
                                 RVALUE_CONTEXT_NT'table of dipping phrases' {token to be parsed against: TEST_VALUE_NT'table name'} {required: table name}
    -                                CONSTANT_NT'table of dipping phrases' {kind: table name} {table: table_data}{meaning: {table of dipping phrases = TABLE_MC}}
    +                                CONSTANT_NT'table of dipping phrases' {kind: table name} {table: table_data} {meaning: {table of dipping phrases = TABLE_MC}}
                         CODE_BLOCK_NT'say dipping entry' {control structure: SAY}
                             INVOCATION_LIST_SAY_NT'dipping entry'
                                 INVOCATION_NT'dipping entry' {phrase invoked: } {kind variable declarations: K=text}
                                     RVALUE_CONTEXT_NT'dipping entry' {token to be parsed against: TEST_VALUE_NT} {required: sayable value}
                                         TABLE_ENTRY_NT'dipping entry'
    -                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'dipping'}{meaning: {dipping = TABLE_COLUMN_MC}}
    +                                        CONSTANT_NT {kind: nothing valued table column} {table column: 'dipping'} {meaning: {dipping = TABLE_COLUMN_MC}}
                 TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 4}
                 SENTENCE_NT'a door is usually scenery' {unit: 4} {classified} {interpretation of subject: infs'door'}
                     VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
    diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt
    index 90d66d7b2..01896ac80 100644
    --- a/inform7/Figures/memory-diagnostics.txt
    +++ b/inform7/Figures/memory-diagnostics.txt
    @@ -1,6 +1,6 @@
    -Total memory consumption was 126319K = 123 MB
    +Total memory consumption was 126253K = 123 MB
     
    - ---- was used for 2008185 objects, in 360861 frames in 0 x 800K = 0K = 0 MB:
    + ---- was used for 2008180 objects, in 360856 frames in 0 x 800K = 0K = 0 MB:
     
         32.3%  inter_tree_node_array                    58 x 8192 = 475136 objects, 41813824 bytes
         18.9%  text_stream_array                        4343 x 100 = 434300 objects, 24459776 bytes
    @@ -26,18 +26,18 @@ Total memory consumption was 126319K = 123 MB
          0.8%  id_body                                  941 objects, 1076504 bytes
          0.7%  adjective_meaning                        202 objects, 1000304 bytes
          0.7%  excerpt_meaning                          3100 objects, 967200 bytes
    -     0.6%  production                               3877 objects, 899464 bytes
    -     0.6%  ptoken                                   8397 objects, 873288 bytes
    +     0.6%  production                               3876 objects, 899232 bytes
    +     0.6%  ptoken                                   8392 objects, 872768 bytes
          0.6%  grammatical_usage                        3611 objects, 866640 bytes
          0.6%  individual_form                          2561 objects, 860496 bytes
          0.6%  inter_schema_node                        8914 objects, 855744 bytes
          0.4%  unary_predicate_array                    16 x 1000 = 16000 objects, 640512 bytes
          0.3%  scan_directory                           112 objects, 462336 bytes
          0.3%  local_variable_array                     47 x 100 = 4700 objects, 452704 bytes
    -     0.2%  verb_usage                               1128 objects, 388032 bytes
    +     0.3%  verb_usage                               1128 objects, 388032 bytes
          0.2%  rule                                     469 objects, 367696 bytes
          0.2%  verb_form                                386 objects, 348944 bytes
    -     0.2%  dictionary                               6619 objects, 317712 bytes
    +     0.2%  dictionary                               6620 objects, 317760 bytes
          0.2%  noun                                     2380 objects, 285600 bytes
          0.2%  compilation_subtask                      3346 objects, 267680 bytes
          0.2%  inter_annotation_array                   2 x 8192 = 16384 objects, 262208 bytes
    @@ -178,11 +178,11 @@ Total memory consumption was 126319K = 123 MB
          ----  inbuild_search_result                    18 objects, 720 bytes
          ----  inform_language                          6 objects, 672 bytes
          ----  relation_guard                           5 objects, 640 bytes
    +     ----  implication                              13 objects, 624 bytes
          ----  code_generation                          1 object, 576 bytes
          ----  inter_warehouse_room                     10 objects, 560 bytes
          ----  rulebook_outcome                         17 objects, 544 bytes
          ----  small_word_set                           11 objects, 528 bytes
    -     ----  implication                              13 objects, 520 bytes
          ----  inform_kit                               5 objects, 520 bytes
          ----  equation                                 4 objects, 480 bytes
          ----  i6_memory_setting                        14 objects, 448 bytes
    @@ -237,8 +237,8 @@ Total memory consumption was 126319K = 123 MB
     
     100.0% was used for memory not allocated for objects:
     
    -    59.2%  text stream storage                      76637280 bytes in 452265 claims
    -     3.5%  dictionary storage                       4544512 bytes in 6619 claims
    +    59.2%  text stream storage                      76567416 bytes in 452276 claims
    +     3.5%  dictionary storage                       4546560 bytes in 6620 claims
          ----  sorting                                  744 bytes in 3 claims
          5.5%  source text                              7200000 bytes in 3 claims
          8.3%  source text details                      10800000 bytes in 2 claims
    @@ -255,5 +255,5 @@ Total memory consumption was 126319K = 123 MB
          ----  code generation workspace for objects    1336 bytes in 4 claims
          0.2%  emitter array storage                    279776 bytes in 1995 claims
     
    --140.-5% was overhead - -181862792 bytes = -177600K = -173 MB
    +-140.-6% was overhead - -181862192 bytes = -177599K = -173 MB
     
    diff --git a/inform7/Figures/syntax-summary.txt b/inform7/Figures/syntax-summary.txt
    index 17b6d1568..16cf6b1b0 100644
    --- a/inform7/Figures/syntax-summary.txt
    +++ b/inform7/Figures/syntax-summary.txt
    @@ -1024,14 +1024,14 @@ ROOT_NT
                     X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
                         COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
                         PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
    -                PROPER_NOUN_NT'table of general chitchat' {refined} {eval: CONSTANT_NT'table of general chitchat' {kind: table name} {table: table_data}{meaning: {table of general chitchat = TABLE_MC}}}
    +                PROPER_NOUN_NT'table of general chitchat' {refined} {eval: CONSTANT_NT'table of general chitchat' {kind: table name} {table: table_data} {meaning: {table of general chitchat = TABLE_MC}}}
                 TABLE_NT'table of general chitchat topic reply summary turn stamp cha' {unit: 4}
                 SENTENCE_NT'the conversation of vanessa is the table of vanessa chatter' {unit: 4} {classified} {interpretation of subject: infs'person'}
                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
                     X_OF_Y_NT'conversation of vanessa' {definite 'the' n/m/f s/p nom/acc} {refined}
                         PROPER_NOUN_NT'vanessa' {refined} {refers: infs'vanessa'} {eval: CONSTANT_NT'vanessa' {kind: woman} {instance: I129'vanessa'} {enumeration: 0}}
                         PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
    -                PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}
    +                PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data} {meaning: {table of vanessa chatter = TABLE_MC}}}
                 TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}
                 IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 923}
             HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}
    @@ -1110,7 +1110,7 @@ ROOT_NT
                     COMMON_NOUN_NT'number that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=numbers variable-pointer(x) >>} {eval: TEST_VALUE_NT}
                 SENTENCE_NT'group size is 1' {unit: 4} {classified} {interpretation of subject: infs'door'}
                     VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
    -                PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}
    +                PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number} {meaning: {group size = VARIABLE_MC}}}
                     PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}
                 IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 933}
                 IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 934}
    diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt
    index 2f67ca7bb..e44f2a007 100644
    --- a/inform7/Figures/timings-diagnostics.txt
    +++ b/inform7/Figures/timings-diagnostics.txt
    @@ -1,37 +1,33 @@
     100.0% in inform7 run
    -     68.0% in compilation to Inter
    -         47.6% in //Sequence::undertake_queued_tasks//
    -          4.6% in //MajorNodes::pre_pass//
    -          3.3% in //MajorNodes::pass_1//
    +     68.8% in compilation to Inter
    +         47.8% in //Sequence::undertake_queued_tasks//
    +          4.5% in //MajorNodes::pre_pass//
    +          3.4% in //MajorNodes::pass_1//
               2.4% in //RTPhrasebook::compile_entries//
               1.8% in //ImperativeDefinitions::assess_all//
               1.5% in //RTKindConstructors::compile//
    -          1.0% in //Sequence::lint_inter//
    +          1.1% in //Sequence::lint_inter//
    +          0.5% in //ImperativeDefinitions::compile_first_block//
               0.5% in //MajorNodes::pass_2//
    +          0.5% in //Sequence::undertake_queued_tasks//
               0.5% in //World::stage_V//
    -          0.4% in //ImperativeDefinitions::compile_first_block//
    -          0.4% in //Sequence::undertake_queued_tasks//
    -          0.4% in //Sequence::undertake_queued_tasks//
    -          0.2% in //CompletionModule::compile//
    -          0.2% in //RTKindConstructors::compile_permissions//
    +          0.3% in //Sequence::undertake_queued_tasks//
    +          0.1% in //CompletionModule::compile//
               0.1% in //InferenceSubjects::emit_all//
    +          0.1% in //RTKindConstructors::compile_permissions//
               0.1% in //Task::make_built_in_kind_constructors//
    -          0.1% in //Understand::traverse//
               0.1% in //World::stages_II_and_III//
    -          2.0% not specifically accounted for
    -     29.1% in running Inter pipeline
    -         10.1% in step 14/15: generate inform6 -> auto.inf
    +          2.4% not specifically accounted for
    +     28.4% in running Inter pipeline
    +         10.2% in step 14/15: generate inform6 -> auto.inf
               7.5% in step 5/15: load-binary-kits
    -          6.8% in step 6/15: make-synoptic-module
    -          1.6% in step 9/15: make-identifiers-unique
    -          0.4% in step 12/15: eliminate-redundant-operations
    -          0.4% in step 4/15: compile-splats
    +          6.4% in step 6/15: make-synoptic-module
    +          1.5% in step 9/15: make-identifiers-unique
    +          0.3% in step 12/15: eliminate-redundant-operations
    +          0.3% in step 4/15: compile-splats
               0.3% in step 7/15: shorten-wiring
               0.3% in step 8/15: detect-indirect-calls
    -          0.2% in step 11/15: eliminate-redundant-labels
    -          0.1% in step 10/15: reconcile-verbs
    -          0.1% in step 2/15: parse-insertions
    -          0.1% in step 3/15: resolve-conditional-compilation
    -          0.7% not specifically accounted for
    +          0.1% in step 11/15: eliminate-redundant-labels
    +          0.9% not specifically accounted for
           2.2% in supervisor
    -      0.5% not specifically accounted for
    +      0.4% not specifically accounted for
    diff --git a/inform7/Tests/Test Makes/Eg4-C/textual.txt b/inform7/Tests/Test Makes/Eg4-C/textual.txt
    index a7bbb94ec..f2aaf16ac 100644
    --- a/inform7/Tests/Test Makes/Eg4-C/textual.txt	
    +++ b/inform7/Tests/Test Makes/Eg4-C/textual.txt	
    @@ -1516,7 +1516,7 @@ package main _plain
     				constant (int32) relation_id = 29 __translation="relation_id_U23"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "number"
    -				constant (int32) ^at = 14890
    +				constant (int32) ^at = 14881
     			package relation24 _relation
     				constant (int32) relation_id = 30 __translation="relation_id_U24"
     				constant (text) ^name = "same-variable-initial-value-as"
    @@ -5581,7 +5581,7 @@ package main _plain
     				constant (text) ^name = "dynamic memory allocation"
     				constant (text) ^printed_name = "dynamic memory allocation option [8192]"
     				constant (int32) ^source_file_scoped = 0
    -				constant (int32) ^at = 15541
    +				constant (int32) ^at = 15532
     				constant ^used_in_extension = /main/basic_inform_by_graham_nelson/extension_id
     				constant (int32) ^minimum = 8192
     			package use_option16 _use_option
    @@ -5651,8 +5651,8 @@ package main _plain
     				constant (text) ^name = "German language"
     				constant (text) ^printed_name = "German language"
     				constant (text) ^abbreviation = "GL"
    -				constant (int32) ^at = 15787
    -				constant (int32) ^kind_set_at = 15787
    +				constant (int32) ^at = 15778
    +				constant (int32) ^kind_set_at = 15778
     				constant ^value = I_german_language
     				constant (text) ^index_kind = "natural language"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > natural language"
    @@ -5667,8 +5667,8 @@ package main _plain
     				constant (text) ^name = "Italian language"
     				constant (text) ^printed_name = "Italian language"
     				constant (text) ^abbreviation = "IL"
    -				constant (int32) ^at = 15787
    -				constant (int32) ^kind_set_at = 15787
    +				constant (int32) ^at = 15778
    +				constant (int32) ^kind_set_at = 15778
     				constant ^value = I_italian_language
     				constant (text) ^index_kind = "natural language"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > natural language"
    @@ -5683,8 +5683,8 @@ package main _plain
     				constant (text) ^name = "English language"
     				constant (text) ^printed_name = "English language"
     				constant (text) ^abbreviation = "EL"
    -				constant (int32) ^at = 15787
    -				constant (int32) ^kind_set_at = 15787
    +				constant (int32) ^at = 15778
    +				constant (int32) ^kind_set_at = 15778
     				constant ^value = I_english_language
     				constant (text) ^index_kind = "natural language"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > natural language"
    @@ -5700,8 +5700,8 @@ package main _plain
     				constant (text) ^name = "French language"
     				constant (text) ^printed_name = "French language"
     				constant (text) ^abbreviation = "FL"
    -				constant (int32) ^at = 15787
    -				constant (int32) ^kind_set_at = 15787
    +				constant (int32) ^at = 15778
    +				constant (int32) ^kind_set_at = 15778
     				constant ^value = I_french_language
     				constant (text) ^index_kind = "natural language"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > natural language"
    @@ -5716,8 +5716,8 @@ package main _plain
     				constant (text) ^name = "Swedish language"
     				constant (text) ^printed_name = "Swedish language"
     				constant (text) ^abbreviation = "SL"
    -				constant (int32) ^at = 15787
    -				constant (int32) ^kind_set_at = 15787
    +				constant (int32) ^at = 15778
    +				constant (int32) ^kind_set_at = 15778
     				constant ^value = I_swedish_language
     				constant (text) ^index_kind = "natural language"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > natural language"
    @@ -5732,8 +5732,8 @@ package main _plain
     				constant (text) ^name = "Spanish language"
     				constant (text) ^printed_name = "Spanish language"
     				constant (text) ^abbreviation = "SL"
    -				constant (int32) ^at = 15787
    -				constant (int32) ^kind_set_at = 15787
    +				constant (int32) ^at = 15778
    +				constant (int32) ^kind_set_at = 15778
     				constant ^value = I_spanish_language
     				constant (text) ^index_kind = "natural language"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > natural language"
    @@ -5753,7 +5753,7 @@ package main _plain
     				constant ^run_fn = /main/basic_inform_by_graham_nelson/rulebooks/rulebook1/run_fn/call
     				constant (text) ^index_id = "startup"
     				constant (text) ^focus = "Startup rulebook"
    -				constant (int32) ^at = 15826
    +				constant (int32) ^at = 15817
     				constant (int32) ^automatically_generated = 0
     				package outcome1 _rulebook_outcome
     					constant (text) ^text = "allow startup"
    @@ -5770,7 +5770,7 @@ package main _plain
     				constant ^run_fn = /main/basic_inform_by_graham_nelson/rulebooks/rulebook2/run_fn/call
     				constant (text) ^index_id = "shutdown"
     				constant (text) ^focus = "Shutdown rulebook"
    -				constant (int32) ^at = 15848
    +				constant (int32) ^at = 15839
     				constant (int32) ^automatically_generated = 0
     				constant (int32) rulebook_id = 1 __translation="rulebook_id_U2"
     			package rulebook_outcome1 _outcome
    @@ -5788,7 +5788,7 @@ package main _plain
     					constant (text) ^printed_name = "before starting the virtual machine rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity1/before_rb/run_fn/call
     					constant (text) ^focus = "before starting the virtual machine rulebook"
    -					constant (int32) ^at = 31950
    +					constant (int32) ^at = 31941
     					constant (int32) ^automatically_generated = 1
     					constant (int32) rulebook_id = 2 __translation="rulebook_id_U3"
     				package for_rb _rulebook
    @@ -5834,7 +5834,7 @@ package main _plain
     					constant (text) ^printed_name = "for starting the virtual machine rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity1/for_rb/run_fn/call
     					constant (text) ^focus = "for starting the virtual machine rulebook"
    -					constant (int32) ^at = 32001
    +					constant (int32) ^at = 31992
     					constant (int32) ^automatically_generated = 1
     					package entry1 _rulebook_entry
     						constant ^rule = /main/basic_inform_by_graham_nelson/rules/rule1/anchor
    @@ -5852,13 +5852,13 @@ package main _plain
     					constant (text) ^printed_name = "after starting the virtual machine rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity1/after_rb/run_fn/call
     					constant (text) ^focus = "after starting the virtual machine rulebook"
    -					constant (int32) ^at = 32052
    +					constant (int32) ^at = 32043
     					constant (int32) ^automatically_generated = 1
     					constant (int32) rulebook_id = 4 __translation="rulebook_id_U5"
     				constant (int32) activity_id = 0 __translation="activity_id_U1"
     				constant V1_starting_the_virtual_mach = activity_id __translation="V1_starting_the_virtual_mach"
     				constant (text) ^name = "starting the virtual machine"
    -				constant (int32) ^at = 15855
    +				constant (int32) ^at = 15846
     				constant ^before_rulebook = /main/basic_inform_by_graham_nelson/activities/activity1/before_rb/rulebook_id
     				constant ^for_rulebook = /main/basic_inform_by_graham_nelson/activities/activity1/for_rb/rulebook_id
     				constant ^after_rulebook = /main/basic_inform_by_graham_nelson/activities/activity1/after_rb/rulebook_id
    @@ -5875,7 +5875,7 @@ package main _plain
     					constant (text) ^printed_name = "before printing the name rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity2/before_rb/run_fn/call
     					constant (text) ^focus = "before printing the name rulebook"
    -					constant (int32) ^at = 32129
    +					constant (int32) ^at = 32120
     					constant (int32) ^automatically_generated = 1
     					constant (int32) rulebook_id = 5 __translation="rulebook_id_U6"
     				package for_rb _rulebook
    @@ -5921,7 +5921,7 @@ package main _plain
     					constant (text) ^printed_name = "for printing the name rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity2/for_rb/run_fn/call
     					constant (text) ^focus = "for printing the name rulebook"
    -					constant (int32) ^at = 32171
    +					constant (int32) ^at = 32162
     					constant (int32) ^automatically_generated = 1
     					package entry1 _rulebook_entry
     						constant ^rule = /main/basic_inform_by_graham_nelson/rules/rule2/anchor
    @@ -5939,13 +5939,13 @@ package main _plain
     					constant (text) ^printed_name = "after printing the name rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity2/after_rb/run_fn/call
     					constant (text) ^focus = "after printing the name rulebook"
    -					constant (int32) ^at = 32213
    +					constant (int32) ^at = 32204
     					constant (int32) ^automatically_generated = 1
     					constant (int32) rulebook_id = 7 __translation="rulebook_id_U8"
     				constant (int32) activity_id = 1 __translation="activity_id_U2"
     				constant V2_printing_the_name = activity_id __translation="V2_printing_the_name"
     				constant (text) ^name = "printing the name"
    -				constant (int32) ^at = 15895
    +				constant (int32) ^at = 15886
     				constant ^before_rulebook = /main/basic_inform_by_graham_nelson/activities/activity2/before_rb/rulebook_id
     				constant ^for_rulebook = /main/basic_inform_by_graham_nelson/activities/activity2/for_rb/rulebook_id
     				constant ^after_rulebook = /main/basic_inform_by_graham_nelson/activities/activity2/after_rb/rulebook_id
    @@ -5962,7 +5962,7 @@ package main _plain
     					constant (text) ^printed_name = "before printing the plural name rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity3/before_rb/run_fn/call
     					constant (text) ^focus = "before printing the plural name rulebook"
    -					constant (int32) ^at = 32286
    +					constant (int32) ^at = 32277
     					constant (int32) ^automatically_generated = 1
     					constant (int32) rulebook_id = 8 __translation="rulebook_id_U9"
     				package for_rb _rulebook
    @@ -6008,7 +6008,7 @@ package main _plain
     					constant (text) ^printed_name = "for printing the plural name rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity3/for_rb/run_fn/call
     					constant (text) ^focus = "for printing the plural name rulebook"
    -					constant (int32) ^at = 32337
    +					constant (int32) ^at = 32328
     					constant (int32) ^automatically_generated = 1
     					package entry1 _rulebook_entry
     						constant ^rule = /main/basic_inform_by_graham_nelson/rules/rule3/anchor
    @@ -6026,13 +6026,13 @@ package main _plain
     					constant (text) ^printed_name = "after printing the plural name rulebook"
     					constant ^run_fn = /main/basic_inform_by_graham_nelson/activities/activity3/after_rb/run_fn/call
     					constant (text) ^focus = "after printing the plural name rulebook"
    -					constant (int32) ^at = 32388
    +					constant (int32) ^at = 32379
     					constant (int32) ^automatically_generated = 1
     					constant (int32) rulebook_id = 10 __translation="rulebook_id_U11"
     				constant (int32) activity_id = 2 __translation="activity_id_U3"
     				constant V3_printing_the_plural_name = activity_id __translation="V3_printing_the_plural_name"
     				constant (text) ^name = "printing the plural name"
    -				constant (int32) ^at = 15938
    +				constant (int32) ^at = 15929
     				constant ^before_rulebook = /main/basic_inform_by_graham_nelson/activities/activity3/before_rb/rulebook_id
     				constant ^for_rulebook = /main/basic_inform_by_graham_nelson/activities/activity3/for_rb/rulebook_id
     				constant ^after_rulebook = /main/basic_inform_by_graham_nelson/activities/activity3/after_rb/rulebook_id
    @@ -6044,7 +6044,7 @@ package main _plain
     		package kinds _submodule
     			package kind1 _kind
     				constant (text) ^name = "natural language"
    -				constant (int32) ^at = 15787
    +				constant (int32) ^at = 15778
     				typename K_natural_language = enum __translation="K_natural_language"
     				constant (int32) ^source_order = 14
     				constant (int32) kind_ref = 561 __translation="kind_ref_U38"
    @@ -6210,14 +6210,14 @@ package main _plain
     		package variables _submodule
     			package variable1 _variable
     				constant (text) ^name = "language of play"
    -				constant (int32) ^at = 15797
    +				constant (int32) ^at = 15788
     				constant ^heading = /main/completion/basics/heading6/id
     				constant (int32) ^indexable = 1
     				constant (text) ^contents = "natural language"
     				variable (/main/basic_inform_by_graham_nelson/kinds/kind1/K_natural_language) V1_language_of_play = /main/basic_inform_by_graham_nelson/instances/instance3/I_english_language __translation="V1_language_of_play"
     			package variable2 _variable
     				constant (text) ^name = "parameter-object"
    -				constant (int32) ^at = 15809
    +				constant (int32) ^at = 15800
     				constant ^heading = /main/completion/basics/heading6/id
     				constant (int32) ^indexable = 1
     				constant (text) ^contents = "object"
    @@ -6423,8 +6423,8 @@ package main _plain
     			package phrase101 _to_phrase
     				package closure1 _closure
     					constant (/main/generic/kinds/kind29/K_list_of_values) closure_data = { /main/generic/kinds/derived_kind1/DK1_phrase_real_number____re, /main/BasicInformKit/functions/REAL_NUMBER_TY_Tanh_fn/REAL_NUMBER_TY_Tanh, "tanh function" } __translation="closure_data_U20"
    -		constant (int32) ^at = 14892
    -		constant (int32) ^included_at = 14796
    +		constant (int32) ^at = 14883
    +		constant (int32) ^included_at = 14787
     		constant (int32) ^auto_included = 1
     		constant (int32) ^standard = 1
     		package rules _submodule
    @@ -6447,7 +6447,7 @@ package main _plain
     			package modal_verb1 _modal_verb
     				constant (text) ^name = "means (modal)"
     				constant (text) ^infinitive = "mean"
    -				constant (int32) ^at = 14911
    +				constant (int32) ^at = 14902
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb2"
     						local fn
    @@ -6580,7 +6580,7 @@ package main _plain
     			package modal_verb2 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14921
    +				constant (int32) ^at = 14912
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb3"
     						local fn
    @@ -6821,7 +6821,7 @@ package main _plain
     			package modal_verb3 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14931
    +				constant (int32) ^at = 14922
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb4"
     						local fn
    @@ -7062,7 +7062,7 @@ package main _plain
     			package modal_verb4 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14941
    +				constant (int32) ^at = 14932
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb5"
     						local fn
    @@ -7303,7 +7303,7 @@ package main _plain
     			package modal_verb5 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14961
    +				constant (int32) ^at = 14952
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb6"
     						local fn
    @@ -7544,7 +7544,7 @@ package main _plain
     			package modal_verb6 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14971
    +				constant (int32) ^at = 14962
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb7"
     						local fn
    @@ -7785,7 +7785,7 @@ package main _plain
     			package modal_verb7 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14981
    +				constant (int32) ^at = 14972
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb8"
     						local fn
    @@ -8026,7 +8026,7 @@ package main _plain
     			package modal_verb8 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 14991
    +				constant (int32) ^at = 14982
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb9"
     						local fn
    @@ -8267,7 +8267,7 @@ package main _plain
     			package modal_verb9 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 15021
    +				constant (int32) ^at = 15012
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb10"
     						local fn
    @@ -8508,7 +8508,7 @@ package main _plain
     			package modal_verb10 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 15041
    +				constant (int32) ^at = 15032
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb11"
     						local fn
    @@ -8755,7 +8755,7 @@ package main _plain
     				constant (text) ^past = "A implied B"
     				constant (text) ^present_perfect = "A has  implied B; A have  implied B"
     				constant (text) ^past_perfect = "A had  implied B"
    -				constant (int32) ^at = 15051
    +				constant (int32) ^at = 15042
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb4"
     						local fn
    @@ -8920,7 +8920,7 @@ package main _plain
     			package modal_verb11 _modal_verb
     				constant (text) ^name = "implies (modal)"
     				constant (text) ^infinitive = "imply"
    -				constant (int32) ^at = 15061
    +				constant (int32) ^at = 15052
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb12"
     						local fn
    @@ -9058,7 +9058,7 @@ package main _plain
     				constant (text) ^past = "A could  be B; B could  be  been  by A"
     				constant (text) ^present_perfect = "A has  been  able  to  be B; A have  been  able  to  be B; B has  been  able  to  be  been  by A; B have  been  able  to  be  been  by A"
     				constant (text) ^past_perfect = "A had  been  able  to  be B; B had  been  able  to  be  been  by A"
    -				constant (int32) ^at = 15071
    +				constant (int32) ^at = 15062
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb5"
     						local fn
    @@ -9233,7 +9233,7 @@ package main _plain
     				constant (text) ^past = "A could B"
     				constant (text) ^present_perfect = "A has  been  able  to B; A have  been  able  to B"
     				constant (text) ^past_perfect = "A had  been  able  to B"
    -				constant (int32) ^at = 15071
    +				constant (int32) ^at = 15062
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb6"
     						local fn
    @@ -10162,7 +10162,7 @@ package main _plain
     				constant (text) ^past = "A had B"
     				constant (text) ^present_perfect = "A has  had B; A have  had B"
     				constant (text) ^past_perfect = "A had  had B"
    -				constant (int32) ^at = 15085
    +				constant (int32) ^at = 15076
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb7"
     						local fn
    @@ -10332,7 +10332,7 @@ package main _plain
     				constant (text) ^past = "A specified B"
     				constant (text) ^present_perfect = "A has  specified B; A have  specified B"
     				constant (text) ^past_perfect = "A had  specified B"
    -				constant (int32) ^at = 15095
    +				constant (int32) ^at = 15086
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb8"
     						local fn
    @@ -10503,7 +10503,7 @@ package main _plain
     				constant (text) ^past = "A related B"
     				constant (text) ^present_perfect = "A has  related B; A have  related B"
     				constant (text) ^past_perfect = "A had  related B"
    -				constant (int32) ^at = 15106
    +				constant (int32) ^at = 15097
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb9"
     						local fn
    @@ -10668,7 +10668,7 @@ package main _plain
     			package modal_verb12 _modal_verb
     				constant (text) ^name = "relates (modal)"
     				constant (text) ^infinitive = "relate"
    -				constant (int32) ^at = 15116
    +				constant (int32) ^at = 15107
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb13"
     						local fn
    @@ -10806,7 +10806,7 @@ package main _plain
     				constant (text) ^past = "A substituted B"
     				constant (text) ^present_perfect = "A has  substituted B; A have  substituted B"
     				constant (text) ^past_perfect = "A had  substituted B"
    -				constant (int32) ^at = 15126
    +				constant (int32) ^at = 15117
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb10"
     						local fn
    @@ -11005,7 +11005,7 @@ package main _plain
     			package modal_verb13 _modal_verb
     				constant (text) ^name = "does (modal)"
     				constant (text) ^infinitive = "do"
    -				constant (int32) ^at = 15138
    +				constant (int32) ^at = 15129
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb14"
     						local fn
    @@ -11138,7 +11138,7 @@ package main _plain
     			package modal_verb14 _modal_verb
     				constant (text) ^name = "does (modal)"
     				constant (text) ^infinitive = "do"
    -				constant (int32) ^at = 15148
    +				constant (int32) ^at = 15139
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb15"
     						local fn
    @@ -11271,7 +11271,7 @@ package main _plain
     			package modal_verb15 _modal_verb
     				constant (text) ^name = "does (modal)"
     				constant (text) ^infinitive = "do"
    -				constant (int32) ^at = 15160
    +				constant (int32) ^at = 15151
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb16"
     						local fn
    @@ -11404,7 +11404,7 @@ package main _plain
     			package modal_verb16 _modal_verb
     				constant (text) ^name = "does (modal)"
     				constant (text) ^infinitive = "do"
    -				constant (int32) ^at = 15172
    +				constant (int32) ^at = 15163
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb17"
     						local fn
    @@ -11542,7 +11542,7 @@ package main _plain
     				constant (text) ^past = "A translated B"
     				constant (text) ^present_perfect = "A has  translated B; A have  translated B"
     				constant (text) ^past_perfect = "A had  translated B"
    -				constant (int32) ^at = 15185
    +				constant (int32) ^at = 15176
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb11"
     						local fn
    @@ -11775,7 +11775,7 @@ package main _plain
     			package modal_verb17 _modal_verb
     				constant (text) ^name = "translates (modal)"
     				constant (text) ^infinitive = "translate"
    -				constant (int32) ^at = 15198
    +				constant (int32) ^at = 15189
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb18"
     						local fn
    @@ -11908,7 +11908,7 @@ package main _plain
     			package modal_verb18 _modal_verb
     				constant (text) ^name = "translates (modal)"
     				constant (text) ^infinitive = "translate"
    -				constant (int32) ^at = 15211
    +				constant (int32) ^at = 15202
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb19"
     						local fn
    @@ -12041,7 +12041,7 @@ package main _plain
     			package modal_verb19 _modal_verb
     				constant (text) ^name = "translates (modal)"
     				constant (text) ^infinitive = "translate"
    -				constant (int32) ^at = 15225
    +				constant (int32) ^at = 15216
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb20"
     						local fn
    @@ -12180,7 +12180,7 @@ package main _plain
     				constant (text) ^past = "A provided B"
     				constant (text) ^present_perfect = "A has  provided B; A have  provided B"
     				constant (text) ^past_perfect = "A had  provided B"
    -				constant (int32) ^at = 15237
    +				constant (int32) ^at = 15228
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb12"
     						local fn
    @@ -12350,7 +12350,7 @@ package main _plain
     				constant (text) ^past = "A used B"
     				constant (text) ^present_perfect = "A has  used B; A have  used B"
     				constant (text) ^past_perfect = "A had  used B"
    -				constant (int32) ^at = 15247
    +				constant (int32) ^at = 15238
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb13"
     						local fn
    @@ -12520,7 +12520,7 @@ package main _plain
     				constant (text) ^past = "A included B"
     				constant (text) ^present_perfect = "A has  included B; A have  included B"
     				constant (text) ^past_perfect = "A had  included B"
    -				constant (int32) ^at = 15260
    +				constant (int32) ^at = 15251
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb14"
     						local fn
    @@ -12722,7 +12722,7 @@ package main _plain
     				constant (text) ^past = "A omitted B"
     				constant (text) ^present_perfect = "A has  omitted B; A have  omitted B"
     				constant (text) ^past_perfect = "A had  omitted B"
    -				constant (int32) ^at = 15275
    +				constant (int32) ^at = 15266
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb15"
     						local fn
    @@ -12924,7 +12924,7 @@ package main _plain
     				constant (text) ^past = "A tested B"
     				constant (text) ^present_perfect = "A has  tested B; A have  tested B"
     				constant (text) ^past_perfect = "A had  tested B"
    -				constant (int32) ^at = 15290
    +				constant (int32) ^at = 15281
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb16"
     						local fn
    @@ -13121,7 +13121,7 @@ package main _plain
     			package modal_verb20 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 15306
    +				constant (int32) ^at = 15297
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb21"
     						local fn
    @@ -13362,7 +13362,7 @@ package main _plain
     			package modal_verb21 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 15317
    +				constant (int32) ^at = 15308
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb22"
     						local fn
    @@ -13603,7 +13603,7 @@ package main _plain
     			package modal_verb22 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 15328
    +				constant (int32) ^at = 15319
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb23"
     						local fn
    @@ -13844,7 +13844,7 @@ package main _plain
     			package modal_verb23 _modal_verb
     				constant (text) ^name = "is (modal)"
     				constant (text) ^infinitive = "be"
    -				constant (int32) ^at = 15339
    +				constant (int32) ^at = 15330
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb24"
     						local fn
    @@ -14084,149 +14084,149 @@ package main _plain
     																val "will not be"
     			package preposition1 _preposition
     				constant (text) ^text = "implied by"
    -				constant (int32) ^at = 15051
    +				constant (int32) ^at = 15042
     			package preposition2 _preposition
     				constant (text) ^text = "implying"
    -				constant (int32) ^at = 15051
    +				constant (int32) ^at = 15042
     			package preposition3 _preposition
     				constant (text) ^text = "being able to be"
    -				constant (int32) ^at = 15071
    +				constant (int32) ^at = 15062
     			package preposition4 _preposition
     				constant (text) ^text = "had by"
    -				constant (int32) ^at = 15085
    +				constant (int32) ^at = 15076
     			package preposition5 _preposition
     				constant (text) ^text = "having"
    -				constant (int32) ^at = 15085
    +				constant (int32) ^at = 15076
     			package preposition6 _preposition
     				constant (text) ^text = "specified by"
    -				constant (int32) ^at = 15095
    +				constant (int32) ^at = 15086
     			package preposition7 _preposition
     				constant (text) ^text = "specifying"
    -				constant (int32) ^at = 15095
    +				constant (int32) ^at = 15086
     			package preposition8 _preposition
     				constant (text) ^text = "related by"
    -				constant (int32) ^at = 15106
    +				constant (int32) ^at = 15097
     			package preposition9 _preposition
     				constant (text) ^text = "relating"
    -				constant (int32) ^at = 15106
    +				constant (int32) ^at = 15097
     			package preposition10 _preposition
     				constant (text) ^text = "substituted by"
    -				constant (int32) ^at = 15126
    +				constant (int32) ^at = 15117
     			package preposition11 _preposition
     				constant (text) ^text = "substituting"
    -				constant (int32) ^at = 15126
    +				constant (int32) ^at = 15117
     			package preposition12 _preposition
     				constant (text) ^text = "for"
    -				constant (int32) ^at = 15126
    +				constant (int32) ^at = 15117
     			package preposition13 _preposition
     				constant (text) ^text = "done by"
    -				constant (int32) ^at = 15138
    +				constant (int32) ^at = 15129
     			package preposition14 _preposition
     				constant (text) ^text = "doing"
    -				constant (int32) ^at = 15138
    +				constant (int32) ^at = 15129
     			package preposition15 _preposition
     				constant (text) ^text = "if"
    -				constant (int32) ^at = 15148
    +				constant (int32) ^at = 15139
     			package preposition16 _preposition
     				constant (text) ^text = "when"
    -				constant (int32) ^at = 15160
    +				constant (int32) ^at = 15151
     			package preposition17 _preposition
     				constant (text) ^text = "unless"
    -				constant (int32) ^at = 15172
    +				constant (int32) ^at = 15163
     			package preposition18 _preposition
     				constant (text) ^text = "translated by"
    -				constant (int32) ^at = 15185
    +				constant (int32) ^at = 15176
     			package preposition19 _preposition
     				constant (text) ^text = "translating"
    -				constant (int32) ^at = 15185
    +				constant (int32) ^at = 15176
     			package preposition20 _preposition
     				constant (text) ^text = "into"
    -				constant (int32) ^at = 15185
    +				constant (int32) ^at = 15176
     			package preposition21 _preposition
     				constant (text) ^text = "as"
    -				constant (int32) ^at = 15185
    +				constant (int32) ^at = 15176
     			package preposition22 _preposition
     				constant (text) ^text = "provided by"
    -				constant (int32) ^at = 15237
    +				constant (int32) ^at = 15228
     			package preposition23 _preposition
     				constant (text) ^text = "providing"
    -				constant (int32) ^at = 15237
    +				constant (int32) ^at = 15228
     			package preposition24 _preposition
     				constant (text) ^text = "used by"
    -				constant (int32) ^at = 15247
    +				constant (int32) ^at = 15238
     			package preposition25 _preposition
     				constant (text) ^text = "using"
    -				constant (int32) ^at = 15247
    +				constant (int32) ^at = 15238
     			package preposition26 _preposition
     				constant (text) ^text = "included by"
    -				constant (int32) ^at = 15260
    +				constant (int32) ^at = 15251
     			package preposition27 _preposition
     				constant (text) ^text = "including"
    -				constant (int32) ^at = 15260
    +				constant (int32) ^at = 15251
     			package preposition28 _preposition
     				constant (text) ^text = "in"
    -				constant (int32) ^at = 15260
    +				constant (int32) ^at = 15251
     			package preposition29 _preposition
     				constant (text) ^text = "omitted by"
    -				constant (int32) ^at = 15275
    +				constant (int32) ^at = 15266
     			package preposition30 _preposition
     				constant (text) ^text = "omitting"
    -				constant (int32) ^at = 15275
    +				constant (int32) ^at = 15266
     			package preposition31 _preposition
     				constant (text) ^text = "from"
    -				constant (int32) ^at = 15275
    +				constant (int32) ^at = 15266
     			package preposition32 _preposition
     				constant (text) ^text = "tested by"
    -				constant (int32) ^at = 15290
    +				constant (int32) ^at = 15281
     			package preposition33 _preposition
     				constant (text) ^text = "testing"
    -				constant (int32) ^at = 15290
    +				constant (int32) ^at = 15281
     			package preposition34 _preposition
     				constant (text) ^text = "with"
    -				constant (int32) ^at = 15290
    +				constant (int32) ^at = 15281
     			package preposition35 _preposition
     				constant (text) ^text = "greater than"
    -				constant (int32) ^at = 15306
    +				constant (int32) ^at = 15297
     			package preposition36 _preposition
     				constant (text) ^text = "less than"
    -				constant (int32) ^at = 15317
    +				constant (int32) ^at = 15308
     			package preposition37 _preposition
     				constant (text) ^text = "at least"
    -				constant (int32) ^at = 15328
    +				constant (int32) ^at = 15319
     			package preposition38 _preposition
     				constant (text) ^text = "at most"
    -				constant (int32) ^at = 15339
    +				constant (int32) ^at = 15330
     		package relations _submodule
     			package relation1 _relation
     				constant (int32) relation_id = 0 __translation="relation_id_U32"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "value"
    -				constant (int32) ^at = 15633
    +				constant (int32) ^at = 15624
     			package relation2 _relation
     				constant (int32) relation_id = 1 __translation="relation_id_U33"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "text"
    -				constant (int32) ^at = 15644
    +				constant (int32) ^at = 15635
     			package relation3 _relation
     				constant (int32) relation_id = 2 __translation="relation_id_U34"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "text"
    -				constant (int32) ^at = 15652
    +				constant (int32) ^at = 15643
     			package relation4 _relation
     				constant (int32) relation_id = 3 __translation="relation_id_U35"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "--"
    -				constant (int32) ^at = 15662
    +				constant (int32) ^at = 15653
     			package relation5 _relation
     				constant (int32) relation_id = 4 __translation="relation_id_U36"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "--"
    -				constant (int32) ^at = 15671
    +				constant (int32) ^at = 15662
     			package relation6 _relation
     				constant (int32) relation_id = 5 __translation="relation_id_U37"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "--"
    -				constant (int32) ^at = 15681
    +				constant (int32) ^at = 15672
     	package english_language_by_graham_nelson _module
     		constant (int32) ^category = 2
     		constant (text) ^author = "Graham Nelson"
    @@ -14241,8 +14241,8 @@ package main _plain
     				constant (text) ^name = "present tense"
     				constant (text) ^printed_name = "present tense"
     				constant (text) ^abbreviation = "PT"
    -				constant (int32) ^at = 25372
    -				constant (int32) ^kind_set_at = 25372
    +				constant (int32) ^at = 25363
    +				constant (int32) ^kind_set_at = 25363
     				constant ^value = I_present_tense
     				constant (text) ^index_kind = "grammatical tense"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical tense"
    @@ -14257,8 +14257,8 @@ package main _plain
     				constant (text) ^name = "past tense"
     				constant (text) ^printed_name = "past tense"
     				constant (text) ^abbreviation = "PT"
    -				constant (int32) ^at = 25372
    -				constant (int32) ^kind_set_at = 25372
    +				constant (int32) ^at = 25363
    +				constant (int32) ^kind_set_at = 25363
     				constant ^value = I_past_tense
     				constant (text) ^index_kind = "grammatical tense"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical tense"
    @@ -14273,8 +14273,8 @@ package main _plain
     				constant (text) ^name = "perfect tense"
     				constant (text) ^printed_name = "perfect tense"
     				constant (text) ^abbreviation = "PT"
    -				constant (int32) ^at = 25372
    -				constant (int32) ^kind_set_at = 25372
    +				constant (int32) ^at = 25363
    +				constant (int32) ^kind_set_at = 25363
     				constant ^value = I_perfect_tense
     				constant (text) ^index_kind = "grammatical tense"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical tense"
    @@ -14289,8 +14289,8 @@ package main _plain
     				constant (text) ^name = "past perfect tense"
     				constant (text) ^printed_name = "past perfect tense"
     				constant (text) ^abbreviation = "PP"
    -				constant (int32) ^at = 25372
    -				constant (int32) ^kind_set_at = 25372
    +				constant (int32) ^at = 25363
    +				constant (int32) ^kind_set_at = 25363
     				constant ^value = I_past_perfect_tense
     				constant (text) ^index_kind = "grammatical tense"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical tense"
    @@ -14305,8 +14305,8 @@ package main _plain
     				constant (text) ^name = "future tense"
     				constant (text) ^printed_name = "future tense"
     				constant (text) ^abbreviation = "FT"
    -				constant (int32) ^at = 25372
    -				constant (int32) ^kind_set_at = 25372
    +				constant (int32) ^at = 25363
    +				constant (int32) ^kind_set_at = 25363
     				constant ^value = I_future_tense
     				constant (text) ^index_kind = "grammatical tense"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical tense"
    @@ -14321,8 +14321,8 @@ package main _plain
     				constant (text) ^name = "first person singular"
     				constant (text) ^printed_name = "first person singular"
     				constant (text) ^abbreviation = "FP"
    -				constant (int32) ^at = 25402
    -				constant (int32) ^kind_set_at = 25402
    +				constant (int32) ^at = 25393
    +				constant (int32) ^kind_set_at = 25393
     				constant ^value = I_first_person_singular
     				constant (text) ^index_kind = "narrative viewpoint"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > narrative viewpoint"
    @@ -14337,8 +14337,8 @@ package main _plain
     				constant (text) ^name = "second person singular"
     				constant (text) ^printed_name = "second person singular"
     				constant (text) ^abbreviation = "SP"
    -				constant (int32) ^at = 25402
    -				constant (int32) ^kind_set_at = 25402
    +				constant (int32) ^at = 25393
    +				constant (int32) ^kind_set_at = 25393
     				constant ^value = I_second_person_singular
     				constant (text) ^index_kind = "narrative viewpoint"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > narrative viewpoint"
    @@ -14353,8 +14353,8 @@ package main _plain
     				constant (text) ^name = "third person singular"
     				constant (text) ^printed_name = "third person singular"
     				constant (text) ^abbreviation = "TP"
    -				constant (int32) ^at = 25402
    -				constant (int32) ^kind_set_at = 25402
    +				constant (int32) ^at = 25393
    +				constant (int32) ^kind_set_at = 25393
     				constant ^value = I_third_person_singular
     				constant (text) ^index_kind = "narrative viewpoint"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > narrative viewpoint"
    @@ -14369,8 +14369,8 @@ package main _plain
     				constant (text) ^name = "first person plural"
     				constant (text) ^printed_name = "first person plural"
     				constant (text) ^abbreviation = "FP"
    -				constant (int32) ^at = 25402
    -				constant (int32) ^kind_set_at = 25402
    +				constant (int32) ^at = 25393
    +				constant (int32) ^kind_set_at = 25393
     				constant ^value = I_first_person_plural
     				constant (text) ^index_kind = "narrative viewpoint"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > narrative viewpoint"
    @@ -14385,8 +14385,8 @@ package main _plain
     				constant (text) ^name = "second person plural"
     				constant (text) ^printed_name = "second person plural"
     				constant (text) ^abbreviation = "SP"
    -				constant (int32) ^at = 25402
    -				constant (int32) ^kind_set_at = 25402
    +				constant (int32) ^at = 25393
    +				constant (int32) ^kind_set_at = 25393
     				constant ^value = I_second_person_plural
     				constant (text) ^index_kind = "narrative viewpoint"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > narrative viewpoint"
    @@ -14401,8 +14401,8 @@ package main _plain
     				constant (text) ^name = "third person plural"
     				constant (text) ^printed_name = "third person plural"
     				constant (text) ^abbreviation = "TP"
    -				constant (int32) ^at = 25402
    -				constant (int32) ^kind_set_at = 25402
    +				constant (int32) ^at = 25393
    +				constant (int32) ^kind_set_at = 25393
     				constant ^value = I_third_person_plural
     				constant (text) ^index_kind = "narrative viewpoint"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > narrative viewpoint"
    @@ -14417,8 +14417,8 @@ package main _plain
     				constant (text) ^name = "nominative"
     				constant (text) ^printed_name = "nominative"
     				constant (text) ^abbreviation = "Nm"
    -				constant (int32) ^at = 25469
    -				constant (int32) ^kind_set_at = 25469
    +				constant (int32) ^at = 25460
    +				constant (int32) ^kind_set_at = 25460
     				constant ^value = I_nominative
     				constant (text) ^index_kind = "grammatical case"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical case"
    @@ -14433,8 +14433,8 @@ package main _plain
     				constant (text) ^name = "accusative"
     				constant (text) ^printed_name = "accusative"
     				constant (text) ^abbreviation = "Ac"
    -				constant (int32) ^at = 25469
    -				constant (int32) ^kind_set_at = 25469
    +				constant (int32) ^at = 25460
    +				constant (int32) ^kind_set_at = 25460
     				constant ^value = I_accusative
     				constant (text) ^index_kind = "grammatical case"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical case"
    @@ -14449,8 +14449,8 @@ package main _plain
     				constant (text) ^name = "neuter gender"
     				constant (text) ^printed_name = "neuter gender"
     				constant (text) ^abbreviation = "NG"
    -				constant (int32) ^at = 25487
    -				constant (int32) ^kind_set_at = 25487
    +				constant (int32) ^at = 25478
    +				constant (int32) ^kind_set_at = 25478
     				constant ^value = I_neuter_gender
     				constant (text) ^index_kind = "grammatical gender"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical gender"
    @@ -14465,8 +14465,8 @@ package main _plain
     				constant (text) ^name = "masculine gender"
     				constant (text) ^printed_name = "masculine gender"
     				constant (text) ^abbreviation = "MG"
    -				constant (int32) ^at = 25487
    -				constant (int32) ^kind_set_at = 25487
    +				constant (int32) ^at = 25478
    +				constant (int32) ^kind_set_at = 25478
     				constant ^value = I_masculine_gender
     				constant (text) ^index_kind = "grammatical gender"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical gender"
    @@ -14481,8 +14481,8 @@ package main _plain
     				constant (text) ^name = "feminine gender"
     				constant (text) ^printed_name = "feminine gender"
     				constant (text) ^abbreviation = "FG"
    -				constant (int32) ^at = 25487
    -				constant (int32) ^kind_set_at = 25487
    +				constant (int32) ^at = 25478
    +				constant (int32) ^kind_set_at = 25478
     				constant ^value = I_feminine_gender
     				constant (text) ^index_kind = "grammatical gender"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > grammatical gender"
    @@ -14496,7 +14496,7 @@ package main _plain
     		package kinds _submodule
     			package kind1 _kind
     				constant (text) ^name = "grammatical tense"
    -				constant (int32) ^at = 25363
    +				constant (int32) ^at = 25354
     				typename K_grammatical_tense = enum __translation="K_grammatical_tense"
     				constant (int32) ^source_order = 15
     				constant (int32) kind_ref = 561 __translation="kind_ref_U39"
    @@ -14654,7 +14654,7 @@ package main _plain
     				constant (text) ^inferences = ""
     			package kind2 _kind
     				constant (text) ^name = "narrative viewpoint"
    -				constant (int32) ^at = 25393
    +				constant (int32) ^at = 25384
     				typename K_narrative_viewpoint = enum __translation="K_narrative_viewpoint"
     				constant (int32) ^source_order = 16
     				constant (int32) kind_ref = 561 __translation="kind_ref_U40"
    @@ -14817,7 +14817,7 @@ package main _plain
     				constant (text) ^inferences = ""
     			package kind3 _kind
     				constant (text) ^name = "grammatical case"
    -				constant (int32) ^at = 25460
    +				constant (int32) ^at = 25451
     				typename K_grammatical_case = enum __translation="K_grammatical_case"
     				constant (int32) ^source_order = 17
     				constant (int32) kind_ref = 561 __translation="kind_ref_U41"
    @@ -14958,7 +14958,7 @@ package main _plain
     				constant (text) ^inferences = ""
     			package kind4 _kind
     				constant (text) ^name = "grammatical gender"
    -				constant (int32) ^at = 25478
    +				constant (int32) ^at = 25469
     				typename K_grammatical_gender = enum __translation="K_grammatical_gender"
     				constant (int32) ^source_order = 18
     				constant (int32) kind_ref = 561 __translation="kind_ref_U42"
    @@ -15113,26 +15113,26 @@ package main _plain
     		package variables _submodule
     			package variable1 _variable
     				constant (text) ^name = "story tense"
    -				constant (int32) ^at = 25502
    +				constant (int32) ^at = 25493
     				constant ^heading = /main/completion/basics/heading69/id
     				constant (int32) ^indexable = 1
     				constant (text) ^contents = "grammatical tense"
     				constant ^counterpart = /main/BasicInformKit/variables/story_tense_var/story_tense
     			package variable2 _variable
     				constant (text) ^name = "story viewpoint"
    -				constant (int32) ^at = 25522
    +				constant (int32) ^at = 25513
     				constant ^heading = /main/completion/basics/heading69/id
     				constant (int32) ^indexable = 1
     				constant (text) ^contents = "narrative viewpoint"
     				constant ^counterpart = /main/BasicInformKit/variables/story_viewpoint_var/story_viewpoint
    -		constant (int32) ^at = 25160
    -		constant (int32) ^included_at = 14804
    +		constant (int32) ^at = 25151
    +		constant (int32) ^included_at = 14795
     		constant (int32) ^auto_included = 1
     		package conjugations _submodule
     			package modal_verb1 _modal_verb
     				constant (text) ^name = "can (modal)"
     				constant (text) ^infinitive = "be able to"
    -				constant (int32) ^at = 25187
    +				constant (int32) ^at = 25178
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb25"
     						local fn
    @@ -16027,7 +16027,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A could B"
     				constant (text) ^present_perfect = "A could  have B"
    -				constant (int32) ^at = 25195
    +				constant (int32) ^at = 25186
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb17"
     						local fn
    @@ -16954,7 +16954,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A may B"
     				constant (text) ^present_perfect = "A may  have B"
    -				constant (int32) ^at = 25201
    +				constant (int32) ^at = 25192
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb18"
     						local fn
    @@ -17881,7 +17881,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A might B"
     				constant (text) ^present_perfect = "A might  have B"
    -				constant (int32) ^at = 25207
    +				constant (int32) ^at = 25198
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb19"
     						local fn
    @@ -18808,7 +18808,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A must B"
     				constant (text) ^present_perfect = "A must  have B"
    -				constant (int32) ^at = 25213
    +				constant (int32) ^at = 25204
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb20"
     						local fn
    @@ -19735,7 +19735,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A should B"
     				constant (text) ^present_perfect = "A should  have B"
    -				constant (int32) ^at = 25219
    +				constant (int32) ^at = 25210
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb21"
     						local fn
    @@ -20662,7 +20662,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A would B"
     				constant (text) ^present_perfect = "A would  have B"
    -				constant (int32) ^at = 25225
    +				constant (int32) ^at = 25216
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb22"
     						local fn
    @@ -21591,7 +21591,7 @@ package main _plain
     				constant (text) ^past = "A was B; A were B"
     				constant (text) ^present_perfect = "A 's  been B; A 've  been B"
     				constant (text) ^past_perfect = "A 'd  been B"
    -				constant (int32) ^at = 25232
    +				constant (int32) ^at = 25223
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb23"
     						local fn
    @@ -21838,7 +21838,7 @@ package main _plain
     				constant (text) ^past = "A had B"
     				constant (text) ^present_perfect = "A 's  had B; A 've  had B"
     				constant (text) ^past_perfect = "A 'd  had B"
    -				constant (int32) ^at = 25238
    +				constant (int32) ^at = 25229
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb24"
     						local fn
    @@ -21977,7 +21977,7 @@ package main _plain
     				constant (text) ^past = "A wasn't B; A weren't B"
     				constant (text) ^present_perfect = "A hasn't  been B; A haven't  been B"
     				constant (text) ^past_perfect = "A hadn't  been B"
    -				constant (int32) ^at = 25244
    +				constant (int32) ^at = 25235
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb25"
     						local fn
    @@ -22129,7 +22129,7 @@ package main _plain
     				constant (text) ^past = "A couldn't B"
     				constant (text) ^present_perfect = "A hasn't  been  able  to B; A haven't  been  able  to B"
     				constant (text) ^past_perfect = "A hadn't  been  able  to B"
    -				constant (int32) ^at = 25250
    +				constant (int32) ^at = 25241
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb26"
     						local fn
    @@ -22604,7 +22604,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A hasn't B; A haven't B"
     				constant (text) ^present_perfect = "A hadn't B"
    -				constant (int32) ^at = 25250
    +				constant (int32) ^at = 25241
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb27"
     						local fn
    @@ -23079,7 +23079,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A doesn't B; A don't B"
     				constant (text) ^present_perfect = "A didn't B"
    -				constant (int32) ^at = 25256
    +				constant (int32) ^at = 25247
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb28"
     						local fn
    @@ -23550,7 +23550,7 @@ package main _plain
     			package modal_verb2 _modal_verb
     				constant (text) ^name = "hasn't (modal)"
     				constant (text) ^infinitive = "haven't"
    -				constant (int32) ^at = 25262
    +				constant (int32) ^at = 25253
     				package conjugation_fn _function
     					package call _code __translation="ConjugateModalVerb26"
     						local fn
    @@ -24025,7 +24025,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A mustn't B"
     				constant (text) ^present_perfect = "A mustn't  have B"
    -				constant (int32) ^at = 25268
    +				constant (int32) ^at = 25259
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb29"
     						local fn
    @@ -24500,7 +24500,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A mightn't B"
     				constant (text) ^present_perfect = "A mightn't  have B"
    -				constant (int32) ^at = 25274
    +				constant (int32) ^at = 25265
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb30"
     						local fn
    @@ -24975,7 +24975,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A mayn't B"
     				constant (text) ^present_perfect = "A mayn't  have B"
    -				constant (int32) ^at = 25280
    +				constant (int32) ^at = 25271
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb31"
     						local fn
    @@ -25450,7 +25450,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A wouldn't B"
     				constant (text) ^present_perfect = "A wouldn't  have B"
    -				constant (int32) ^at = 25286
    +				constant (int32) ^at = 25277
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb32"
     						local fn
    @@ -25925,7 +25925,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A couldn't B"
     				constant (text) ^present_perfect = "A couldn't  have B"
    -				constant (int32) ^at = 25292
    +				constant (int32) ^at = 25283
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb33"
     						local fn
    @@ -26400,7 +26400,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A shouldn't B"
     				constant (text) ^present_perfect = "A shouldn't  have B"
    -				constant (int32) ^at = 25298
    +				constant (int32) ^at = 25289
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb34"
     						local fn
    @@ -26875,7 +26875,7 @@ package main _plain
     				constant (text) ^meaning = " "
     				constant (text) ^present = "A won't B"
     				constant (text) ^present_perfect = "A wouldn't B"
    -				constant (int32) ^at = 25304
    +				constant (int32) ^at = 25295
     				package conjugation_fn _function
     					package call _code __translation="ConjugateVerb35"
     						local fn
    @@ -27345,67 +27345,67 @@ package main _plain
     												code
     			package preposition1 _preposition
     				constant (text) ^text = "being able to"
    -				constant (int32) ^at = 25187
    +				constant (int32) ^at = 25178
     			package preposition2 _preposition
     				constant (text) ^text = "coulding"
    -				constant (int32) ^at = 25195
    +				constant (int32) ^at = 25186
     			package preposition3 _preposition
     				constant (text) ^text = "maying"
    -				constant (int32) ^at = 25201
    +				constant (int32) ^at = 25192
     			package preposition4 _preposition
     				constant (text) ^text = "mighting"
    -				constant (int32) ^at = 25207
    +				constant (int32) ^at = 25198
     			package preposition5 _preposition
     				constant (text) ^text = "musting"
    -				constant (int32) ^at = 25213
    +				constant (int32) ^at = 25204
     			package preposition6 _preposition
     				constant (text) ^text = "shoulding"
    -				constant (int32) ^at = 25219
    +				constant (int32) ^at = 25210
     			package preposition7 _preposition
     				constant (text) ^text = "woulding"
    -				constant (int32) ^at = 25225
    +				constant (int32) ^at = 25216
     			package preposition8 _preposition
     				constant (text) ^text = "being"
    -				constant (int32) ^at = 25232
    +				constant (int32) ^at = 25223
     			package preposition9 _preposition
     				constant (text) ^text = "aren'ting"
    -				constant (int32) ^at = 25244
    +				constant (int32) ^at = 25235
     			package preposition10 _preposition
     				constant (text) ^text = "can'ting"
    -				constant (int32) ^at = 25250
    +				constant (int32) ^at = 25241
     			package preposition11 _preposition
     				constant (text) ^text = "don'ting"
    -				constant (int32) ^at = 25256
    +				constant (int32) ^at = 25247
     			package preposition12 _preposition
     				constant (text) ^text = "haven'ting"
    -				constant (int32) ^at = 25262
    +				constant (int32) ^at = 25253
     			package preposition13 _preposition
     				constant (text) ^text = "mustn'ting"
    -				constant (int32) ^at = 25268
    +				constant (int32) ^at = 25259
     			package preposition14 _preposition
     				constant (text) ^text = "mightn'ting"
    -				constant (int32) ^at = 25274
    +				constant (int32) ^at = 25265
     			package preposition15 _preposition
     				constant (text) ^text = "mayn'ting"
    -				constant (int32) ^at = 25280
    +				constant (int32) ^at = 25271
     			package preposition16 _preposition
     				constant (text) ^text = "wouldn'ting"
    -				constant (int32) ^at = 25286
    +				constant (int32) ^at = 25277
     			package preposition17 _preposition
     				constant (text) ^text = "couldn'ting"
    -				constant (int32) ^at = 25292
    +				constant (int32) ^at = 25283
     			package preposition18 _preposition
     				constant (text) ^text = "shouldn'ting"
    -				constant (int32) ^at = 25298
    +				constant (int32) ^at = 25289
     			package preposition19 _preposition
     				constant (text) ^text = "won'ting"
    -				constant (int32) ^at = 25304
    +				constant (int32) ^at = 25295
     		package relations _submodule
     			package relation1 _relation
     				constant (int32) relation_id = 6 __translation="relation_id_U38"
     				constant (text) ^term0 = "object"
     				constant (text) ^term1 = "--"
    -				constant (int32) ^at = 25432
    +				constant (int32) ^at = 25423
     	package source_text _module
     		constant (int32) ^category = 1
     		package instances _submodule
    @@ -27413,8 +27413,8 @@ package main _plain
     				constant (text) ^name = "decorative"
     				constant (text) ^printed_name = "decorative"
     				constant (text) ^abbreviation = "Dc"
    -				constant (int32) ^at = 14830
    -				constant (int32) ^kind_set_at = 14830
    +				constant (int32) ^at = 14821
    +				constant (int32) ^kind_set_at = 14821
     				constant ^value = I_decorative
     				constant (text) ^index_kind = "text style"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > text style"
    @@ -27429,8 +27429,8 @@ package main _plain
     				constant (text) ^name = "calligraphic"
     				constant (text) ^printed_name = "calligraphic"
     				constant (text) ^abbreviation = "Cl"
    -				constant (int32) ^at = 14830
    -				constant (int32) ^kind_set_at = 14830
    +				constant (int32) ^at = 14821
    +				constant (int32) ^kind_set_at = 14821
     				constant ^value = I_calligraphic
     				constant (text) ^index_kind = "text style"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > text style"
    @@ -27445,8 +27445,8 @@ package main _plain
     				constant (text) ^name = "enlarged"
     				constant (text) ^printed_name = "enlarged"
     				constant (text) ^abbreviation = "En"
    -				constant (int32) ^at = 14830
    -				constant (int32) ^kind_set_at = 14830
    +				constant (int32) ^at = 14821
    +				constant (int32) ^kind_set_at = 14821
     				constant ^value = I_enlarged
     				constant (text) ^index_kind = "text style"
     				constant (text) ^index_kind_chain = "value >  > sayable value > understandable value > enumerated value > text style"
    @@ -27460,7 +27460,7 @@ package main _plain
     		package kinds _submodule
     			package kind1 _kind
     				constant (text) ^name = "text style"
    -				constant (int32) ^at = 14821
    +				constant (int32) ^at = 14812
     				typename K_text_style = enum __translation="K_text_style"
     				constant (int32) ^source_order = 19
     				constant (int32) kind_ref = 561 __translation="kind_ref_U43"
    @@ -27753,7 +27753,7 @@ package main _plain
     			constant (int32) KIT_CONFIGURATION_BITMAP = 0
     			constant (int32) KIT_CONFIGURATION_LOOKMODE = 2
     			constant (text) I7_VERSION_NUMBER = "10.1.0"
    -			constant (text) I7_FULL_VERSION_NUMBER = "10.1.0-alpha.1+6U80"
    +			constant (text) I7_FULL_VERSION_NUMBER = "10.1.0-alpha.1+6U81"
     			constant (text) ^virtual_machine = "C/32d/v1/no-main"
     			constant (text) ^virtual_machine_icon = "vm_glulx.png"
     			constant (text) ^language_elements_used = "core, naming, instance counting, glulx external files"
    @@ -27790,7 +27790,7 @@ package main _plain
     			package heading5 _heading
     				constant (int32) id = 561 __translation="id_U5"
     				constant (text) ^text = "Part One - Preamble"
    -				constant (int32) ^at = 14906
    +				constant (int32) ^at = 14897
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Part One"
     				constant (text) ^part2 = "Preamble"
    @@ -27800,7 +27800,7 @@ package main _plain
     			package heading6 _heading
     				constant (int32) id = 561 __translation="id_U6"
     				constant (text) ^text = "Part Two - Miscellaneous Definitions"
    -				constant (int32) ^at = 15627
    +				constant (int32) ^at = 15618
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Part Two"
     				constant (text) ^part2 = "Miscellaneous Definitions"
    @@ -27810,7 +27810,7 @@ package main _plain
     			package heading7 _heading
     				constant (int32) id = 561 __translation="id_U7"
     				constant (text) ^text = "Part Three - Phrasebook"
    -				constant (int32) ^at = 15988
    +				constant (int32) ^at = 15979
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Part Three"
     				constant (text) ^part2 = "Phrasebook"
    @@ -27820,7 +27820,7 @@ package main _plain
     			package heading8 _heading
     				constant (int32) id = 561 __translation="id_U8"
     				constant (text) ^text = "Chapter 1 - Saying"
    -				constant (int32) ^at = 15993
    +				constant (int32) ^at = 15984
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 1"
     				constant (text) ^part2 = "Saying"
    @@ -27830,7 +27830,7 @@ package main _plain
     			package heading9 _heading
     				constant (int32) id = 561 __translation="id_U9"
     				constant (text) ^text = "Section 1 - Saying Values"
    -				constant (int32) ^at = 15998
    +				constant (int32) ^at = 15989
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Saying Values"
    @@ -27840,7 +27840,7 @@ package main _plain
     			package heading10 _heading
     				constant (int32) id = 561 __translation="id_U10"
     				constant (text) ^text = "Section 2 - Saying Names"
    -				constant (int32) ^at = 16072
    +				constant (int32) ^at = 16063
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Saying Names"
    @@ -27850,7 +27850,7 @@ package main _plain
     			package heading11 _heading
     				constant (int32) id = 561 __translation="id_U11"
     				constant (text) ^text = "Section 3 - Saying Special Characters"
    -				constant (int32) ^at = 16181
    +				constant (int32) ^at = 16172
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Saying Special Characters"
    @@ -27860,7 +27860,7 @@ package main _plain
     			package heading12 _heading
     				constant (int32) id = 561 __translation="id_U12"
     				constant (text) ^text = "Section 4 - Saying Line and Paragraph Breaks"
    -				constant (int32) ^at = 16251
    +				constant (int32) ^at = 16242
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 4"
     				constant (text) ^part2 = "Saying Line and Paragraph Breaks"
    @@ -27870,7 +27870,7 @@ package main _plain
     			package heading13 _heading
     				constant (int32) id = 561 __translation="id_U13"
     				constant (text) ^text = "Section 5 - Saying If and Otherwise"
    -				constant (int32) ^at = 16361
    +				constant (int32) ^at = 16352
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 5"
     				constant (text) ^part2 = "Saying If and Otherwise"
    @@ -27880,7 +27880,7 @@ package main _plain
     			package heading14 _heading
     				constant (int32) id = 561 __translation="id_U14"
     				constant (text) ^text = "Section 6 - Saying one of"
    -				constant (int32) ^at = 16490
    +				constant (int32) ^at = 16481
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 6"
     				constant (text) ^part2 = "Saying one of"
    @@ -27890,7 +27890,7 @@ package main _plain
     			package heading15 _heading
     				constant (int32) id = 561 __translation="id_U15"
     				constant (text) ^text = "Section 7 - Saying Fonts and Visual Effects"
    -				constant (int32) ^at = 16737
    +				constant (int32) ^at = 16728
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 7"
     				constant (text) ^part2 = "Saying Fonts and Visual Effects"
    @@ -27900,7 +27900,7 @@ package main _plain
     			package heading16 _heading
     				constant (int32) id = 561 __translation="id_U16"
     				constant (text) ^text = "Section 8 - Saying Lists of Values"
    -				constant (int32) ^at = 16829
    +				constant (int32) ^at = 16820
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 8"
     				constant (text) ^part2 = "Saying Lists of Values"
    @@ -27910,7 +27910,7 @@ package main _plain
     			package heading17 _heading
     				constant (int32) id = 561 __translation="id_U17"
     				constant (text) ^text = "Chapter 2 - Conditions and Variables"
    -				constant (int32) ^at = 16904
    +				constant (int32) ^at = 16895
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 2"
     				constant (text) ^part2 = "Conditions and Variables"
    @@ -27920,7 +27920,7 @@ package main _plain
     			package heading18 _heading
     				constant (int32) id = 561 __translation="id_U18"
     				constant (text) ^text = "Section 1 - Conditions"
    -				constant (int32) ^at = 16911
    +				constant (int32) ^at = 16902
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Conditions"
    @@ -27930,7 +27930,7 @@ package main _plain
     			package heading19 _heading
     				constant (int32) id = 561 __translation="id_U19"
     				constant (text) ^text = "Section 2 - Assigning Temporary Variables"
    -				constant (int32) ^at = 16956
    +				constant (int32) ^at = 16947
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Assigning Temporary Variables"
    @@ -27940,7 +27940,7 @@ package main _plain
     			package heading20 _heading
     				constant (int32) id = 561 __translation="id_U20"
     				constant (text) ^text = "Section 3 - Increase and Decrease"
    -				constant (int32) ^at = 17141
    +				constant (int32) ^at = 17132
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Increase and Decrease"
    @@ -27950,7 +27950,7 @@ package main _plain
     			package heading21 _heading
     				constant (int32) id = 561 __translation="id_U21"
     				constant (text) ^text = "Chapter 2 - Arithmetic"
    -				constant (int32) ^at = 17233
    +				constant (int32) ^at = 17224
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 2"
     				constant (text) ^part2 = "Arithmetic"
    @@ -27960,7 +27960,7 @@ package main _plain
     			package heading22 _heading
     				constant (int32) id = 561 __translation="id_U22"
     				constant (text) ^text = "Section 1 - Arithmetic Operations"
    -				constant (int32) ^at = 17238
    +				constant (int32) ^at = 17229
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Arithmetic Operations"
    @@ -27970,7 +27970,7 @@ package main _plain
     			package heading23 _heading
     				constant (int32) id = 561 __translation="id_U23"
     				constant (text) ^text = "Section 2 - Saying Real Numbers (not for Z-machine)"
    -				constant (int32) ^at = 17712
    +				constant (int32) ^at = 17703
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Saying Real Numbers (not for Z-machine)"
    @@ -27980,7 +27980,7 @@ package main _plain
     			package heading24 _heading
     				constant (int32) id = 561 __translation="id_U24"
     				constant (text) ^text = "Section 3 - Real Arithmetic (not for Z-machine)"
    -				constant (int32) ^at = 17851
    +				constant (int32) ^at = 17842
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Real Arithmetic (not for Z-machine)"
    @@ -27990,7 +27990,7 @@ package main _plain
     			package heading25 _heading
     				constant (int32) id = 561 __translation="id_U25"
     				constant (text) ^text = "Section 4 - Exponential Functions (not for Z-machine)"
    -				constant (int32) ^at = 18107
    +				constant (int32) ^at = 18098
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 4"
     				constant (text) ^part2 = "Exponential Functions (not for Z-machine)"
    @@ -28000,7 +28000,7 @@ package main _plain
     			package heading26 _heading
     				constant (int32) id = 561 __translation="id_U26"
     				constant (text) ^text = "Section 5 - Trigonometric Functions (not for Z-machine)"
    -				constant (int32) ^at = 18255
    +				constant (int32) ^at = 18246
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 5"
     				constant (text) ^part2 = "Trigonometric Functions (not for Z-machine)"
    @@ -28010,7 +28010,7 @@ package main _plain
     			package heading27 _heading
     				constant (int32) id = 561 __translation="id_U27"
     				constant (text) ^text = "Section 6 - Trigonometric Functions (not for Z-machine)"
    -				constant (int32) ^at = 18501
    +				constant (int32) ^at = 18492
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 6"
     				constant (text) ^part2 = "Trigonometric Functions (not for Z-machine)"
    @@ -28020,7 +28020,7 @@ package main _plain
     			package heading28 _heading
     				constant (int32) id = 561 __translation="id_U28"
     				constant (text) ^text = "Chapter 3 - Control"
    -				constant (int32) ^at = 18808
    +				constant (int32) ^at = 18799
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 3"
     				constant (text) ^part2 = "Control"
    @@ -28030,7 +28030,7 @@ package main _plain
     			package heading29 _heading
     				constant (int32) id = 561 __translation="id_U29"
     				constant (text) ^text = "Section 1 - Deciding Outcomes"
    -				constant (int32) ^at = 18813
    +				constant (int32) ^at = 18804
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Deciding Outcomes"
    @@ -28040,7 +28040,7 @@ package main _plain
     			package heading30 _heading
     				constant (int32) id = 561 __translation="id_U30"
     				constant (text) ^text = "Section 2 - If and Unless"
    -				constant (int32) ^at = 18890
    +				constant (int32) ^at = 18881
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "If and Unless"
    @@ -28050,7 +28050,7 @@ package main _plain
     			package heading31 _heading
     				constant (int32) id = 561 __translation="id_U31"
     				constant (text) ^text = "Section 3 - While and Repeat"
    -				constant (int32) ^at = 18972
    +				constant (int32) ^at = 18963
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "While and Repeat"
    @@ -28060,7 +28060,7 @@ package main _plain
     			package heading32 _heading
     				constant (int32) id = 561 __translation="id_U32"
     				constant (text) ^text = "Section 4 - Loop Flow"
    -				constant (int32) ^at = 19257
    +				constant (int32) ^at = 19248
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 4"
     				constant (text) ^part2 = "Loop Flow"
    @@ -28070,7 +28070,7 @@ package main _plain
     			package heading33 _heading
     				constant (int32) id = 561 __translation="id_U33"
     				constant (text) ^text = "Chapter 4 - Values"
    -				constant (int32) ^at = 19292
    +				constant (int32) ^at = 19283
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 4"
     				constant (text) ^part2 = "Values"
    @@ -28080,7 +28080,7 @@ package main _plain
     			package heading34 _heading
     				constant (int32) id = 561 __translation="id_U34"
     				constant (text) ^text = "Section 1 - Enumerations"
    -				constant (int32) ^at = 19297
    +				constant (int32) ^at = 19288
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Enumerations"
    @@ -28090,7 +28090,7 @@ package main _plain
     			package heading35 _heading
     				constant (int32) id = 561 __translation="id_U35"
     				constant (text) ^text = "Section 2 - Randomness"
    -				constant (int32) ^at = 19450
    +				constant (int32) ^at = 19441
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Randomness"
    @@ -28100,7 +28100,7 @@ package main _plain
     			package heading36 _heading
     				constant (int32) id = 561 __translation="id_U36"
     				constant (text) ^text = "Section 3 - Default Values"
    -				constant (int32) ^at = 19686
    +				constant (int32) ^at = 19677
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Default Values"
    @@ -28110,7 +28110,7 @@ package main _plain
     			package heading37 _heading
     				constant (int32) id = 561 __translation="id_U37"
     				constant (text) ^text = "Chapter 5 - Text"
    -				constant (int32) ^at = 19723
    +				constant (int32) ^at = 19714
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 5"
     				constant (text) ^part2 = "Text"
    @@ -28120,7 +28120,7 @@ package main _plain
     			package heading38 _heading
     				constant (int32) id = 561 __translation="id_U38"
     				constant (text) ^text = "Section 1 - Breaking down text"
    -				constant (int32) ^at = 19728
    +				constant (int32) ^at = 19719
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Breaking down text"
    @@ -28130,7 +28130,7 @@ package main _plain
     			package heading39 _heading
     				constant (int32) id = 561 __translation="id_U39"
     				constant (text) ^text = "Section 2 - Matching and Replacing"
    -				constant (int32) ^at = 20077
    +				constant (int32) ^at = 20068
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Matching and Replacing"
    @@ -28140,7 +28140,7 @@ package main _plain
     			package heading40 _heading
     				constant (int32) id = 561 __translation="id_U40"
     				constant (text) ^text = "Section 3 - Regular Expressions"
    -				constant (int32) ^at = 20459
    +				constant (int32) ^at = 20450
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Regular Expressions"
    @@ -28150,7 +28150,7 @@ package main _plain
     			package heading41 _heading
     				constant (int32) id = 561 __translation="id_U41"
     				constant (text) ^text = "Section 4 - Casing of Text"
    -				constant (int32) ^at = 20634
    +				constant (int32) ^at = 20625
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 4"
     				constant (text) ^part2 = "Casing of Text"
    @@ -28160,7 +28160,7 @@ package main _plain
     			package heading42 _heading
     				constant (int32) id = 561 __translation="id_U42"
     				constant (text) ^text = "Section 5 - Adaptive Text"
    -				constant (int32) ^at = 20772
    +				constant (int32) ^at = 20763
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 5"
     				constant (text) ^part2 = "Adaptive Text"
    @@ -28170,7 +28170,7 @@ package main _plain
     			package heading43 _heading
     				constant (int32) id = 561 __translation="id_U43"
     				constant (text) ^text = "Chapter 6 - Data Structures"
    -				constant (int32) ^at = 21051
    +				constant (int32) ^at = 21042
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 6"
     				constant (text) ^part2 = "Data Structures"
    @@ -28180,7 +28180,7 @@ package main _plain
     			package heading44 _heading
     				constant (int32) id = 561 __translation="id_U44"
     				constant (text) ^text = "Section 1 - Tables"
    -				constant (int32) ^at = 21057
    +				constant (int32) ^at = 21048
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Tables"
    @@ -28190,7 +28190,7 @@ package main _plain
     			package heading45 _heading
     				constant (int32) id = 561 __translation="id_U45"
     				constant (text) ^text = "Section 2 - Sorting Tables"
    -				constant (int32) ^at = 21445
    +				constant (int32) ^at = 21436
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Sorting Tables"
    @@ -28200,7 +28200,7 @@ package main _plain
     			package heading46 _heading
     				constant (int32) id = 561 __translation="id_U46"
     				constant (text) ^text = "Section 3 - Lists"
    -				constant (int32) ^at = 21523
    +				constant (int32) ^at = 21514
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Lists"
    @@ -28210,7 +28210,7 @@ package main _plain
     			package heading47 _heading
     				constant (int32) id = 561 __translation="id_U47"
     				constant (text) ^text = "Section 4 - Length of lists"
    -				constant (int32) ^at = 21891
    +				constant (int32) ^at = 21882
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 4"
     				constant (text) ^part2 = "Length of lists"
    @@ -28220,7 +28220,7 @@ package main _plain
     			package heading48 _heading
     				constant (int32) id = 561 __translation="id_U48"
     				constant (text) ^text = "Section 5 - List operations"
    -				constant (int32) ^at = 22066
    +				constant (int32) ^at = 22057
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 5"
     				constant (text) ^part2 = "List operations"
    @@ -28230,7 +28230,7 @@ package main _plain
     			package heading49 _heading
     				constant (int32) id = 561 __translation="id_U49"
     				constant (text) ^text = "Section 6 - Relations"
    -				constant (int32) ^at = 22247
    +				constant (int32) ^at = 22238
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 6"
     				constant (text) ^part2 = "Relations"
    @@ -28240,7 +28240,7 @@ package main _plain
     			package heading50 _heading
     				constant (int32) id = 561 __translation="id_U50"
     				constant (text) ^text = "Chapter 7 - Functional Programming"
    -				constant (int32) ^at = 22827
    +				constant (int32) ^at = 22818
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 7"
     				constant (text) ^part2 = "Functional Programming"
    @@ -28250,7 +28250,7 @@ package main _plain
     			package heading51 _heading
     				constant (int32) id = 561 __translation="id_U51"
     				constant (text) ^text = "Section 1 - Applying Functions"
    -				constant (int32) ^at = 22833
    +				constant (int32) ^at = 22824
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Applying Functions"
    @@ -28260,7 +28260,7 @@ package main _plain
     			package heading52 _heading
     				constant (int32) id = 561 __translation="id_U52"
     				constant (text) ^text = "Section 2 - Working with Lists"
    -				constant (int32) ^at = 23190
    +				constant (int32) ^at = 23181
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Working with Lists"
    @@ -28270,7 +28270,7 @@ package main _plain
     			package heading53 _heading
     				constant (int32) id = 561 __translation="id_U53"
     				constant (text) ^text = "Chapter 8 - Rulebooks and Activities"
    -				constant (int32) ^at = 23453
    +				constant (int32) ^at = 23444
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 8"
     				constant (text) ^part2 = "Rulebooks and Activities"
    @@ -28280,7 +28280,7 @@ package main _plain
     			package heading54 _heading
     				constant (int32) id = 561 __translation="id_U54"
     				constant (text) ^text = "Section 1 - Carrying out Activities"
    -				constant (int32) ^at = 23460
    +				constant (int32) ^at = 23451
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Carrying out Activities"
    @@ -28290,7 +28290,7 @@ package main _plain
     			package heading55 _heading
     				constant (int32) id = 561 __translation="id_U55"
     				constant (text) ^text = "Section 2 - Advanced Activities"
    -				constant (int32) ^at = 23536
    +				constant (int32) ^at = 23527
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Advanced Activities"
    @@ -28300,7 +28300,7 @@ package main _plain
     			package heading56 _heading
     				constant (int32) id = 561 __translation="id_U56"
     				constant (text) ^text = "Section 3 - Following Rules"
    -				constant (int32) ^at = 23739
    +				constant (int32) ^at = 23730
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Following Rules"
    @@ -28310,7 +28310,7 @@ package main _plain
     			package heading57 _heading
     				constant (int32) id = 561 __translation="id_U57"
     				constant (text) ^text = "Section 4 - Success and Failure"
    -				constant (int32) ^at = 24008
    +				constant (int32) ^at = 23999
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 4"
     				constant (text) ^part2 = "Success and Failure"
    @@ -28320,7 +28320,7 @@ package main _plain
     			package heading58 _heading
     				constant (int32) id = 561 __translation="id_U58"
     				constant (text) ^text = "Chapter 9 - External Files (not for Z-machine)"
    -				constant (int32) ^at = 24137
    +				constant (int32) ^at = 24128
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Chapter 9"
     				constant (text) ^part2 = "External Files (not for Z-machine)"
    @@ -28330,7 +28330,7 @@ package main _plain
     			package heading59 _heading
     				constant (int32) id = 561 __translation="id_U59"
     				constant (text) ^text = "Section 1 - Files of Text"
    -				constant (int32) ^at = 24148
    +				constant (int32) ^at = 24139
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Files of Text"
    @@ -28340,7 +28340,7 @@ package main _plain
     			package heading60 _heading
     				constant (int32) id = 561 __translation="id_U60"
     				constant (text) ^text = "Section 2 - Files of Data"
    -				constant (int32) ^at = 24221
    +				constant (int32) ^at = 24212
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Files of Data"
    @@ -28350,7 +28350,7 @@ package main _plain
     			package heading61 _heading
     				constant (int32) id = 561 __translation="id_U61"
     				constant (text) ^text = "Section 3 - File Handling"
    -				constant (int32) ^at = 24277
    +				constant (int32) ^at = 24268
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "File Handling"
    @@ -28360,7 +28360,7 @@ package main _plain
     			package heading62 _heading
     				constant (int32) id = 561 __translation="id_U62"
     				constant (text) ^text = "Part Four - Adjectival Definitions"
    -				constant (int32) ^at = 24367
    +				constant (int32) ^at = 24358
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Part Four"
     				constant (text) ^part2 = "Adjectival Definitions"
    @@ -28370,7 +28370,7 @@ package main _plain
     			package heading63 _heading
     				constant (int32) id = 561 __translation="id_U63"
     				constant (text) ^text = "Section 1 - Miscellaneous Useful Adjectives"
    -				constant (int32) ^at = 24373
    +				constant (int32) ^at = 24364
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Miscellaneous Useful Adjectives"
    @@ -28380,7 +28380,7 @@ package main _plain
     			package heading64 _heading
     				constant (int32) id = 561 __translation="id_U64"
     				constant (text) ^text = "Section 2 - Adjectives for Relations"
    -				constant (int32) ^at = 24732
    +				constant (int32) ^at = 24723
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Adjectives for Relations"
    @@ -28390,7 +28390,7 @@ package main _plain
     			package heading65 _heading
     				constant (int32) id = 561 __translation="id_U65"
     				constant (text) ^text = "Section 3 - Adjectives for Real Numbers (not for Z-machine)"
    -				constant (int32) ^at = 25012
    +				constant (int32) ^at = 25003
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Adjectives for Real Numbers (not for Z-machine)"
    @@ -28406,7 +28406,7 @@ package main _plain
     			package heading67 _heading
     				constant (int32) id = 561 __translation="id_U67"
     				constant (text) ^text = "Section 1 - Modal verbs and contractions"
    -				constant (int32) ^at = 25179
    +				constant (int32) ^at = 25170
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Modal verbs and contractions"
    @@ -28416,7 +28416,7 @@ package main _plain
     			package heading68 _heading
     				constant (int32) id = 561 __translation="id_U68"
     				constant (text) ^text = "Section 2 - Fallback definitions (not for interactive fiction language element)"
    -				constant (int32) ^at = 25311
    +				constant (int32) ^at = 25302
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Fallback definitions (not for interactive fiction language element)"
    @@ -28426,7 +28426,7 @@ package main _plain
     			package heading69 _heading
     				constant (int32) id = 561 __translation="id_U69"
     				constant (text) ^text = "Section 1 - Grammatical definitions"
    -				constant (int32) ^at = 25335
    +				constant (int32) ^at = 25326
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 1"
     				constant (text) ^part2 = "Grammatical definitions"
    @@ -28436,7 +28436,7 @@ package main _plain
     			package heading70 _heading
     				constant (int32) id = 561 __translation="id_U70"
     				constant (text) ^text = "Section 2 - Saying pronouns (for interactive fiction language element only)"
    -				constant (int32) ^at = 25611
    +				constant (int32) ^at = 25602
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 2"
     				constant (text) ^part2 = "Saying pronouns (for interactive fiction language element only)"
    @@ -28446,7 +28446,7 @@ package main _plain
     			package heading71 _heading
     				constant (int32) id = 561 __translation="id_U71"
     				constant (text) ^text = "Section 3 - Further pronouns (for interactive fiction language element only)"
    -				constant (int32) ^at = 26595
    +				constant (int32) ^at = 26586
     				constant (int32) ^parts = 2
     				constant (text) ^part1 = "Section 3"
     				constant (text) ^part2 = "Further pronouns (for interactive fiction language element only)"
    @@ -28707,7 +28707,7 @@ package main _plain
     					package phrasebook_entry3 _phrasebook_entry
     						constant (text) ^text = "

     say \"[s]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[s]\"

    \n\n\n

    This text substitution prints a letter "s" unless the last number printed was 1. Example:

    \n \n

    "You've been wandering around for [turn count in words] turn[s] now."\n

    \n
    \n \n

    produces "... for one turn now." or "... for two turns now." as appropriate. Note that it reacts only to numbers, not to other arithmetic values like times (or, for instance, weights from the "Metric Units" extension).

    \n\n

    See   5.4. 5.4. Text with numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     showme (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     showme (value)

    \n\n\n

    This phrase is intended for testing purposes only. If used in a story file running inside the Inform application, it prints a line of text showing the given value and its kind; in a Released story file, it does noth ng at all. Example:

    \n \n

    When play begins: showme 11.\n

    \n
    \n \n

    produces

    \n \n

    number: 11\n

    \n
    \n \n

    More usefully:

    \n \n

    Every turn: showme the score.\n

    \n
    \n \n

    Now, every turn, we get a line in the story's transcript like so:

    \n \n

    "score" = number: 0\n

    \n
    \n \n

    Inform uses the quotation marks and equals sign to show that it had to do some work to find the answer. "score" wasn't a constant value - it was a variable, and Inform had to look up the current value.

    \n\n

    See   11.4. 11.4. The showme phrase

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     showme (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     showme (value)

    \n\n\n

    This phrase is intended for testing purposes only. If used in a story file running inside the Inform application, it prints a line of text showing the given value and its kind; in a Released story file, it does noth ng at all. Example:

    \n \n

    When play begins: showme 11.\n

    \n
    \n \n

    produces

    \n \n

    number: 11\n

    \n
    \n \n

    More usefully:

    \n \n

    Every turn: showme the score.\n

    \n
    \n \n

    Now, every turn, we get a line in the story's transcript like so:

    \n \n

    "score" = number: 0\n

    \n
    \n \n

    Inform uses the quotation marks and equals sign to show that it had to do some work to find the answer. "score" wasn't a constant value - it was a variable, and Inform had to look up the current value.

    \n\n

    See   11.4. 11.4. The showme phrase

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading2 _phrasebook_heading constant (text) ^text = "Saying Names" package phrasebook_entry1 _phrasebook_entry @@ -28735,15 +28735,15 @@ package main _plain package phrasebook_heading4 _phrasebook_heading constant (text) ^text = "Saying Line and Paragraph Breaks" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     say \"[line break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[line break]\"

    \n\n\n

    This text substitution produces a line break. Example:

    \n \n

    "There is an endless sense of[line break]falling and[line break]falling."\n

    \n
    \n \n

    Line breaks are not paragraph breaks, so the result is:

    \n \n

    There is an endless sense of\n
    \n falling and\n
    \n falling.\n

    \n
    \n \n

    with no extra vertical spacing between these lines.

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[line break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[line break]\"

    \n\n\n

    This text substitution produces a line break. Example:

    \n \n

    "There is an endless sense of[line break]falling and[line break]falling."\n

    \n
    \n \n

    Line breaks are not paragraph breaks, so the result is:

    \n \n

    There is an endless sense of\n
    \n falling and\n
    \n falling.\n

    \n
    \n \n

    with no extra vertical spacing between these lines.

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     say \"[no line break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[no line break]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: it prevents a line break where Inform might otherwise assume one. Example:

    \n \n

    "The chorus sing [one of]Jerusalem[or]Rule, Britannia![no line break][at random]."\n

    \n
    \n \n

    Here the "[no line break]" stops Inform from thinking that the exclamation mark means a sentence ending - it's part of the name of the song "Rule, Britannia!". So we get

    \n \n

    The chorus sing Rule, Britannia!.\n

    \n
    \n \n

    with no line break between the "!" and ".".

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[no line break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[no line break]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: it prevents a line break where Inform might otherwise assume one. Example:

    \n \n

    "The chorus sing [one of]Jerusalem[or]Rule, Britannia![no line break][at random]."\n

    \n
    \n \n

    Here the "[no line break]" stops Inform from thinking that the exclamation mark means a sentence ending - it's part of the name of the song "Rule, Britannia!". So we get

    \n \n

    The chorus sing Rule, Britannia!.\n

    \n
    \n \n

    with no line break between the "!" and ".".

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

     say \"[conditional paragraph break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[conditional paragraph break]\"

    \n\n\n

    This text substitution either produces a paragraph break, or no text at all. It marks a place where Inform can put a paragraph break if necessary; in effect it simulates what Inform does every time a "before" or similar rule finishes. If there i text already printed, and text then follows on, a paragraph break is made. But if not, nothing is done. This is sometimes useful when producing a large amount of text which changes with the circumstances so that it is hard to predict in advance whether a paragraph break is needed or not.

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     say \"[paragraph break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[paragraph break]\"

    \n\n\n

    This text substitution produces a paragraph break. Example:

    \n \n

    "This is not right.[paragraph break]No, something is terribly wrong."\n

    \n
    \n \n

    Paragraph breaks have a little vertical spacing in them, unlike mere line breaks, so the result is:

    \n \n

    This is not right.\n

    \n
    \n \n \n

    No, something is terribly wrong.\n

    \n
    \n \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[paragraph break]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[paragraph break]\"

    \n\n\n

    This text substitution produces a paragraph break. Example:

    \n \n

    "This is not right.[paragraph break]No, something is terribly wrong."\n

    \n
    \n \n

    Paragraph breaks have a little vertical spacing in them, unlike mere line breaks, so the result is:

    \n \n

    This is not right.\n

    \n
    \n \n \n

    No, something is terribly wrong.\n

    \n
    \n \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     say \"[run paragraph on]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[run paragraph on]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: it prevents a paragraph break occurring after the present text is printed, in case Inform might be tempted to place one there. Example:

    \n \n

    Before taking something, say "Very well. [run paragraph on]".\n

    \n
    \n \n

    This allows the reply to, say, TAKE ENVELOPE to be

    \n \n

    Very well. Taken.\n

    \n
    \n \n

    rather than

    \n \n

    Very well.\n

    \n
    \n \n \n

    Taken.\n

    \n
    \n \n

    which is how texts produced by different rules would normally be shown. (It's a traditional printer's term. See Oldfield's Manual of Typography, 1892, under "When two paragraphs are required to be made into one, or, in technical language, 'to run on'.")

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[run paragraph on]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[run paragraph on]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: it prevents a paragraph break occurring after the present text is printed, in case Inform might be tempted to place one there. Example:

    \n \n

    Before taking something, say "Very well. [run paragraph on]".\n

    \n
    \n \n

    This allows the reply to, say, TAKE ENVELOPE to be

    \n \n

    Very well. Taken.\n

    \n
    \n \n

    rather than

    \n \n

    Very well.\n

    \n
    \n \n \n

    Taken.\n

    \n
    \n \n

    which is how texts produced by different rules would normally be shown. (It's a traditional printer's term. See Oldfield's Manual of Typography, 1892, under "When two paragraphs are required to be made into one, or, in technical language, 'to run on'.")

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry constant (text) ^text = "

     if a paragraph break is pending:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if a paragraph break is pending:

    \n\n\n

    This condition is true if text has recently been said in such a way that Inform expects to add a paragraph break at the next opportunity (for instance when the present rule ends and another one says something, or when a "[conditio al paragraph break]" is made).

    \n\n

    See   5.8. 5.8. Line breaks and paragraph breaks

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading5 _phrasebook_heading @@ -28795,131 +28795,131 @@ package main _plain package phrasebook_heading7 _phrasebook_heading constant (text) ^text = "Saying Fonts and Visual Effects" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     say \"[bold type]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[bold type]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to make the text following it appear in bold face. "[roman type]" should be used to switch back to normal. Example:

    \n \n

    "Jane looked down. [bold type]Danger[roman type], the sign read."\n

    \n
    \n \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[bold type]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[bold type]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to make the text following it appear in bold face. "[roman type]" should be used to switch back to normal. Example:

    \n \n

    "Jane looked down. [bold type]Danger[roman type], the sign read."\n

    \n
    \n \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     say \"[italic type]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[italic type]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to make the text following it appear in italics. "[roman type]" should be used to switch back to normal. Example:

    \n \n

    "This is [italic type]very suspicious[roman type], said Peter."\n

    \n
    \n \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[italic type]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[italic type]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to make the text following it appear in italics. "[roman type]" should be used to switch back to normal. Example:

    \n \n

    "This is [italic type]very suspicious[roman type], said Peter."\n

    \n
    \n \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

     say \"[roman type]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[roman type]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to return to ordinary Roman type after a previous use of "[bold type]" or "[italic type]".

    \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     say \"[fixed letter spacing]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[fixed letter spacing]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to make the text following it appear with fixed letter spacing. In variable letter spacing, a lower case "m" is much wider than an "l", which is natural to the ey since it has been printing practice since the Renaissance. Fixed letter spacing is more like typewriting, and it is best used to reproduce typewritten text or printed notices; it can also be convenient for making simple diagrams. Example:

    \n \n

    "On the door is written: [fixed letter spacing]J45--O-O-O[variable letter spacing]."\n

    \n
    \n \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[fixed letter spacing]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[fixed letter spacing]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to make the text following it appear with fixed letter spacing. In variable letter spacing, a lower case "m" is much wider than an "l", which is natural to the ey since it has been printing practice since the Renaissance. Fixed letter spacing is more like typewriting, and it is best used to reproduce typewritten text or printed notices; it can also be convenient for making simple diagrams. Example:

    \n \n

    "On the door is written: [fixed letter spacing]J45--O-O-O[variable letter spacing]."\n

    \n
    \n \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     say \"[variable letter spacing]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[variable letter spacing]\"

    \n\n\n

    This text substitution produces no text. It's used only for a side-effect: to return to ordinary letter spacing after a previous use of "[fixed letter spacing]".

    \n\n

    See   5.9. 5.9. Text with type styles

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading8 _phrasebook_heading constant (text) ^text = "Saying Lists of Values" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     say \"[list of values in brace notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[list of values in brace notation]\"

    \n\n\n

    This text substitution produces the list in the form of "{", then a comma-separated list, and then "}", which looks less like an English sentence but more mathematical. Example:

    \n \n

    "[list of people in brace notation]"\n

    \n
    \n \n

    might produce "{ yourself, Mr Darcy, Flashman }".

    \n\n

    See   21.3. 21.3. Saying lists of values

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[list of values in brace notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[list of values in brace notation]\"

    \n\n\n

    This text substitution produces the list in the form of "{", then a comma-separated list, and then "}", which looks less like an English sentence but more mathematical. Example:

    \n \n

    "[list of people in brace notation]"\n

    \n
    \n \n

    might produce "{ yourself, Mr Darcy, Flashman }".

    \n\n

    See   21.3. 21.3. Saying lists of values

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     say \"[list of objects with definite articles]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[list of objects with definite articles]\"

    \n\n\n

    This text substitution writes out the list in sentence form, adding the appropriate definite articles. Example:

    \n \n

    let L be {the piano, the music stand};\n
    \n say "[L with definite articles]";\n

    \n
    \n \n

    says "the piano and the music stand".

    \n\n

    See   21.3. 21.3. Saying lists of values

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[list of objects with definite articles]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[list of objects with definite articles]\"

    \n\n\n

    This text substitution writes out the list in sentence form, adding the appropriate definite articles. Example:

    \n \n

    let L be {the piano, the music stand};\n
    \n say "[L with definite articles]";\n

    \n
    \n \n

    says "the piano and the music stand".

    \n\n

    See   21.3. 21.3. Saying lists of values

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     say \"[list of objects with indefinite articles]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[list of objects with indefinite articles]\"

    \n\n\n

    This text substitution writes out the list in sentence form, adding the appropriate indefinite articles. Example:

    \n \n

    let L be {the piano, the music stand};\n
    \n say "[L with definite articles]";\n

    \n
    \n \n

    says "a piano and a music stand".

    \n\n

    See   21.3. 21.3. Saying lists of values

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[list of objects with indefinite articles]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[list of objects with indefinite articles]\"

    \n\n\n

    This text substitution writes out the list in sentence form, adding the appropriate indefinite articles. Example:

    \n \n

    let L be {the piano, the music stand};\n
    \n say "[L with definite articles]";\n

    \n
    \n \n

    says "a piano and a music stand".

    \n\n

    See   21.3. 21.3. Saying lists of values

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading9 _phrasebook_heading constant (text) ^text = "Conditions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     now (a condition)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     now (a condition)

    \n\n\n

    This phrase makes the condition become true. Examples:

    \n \n

    now the score is 100;\n
    \n now the player is Kevin;\n
    \n now the front door is open;\n
    \n now Mr Darcy is wearing the top hat;\n
    \n now all the doors are open;\n
    \n now all of the things in the sack are in the box;\n

    \n
    \n \n

    Inform issues a problem message if the condition asks to do the impossible ("now 3 is an even number") or is vague ("now the duck is not in the Lily Pond") or not in the present tense ("now the front door had been open").

    \n\n

    See   8.11. 8.11. Now...

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     now (a condition)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     now (a condition)

    \n\n\n

    This phrase makes the condition become true. Examples:

    \n \n

    now the score is 100;\n
    \n now the player is Kevin;\n
    \n now the front door is open;\n
    \n now Mr Darcy is wearing the top hat;\n
    \n now all the doors are open;\n
    \n now all of the things in the sack are in the box;\n

    \n
    \n \n

    Inform issues a problem message if the condition asks to do the impossible ("now 3 is an even number") or is vague ("now the duck is not in the Lily Pond") or not in the present tense ("now the front door had been open").

    \n\n

    See   8.11. 8.11. Now...

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     whether or not (a condition) ... truth state

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     whether or not (a condition) ... truth state

    \n\n\n

    This phrase converts a condition into its result as a value, which is always either "true" or "false". Example:

    \n \n

    whether or not 20 is an odd number\n

    \n
    \n \n

    produces the truth state "false". This is mostly useful for storing up results to look at later:

    \n \n

    let victory be whether or not all the treasures are in the cabinet;\n

    \n
    \n \n

    and then subsequently:

    \n \n

    if victory is true, ...\n

    \n
    \n \n\n

    See   11.5. 11.5. Conditions and questions

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     whether or not (a condition) ... truth state

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     whether or not (a condition) ... truth state

    \n\n\n

    This phrase converts a condition into its result as a value, which is always either "true" or "false". Example:

    \n \n

    whether or not 20 is an odd number\n

    \n
    \n \n

    produces the truth state "false". This is mostly useful for storing up results to look at later:

    \n \n

    let victory be whether or not all the treasures are in the cabinet;\n

    \n
    \n \n

    and then subsequently:

    \n \n

    if victory is true, ...\n

    \n
    \n \n\n

    See   11.5. 11.5. Conditions and questions

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading10 _phrasebook_heading constant (text) ^text = "Assigning Temporary Variables" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     let (a new name) be (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be (value)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value supplied. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Examples:

    \n \n

    let outer bull be 25;\n
    \n let the current appearance be "reddish brown";\n
    \n let the special room be Marley Wood;\n

    \n
    \n \n

    The kinds of these are deduced from the values given, so that, for instance,

    \n \n

    say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."\n

    \n
    \n \n

    produces

    \n \n

    The outer bull scores twenty-five when you practice archery in Marley Wood.\n

    \n
    \n \n

    The variable name should be a new one; if it's the name of an existing one, then the kinds must agree. So:

    \n \n

    let outer bull be 25;\n
    \n let outer bull be 50;\n

    \n
    \n \n

    is a legal combination, because the second "let" simply changes the value of the existing "outer bull" variable to a different number.

    \n\n

    See   11.15. 11.15. Let and temporary variables

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     let (a new name) be (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be (value)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value supplied. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Examples:

    \n \n

    let outer bull be 25;\n
    \n let the current appearance be "reddish brown";\n
    \n let the special room be Marley Wood;\n

    \n
    \n \n

    The kinds of these are deduced from the values given, so that, for instance,

    \n \n

    say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."\n

    \n
    \n \n

    produces

    \n \n

    The outer bull scores twenty-five when you practice archery in Marley Wood.\n

    \n
    \n \n

    The variable name should be a new one; if it's the name of an existing one, then the kinds must agree. So:

    \n \n

    let outer bull be 25;\n
    \n let outer bull be 50;\n

    \n
    \n \n

    is a legal combination, because the second "let" simply changes the value of the existing "outer bull" variable to a different number.

    \n\n

    See   11.15. 11.15. Let and temporary variables

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     let (a new name) be (name of kind)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be (name of kind)

    \n\n\n

    This phrase creates a new temporary variable of the given kind. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

    \n \n

    let inner bull be a number;\n

    \n
    \n \n

    The variable created holding the default value for that kind - in this case, the number 0. A handful of very obscure kinds have no default values, and then a problem message is produced. Inform also disallows:

    \n \n

    let the conveyance be a vehicle;\n

    \n
    \n \n

    because temporary variables aren't allowed to have kinds more specific than "object". (This is a good thing: suppose there are no vehicles in the world?) It's quite safe in such cases to use

    \n \n

    let the conveyance be an object;\n

    \n
    \n \n

    instead, which creates it as the special object value "nothing".

    \n\n

    See   11.15. 11.15. Let and temporary variables

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     let (a new name) be (name of kind)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be (name of kind)

    \n\n\n

    This phrase creates a new temporary variable of the given kind. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

    \n \n

    let inner bull be a number;\n

    \n
    \n \n

    The variable created holding the default value for that kind - in this case, the number 0. A handful of very obscure kinds have no default values, and then a problem message is produced. Inform also disallows:

    \n \n

    let the conveyance be a vehicle;\n

    \n
    \n \n

    because temporary variables aren't allowed to have kinds more specific than "object". (This is a good thing: suppose there are no vehicles in the world?) It's quite safe in such cases to use

    \n \n

    let the conveyance be an object;\n

    \n
    \n \n

    instead, which creates it as the special object value "nothing".

    \n\n

    See   11.15. 11.15. Let and temporary variables

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     let (a new name) be (description of relations of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be (description of relations of values)

    \n\n\n

    This phrase creates a new temporary variable, and sets its value to the identity of a newly created and equally temporary relation. These last only for the present block of phrases, which certainly means that they exist only in the current rule. Example:

    \n \n

    let the password dictionary be a relation of texts;\n

    \n
    \n \n

    This makes a purely temporary various-to-various relation between texts, which lasts as long as the temporary value "password dictionary" lasts. By default, relations are various-to-various, but we could instead write, say:

    \n \n

    let the nicknames catalogue be a various-to-one relation of texts;\n

    \n
    \n \n\n

    See   13.15. 13.15. Temporary relations

    \n

    Kind: phrase (value, description of relations of Ks to Ls) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     let (a new name) be (description of relations of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be (description of relations of values)

    \n\n\n

    This phrase creates a new temporary variable, and sets its value to the identity of a newly created and equally temporary relation. These last only for the present block of phrases, which certainly means that they exist only in the current rule. Example:

    \n \n

    let the password dictionary be a relation of texts;\n

    \n
    \n \n

    This makes a purely temporary various-to-various relation between texts, which lasts as long as the temporary value "password dictionary" lasts. By default, relations are various-to-various, but we could instead write, say:

    \n \n

    let the nicknames catalogue be a various-to-one relation of texts;\n

    \n
    \n \n\n

    See   13.15. 13.15. Temporary relations

    \n

    Kind: phrase (value, description of relations of Ks to Ls) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     let (a new name) be given by (equation name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be given by (equation name)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value found by solving the given equation. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

    \n \n

    let F be given by Newton's Second Law where a is the acceleration due to gravity;\n

    \n
    \n \n

    There is also a more compact syntax, giving the equation explicitly:

    \n \n

    let KE be given by KE = mv^2/2 where KE is an energy;\n

    \n
    \n \n\n

    See   15.18. 15.18. Equations

    \n

    Kind: phrase (value, equation name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     let (a new name) be given by (equation name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a new name) be given by (equation name)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value found by solving the given equation. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

    \n \n

    let F be given by Newton's Second Law where a is the acceleration due to gravity;\n

    \n
    \n \n

    There is also a more compact syntax, giving the equation explicitly:

    \n \n

    let KE be given by KE = mv^2/2 where KE is an energy;\n

    \n
    \n \n\n

    See   15.18. 15.18. Equations

    \n

    Kind: phrase (value, equation name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     let (a temporary named value) be (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a temporary named value) be (value)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value supplied. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Examples:

    \n \n

    let outer bull be 25;\n
    \n let the current appearance be "reddish brown";\n
    \n let the special room be Marley Wood;\n

    \n
    \n \n

    The kinds of these are deduced from the values given, so that, for instance,

    \n \n

    say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."\n

    \n
    \n \n

    produces

    \n \n

    The outer bull scores twenty-five when you practice archery in Marley Wood.\n

    \n
    \n \n

    The variable name should be a new one; if it's the name of an existing one, then the kinds must agree. So:

    \n \n

    let outer bull be 25;\n
    \n let outer bull be 50;\n

    \n
    \n \n

    is a legal combination, because the second "let" simply changes the value of the existing "outer bull" variable to a different number.

    \n\n

    See   11.15. 11.15. Let and temporary variables

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     let (a temporary named value) be (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a temporary named value) be (value)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value supplied. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Examples:

    \n \n

    let outer bull be 25;\n
    \n let the current appearance be "reddish brown";\n
    \n let the special room be Marley Wood;\n

    \n
    \n \n

    The kinds of these are deduced from the values given, so that, for instance,

    \n \n

    say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."\n

    \n
    \n \n

    produces

    \n \n

    The outer bull scores twenty-five when you practice archery in Marley Wood.\n

    \n
    \n \n

    The variable name should be a new one; if it's the name of an existing one, then the kinds must agree. So:

    \n \n

    let outer bull be 25;\n
    \n let outer bull be 50;\n

    \n
    \n \n

    is a legal combination, because the second "let" simply changes the value of the existing "outer bull" variable to a different number.

    \n\n

    See   11.15. 11.15. Let and temporary variables

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     let (a temporary named value) be given by (equation name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a temporary named value) be given by (equation name)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value found by solving the given equation. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

    \n \n

    let F be given by Newton's Second Law where a is the acceleration due to gravity;\n

    \n
    \n \n

    There is also a more compact syntax, giving the equation explicitly:

    \n \n

    let KE be given by KE = mv^2/2 where KE is an energy;\n

    \n
    \n \n\n

    See   15.18. 15.18. Equations

    \n

    Kind: phrase (value, equation name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     let (a temporary named value) be given by (equation name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     let (a temporary named value) be given by (equation name)

    \n\n\n

    This phrase creates a new temporary variable, starting it with the value found by solving the given equation. The variable lasts only for the present block of phrases, which certainly means that it lasts only for the current rule. Example:

    \n \n

    let F be given by Newton's Second Law where a is the acceleration due to gravity;\n

    \n
    \n \n

    There is also a more compact syntax, giving the equation explicitly:

    \n \n

    let KE be given by KE = mv^2/2 where KE is an energy;\n

    \n
    \n \n\n

    See   15.18. 15.18. Equations

    \n

    Kind: phrase (value, equation name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading11 _phrasebook_heading constant (text) ^text = "Increase and Decrease" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     increase (a stored value) by (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     increase (a stored value) by (value)

    \n\n\n

    This phrase increases the variable, table entry, list entry, or property by the given amount, which must be of a compatible kind. Example:

    \n \n

    increase the score by 8;\n
    \n increase the time of day by 5 minutes;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     increase (a stored value) by (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     increase (a stored value) by (value)

    \n\n\n

    This phrase increases the variable, table entry, list entry, or property by the given amount, which must be of a compatible kind. Example:

    \n \n

    increase the score by 8;\n
    \n increase the time of day by 5 minutes;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     decrease (a stored value) by (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decrease (a stored value) by (value)

    \n\n\n

    This phrase decreases the variable, table entry, list entry, or property by the given amount, which must be of a compatible kind. Example:

    \n \n

    decrease the score by 6;\n
    \n decrease the carrying capacity of the player by 10;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     decrease (a stored value) by (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decrease (a stored value) by (value)

    \n\n\n

    This phrase decreases the variable, table entry, list entry, or property by the given amount, which must be of a compatible kind. Example:

    \n \n

    decrease the score by 6;\n
    \n decrease the carrying capacity of the player by 10;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase (value, value) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     increment (a stored value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     increment (a stored value)

    \n\n\n

    This phrase increases the variable, table entry, list entry, or property by 1. Example:

    \n \n

    increment the score;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     increment (a stored value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     increment (a stored value)

    \n\n\n

    This phrase increases the variable, table entry, list entry, or property by 1. Example:

    \n \n

    increment the score;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     decrement (a stored value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decrement (a stored value)

    \n\n\n

    This phrase decreases the variable, table entry, list entry, or property by 1. Example:

    \n \n

    decrement the score;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     decrement (a stored value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decrement (a stored value)

    \n\n\n

    This phrase decreases the variable, table entry, list entry, or property by 1. Example:

    \n \n

    decrement the score;\n

    \n
    \n \n\n

    See   8.12. 8.12. Increasing and decreasing

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading12 _phrasebook_heading constant (text) ^text = "Arithmetic Operations" package phrasebook_entry1 _phrasebook_entry constant (text) ^text = "

     (arithmetic value) + (arithmetic value) ... value

    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     (arithmetic value) plus (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) + (arithmetic value) ... value

    \n\n\n

    This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:

    \n \n

    200 + 1 = 201\n
    \n 10:04 AM + two minutes = 10:06 AM\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (arithmetic value) plus (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) + (arithmetic value) ... value

    \n\n\n

    This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:

    \n \n

    200 + 1 = 201\n
    \n 10:04 AM + two minutes = 10:06 AM\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

     (arithmetic value) - (arithmetic value) ... value

    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     (arithmetic value) minus (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) - (arithmetic value) ... value

    \n\n\n

    This phrase performs signed subtraction on the given values, whose kinds must agree, and produces the result. Examples:

    \n \n

    200 - 1 = 199\n
    \n 10:04 AM - two minutes = 10:02 AM\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (arithmetic value) minus (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) - (arithmetic value) ... value

    \n\n\n

    This phrase performs signed subtraction on the given values, whose kinds must agree, and produces the result. Examples:

    \n \n

    200 - 1 = 199\n
    \n 10:04 AM - two minutes = 10:02 AM\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     (arithmetic value) * (arithmetic value) ... value

    \n" package phrasebook_entry6 _phrasebook_entry constant (text) ^text = "

     (arithmetic value) times (arithmetic value) ... value

    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     (arithmetic value) multiplied by (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) * (arithmetic value) ... value

    \n\n\n

    This phrase performs signed multiplication on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:

    \n \n

    201 times 3 = 603\n
    \n two minutes times 4 = eight minutes\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (arithmetic value) multiplied by (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) * (arithmetic value) ... value

    \n\n\n

    This phrase performs signed multiplication on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:

    \n \n

    201 times 3 = 603\n
    \n two minutes times 4 = eight minutes\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry constant (text) ^text = "

     (arithmetic value) / (arithmetic value) ... value

    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     (arithmetic value) divided by (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) / (arithmetic value) ... value

    \n\n\n

    This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:

    \n \n

    201 divided by 3 = 67\n
    \n 202 divided by 3 = 67\n
    \n 202.0 divided by 3 = 67.33334\n
    \n twenty minutes divided by 4 = five minutes\n
    \n twenty minutes divided by five minutes = 4\n

    \n
    \n \n

    Division rounds whole-number values down to the nearest whole number. An attempt to divide a number by 0 will cause a run-time problem message; but an attempt to divide a real number by 0 will instead produce plus infinity or minus infinity.

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (arithmetic value) divided by (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) / (arithmetic value) ... value

    \n\n\n

    This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and produces the result. Examples:

    \n \n

    201 divided by 3 = 67\n
    \n 202 divided by 3 = 67\n
    \n 202.0 divided by 3 = 67.33334\n
    \n twenty minutes divided by 4 = five minutes\n
    \n twenty minutes divided by five minutes = 4\n

    \n
    \n \n

    Division rounds whole-number values down to the nearest whole number. An attempt to divide a number by 0 will cause a run-time problem message; but an attempt to divide a real number by 0 will instead produce plus infinity or minus infinity.

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

     remainder after dividing (arithmetic value) by (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remainder after dividing (arithmetic value) by (arithmetic value) ... value

    \n\n\n

    This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and then produces the remainder. Examples:

    \n \n

    remainder after dividing 201 by 5 = 1\n
    \n remainder after dividing twenty minutes by 7 = six minutes\n

    \n
    \n \n

    It is mathematically impossible to divide by 0, so any attempt to find the remainder after dividing a number by 0 will cause a run-time problem message. For a real number this won't arise and the remainder will usually be 0.0.

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     remainder after dividing (arithmetic value) by (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remainder after dividing (arithmetic value) by (arithmetic value) ... value

    \n\n\n

    This phrase performs signed division on the given values, whose kinds must be dimensionally compatible, and then produces the remainder. Examples:

    \n \n

    remainder after dividing 201 by 5 = 1\n
    \n remainder after dividing twenty minutes by 7 = six minutes\n

    \n
    \n \n

    It is mathematically impossible to divide by 0, so any attempt to find the remainder after dividing a number by 0 will cause a run-time problem message. For a real number this won't arise and the remainder will usually be 0.0.

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

     (arithmetic value) to the nearest (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) to the nearest (arithmetic value) ... value

    \n\n\n

    This phrase rounds the given value off, rounding upward in boundary cases. Examples:

    \n \n

    201 to the nearest 5 = 200\n
    \n 205 to the nearest 10 = 210\n
    \n 10:27 AM to the nearest five minutes = 10:25 AM\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (arithmetic value) to the nearest (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (arithmetic value) to the nearest (arithmetic value) ... value

    \n\n\n

    This phrase rounds the given value off, rounding upward in boundary cases. Examples:

    \n \n

    201 to the nearest 5 = 200\n
    \n 205 to the nearest 10 = 210\n
    \n 10:27 AM to the nearest five minutes = 10:25 AM\n

    \n
    \n \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase (arithmetic value, arithmetic value) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

     square root of (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     square root of (arithmetic value) ... value

    \n\n\n

    This phrase produces an approximate square root, to the nearest integer, of the given value, which must be of a kind which has square roots. Example:

    \n \n

    square root of 16 = 4\n

    \n
    \n \n

    Trying to take the square root of a negative number will cause a run-time problem, because then we can't even nearly solve it.

    \n

    (Warning: this is slow to compute if the Z-machine setting is used. For

    \n

    best performance, use Glulx.)

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase arithmetic value -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     square root of (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     square root of (arithmetic value) ... value

    \n\n\n

    This phrase produces an approximate square root, to the nearest integer, of the given value, which must be of a kind which has square roots. Example:

    \n \n

    square root of 16 = 4\n

    \n
    \n \n

    Trying to take the square root of a negative number will cause a run-time problem, because then we can't even nearly solve it.

    \n

    (Warning: this is slow to compute if the Z-machine setting is used. For

    \n

    best performance, use Glulx.)

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase arithmetic value -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

     cube root of (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     cube root of (arithmetic value) ... value

    \n\n\n

    This phrase produces an approximate cube root, to the nearest integer, of the given value, which must be of a kind which has cube roots. Example:

    \n \n

    cube root of 27 = 3\n
    \n cube root of -27 = -3\n

    \n
    \n \n

    (Warning: this is not very accurate if the Z-machine setting is used. For

    \n

    best performance, use Glulx.)

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase arithmetic value -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     cube root of (arithmetic value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     cube root of (arithmetic value) ... value

    \n\n\n

    This phrase produces an approximate cube root, to the nearest integer, of the given value, which must be of a kind which has cube roots. Example:

    \n \n

    cube root of 27 = 3\n
    \n cube root of -27 = -3\n

    \n
    \n \n

    (Warning: this is not very accurate if the Z-machine setting is used. For

    \n

    best performance, use Glulx.)

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    Kind: phrase arithmetic value -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry14 _phrasebook_entry - constant (text) ^text = "

     total (arithmetic values valued property) of (description of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     total (arithmetic values valued property) of (description of values) ... value

    \n\n\n

    This phrase produces the total of some property held by all of the values matching the description. A problem message is produced if the values in question can't have that property ("the total carrying capacity of scenes"), or if it holds a kind of value which can't meaningfully be ad ed up ("the total description of open doors"). Example:

    \n \n

    total carrying capacity of people in the Deep Pool\n

    \n
    \n \n\n

    See   15.17. 15.17. Totals

    \n

    Kind: phrase (arithmetic values valued property, description of values) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     total (arithmetic values valued property) of (description of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     total (arithmetic values valued property) of (description of values) ... value

    \n\n\n

    This phrase produces the total of some property held by all of the values matching the description. A problem message is produced if the values in question can't have that property ("the total carrying capacity of scenes"), or if it holds a kind of value which can't meaningfully be ad ed up ("the total description of open doors"). Example:

    \n \n

    total carrying capacity of people in the Deep Pool\n

    \n
    \n \n\n

    See   15.17. 15.17. Totals

    \n

    Kind: phrase (arithmetic values valued property, description of values) -> arithmetic value

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading13 _phrasebook_heading constant (text) ^text = "Saying Real Numbers" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     say \"[real number to number decimal places]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number to number decimal places]\"

    \n\n\n

    This text substitution writes out the number to the given number of decimal places. Examples:

    \n \n

    "The semicircle is roughly [pi to 3 decimal places] paces around."\n

    \n
    \n \n

    produces "The semicircle is roughly 3.142 paces around." The number of places can only usefully be from 1 to 8. Note that, for example, "[1.235 x 10^-7 to 3 decimal places]" produces 0.0; "[1.235678 x 10^8 to 3 decimal places]" produces "1.236 x 10^8".

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[real number to number decimal places]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number to number decimal places]\"

    \n\n\n

    This text substitution writes out the number to the given number of decimal places. Examples:

    \n \n

    "The semicircle is roughly [pi to 3 decimal places] paces around."\n

    \n
    \n \n

    produces "The semicircle is roughly 3.142 paces around." The number of places can only usefully be from 1 to 8. Note that, for example, "[1.235 x 10^-7 to 3 decimal places]" produces 0.0; "[1.235678 x 10^8 to 3 decimal places]" produces "1.236 x 10^8".

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     say \"[real number in decimal notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number in decimal notation]\"

    \n\n\n

    This text substitution writes out the number in decimal form, that is, avoiding "x 10^n" even for very large or very small quantities. For example,

    \n \n

    "[1.23457 x 10^8 in decimal notation]"\n

    \n
    \n \n

    produces 123457000.0 rather than 1.23457 x 10^8. This can look pretty extreme: for example, "[1.8983 x 10^27 in decimal notation]", the mass of the planet Jupiter in kilograms, produces 1898296960000000000000000000.0.

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[real number in decimal notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number in decimal notation]\"

    \n\n\n

    This text substitution writes out the number in decimal form, that is, avoiding "x 10^n" even for very large or very small quantities. For example,

    \n \n

    "[1.23457 x 10^8 in decimal notation]"\n

    \n
    \n \n

    produces 123457000.0 rather than 1.23457 x 10^8. This can look pretty extreme: for example, "[1.8983 x 10^27 in decimal notation]", the mass of the planet Jupiter in kilograms, produces 1898296960000000000000000000.0.

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

     say \"[real number to number decimal places in decimal notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number to number decimal places in decimal notation]\"

    \n\n\n

    This text substitution writes out the number in decimal form, but rounding to the accuracy given.

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     say \"[real number in scientific notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number in scientific notation]\"

    \n\n\n

    This text substitution writes out the number in scientific form, that is, using "x 10^n" even for easy-to-judge quantities. For example,

    \n \n

    "[the reciprocal of 137 in scientific notation]"\n

    \n
    \n \n

    produces 7.29927 x 10^-3 rather than 0.0073. This can look odd: for example, "[pi in scientific notation]" comes out as 3.14159 x 10^0 rather than 3.14159.

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[real number in scientific notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number in scientific notation]\"

    \n\n\n

    This text substitution writes out the number in scientific form, that is, using "x 10^n" even for easy-to-judge quantities. For example,

    \n \n

    "[the reciprocal of 137 in scientific notation]"\n

    \n
    \n \n

    produces 7.29927 x 10^-3 rather than 0.0073. This can look odd: for example, "[pi in scientific notation]" comes out as 3.14159 x 10^0 rather than 3.14159.

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     say \"[real number to number decimal places in scientific notation]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[real number to number decimal places in scientific notation]\"

    \n\n\n

    This text substitution writes out the number in scientific form, but rounding to the accuracy given.

    \n\n

    See   15.4. 15.4. Printing real numbers

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading14 _phrasebook_heading constant (text) ^text = "Real Arithmetic" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     reciprocal of (real number) ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     reciprocal of (real number) ... real number

    \n\n\n

    Calculates 1/x, that is, divides up 1 into this many pieces. Examples:

    \n \n

    reciprocal of -2 = -0.5\n
    \n reciprocal of 0.1 = 10.0\n
    \n reciprocal of 7 = 0.14286\n
    \n reciprocal of plus infinity = 0.0\n

    \n
    \n \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     reciprocal of (real number) ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     reciprocal of (real number) ... real number

    \n\n\n

    Calculates 1/x, that is, divides up 1 into this many pieces. Examples:

    \n \n

    reciprocal of -2 = -0.5\n
    \n reciprocal of 0.1 = 10.0\n
    \n reciprocal of 7 = 0.14286\n
    \n reciprocal of plus infinity = 0.0\n

    \n
    \n \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     absolute value of (real number) ... real number     y = abs(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     absolute value of (real number) ... real number     y = abs(x)

    \n\n\n

    Removes the sign from a value, leaving positive numbers alone but making negative ones positive. Examples:

    \n \n

    absolute value of 62.1 = 62.1\n
    \n absolute value of 0 = 0.0\n
    \n absolute value of -62.1 = 62.1\n
    \n absolute value of minus infinity = plus infinity\n

    \n
    \n \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  abs()

    \n

    Name:  abs function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     absolute value of (real number) ... real number     y = abs(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     absolute value of (real number) ... real number     y = abs(x)

    \n\n\n

    Removes the sign from a value, leaving positive numbers alone but making negative ones positive. Examples:

    \n \n

    absolute value of 62.1 = 62.1\n
    \n absolute value of 0 = 0.0\n
    \n absolute value of -62.1 = 62.1\n
    \n absolute value of minus infinity = plus infinity\n

    \n
    \n \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  abs()

    \n

    Name:  abs function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     real square root of (real number) ... real number     y = root(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     real square root of (real number) ... real number     y = root(x)

    \n\n\n

    This phrase produces a square root, as accurately as a real number can hold it, of the given value, which must be of a kind which has square roots. Example:

    \n \n

    real square root of 2 = 1.41421\n

    \n
    \n \n

    The real square root of a negative number is nonexistent.

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    In equations: write as  root()

    \n

    Name:  root function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     real square root of (real number) ... real number     y = root(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     real square root of (real number) ... real number     y = root(x)

    \n\n\n

    This phrase produces a square root, as accurately as a real number can hold it, of the given value, which must be of a kind which has square roots. Example:

    \n \n

    real square root of 2 = 1.41421\n

    \n
    \n \n

    The real square root of a negative number is nonexistent.

    \n\n

    See   15.5. 15.5. Arithmetic

    \n

    In equations: write as  root()

    \n

    Name:  root function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

     real square of (real number) ... real number     y = rsqr(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     real square of (real number) ... real number     y = rsqr(x)

    \n

    In equations: write as  rsqr()

    \n

    Name:  rsqr function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     ceiling of (real number) ... real number     y = ceiling(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     ceiling of (real number) ... real number     y = ceiling(x)

    \n\n\n

    Produces the smallest integer value greater than or equal to the one given. Examples:

    \n \n

    ceiling of pi = 4.0\n
    \n ceiling of -16.315 = -16.0\n

    \n
    \n \n

    (Note that the result is still a real number; it simply has no fractional part any more.)

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  ceiling()

    \n

    Name:  ceiling function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     ceiling of (real number) ... real number     y = ceiling(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     ceiling of (real number) ... real number     y = ceiling(x)

    \n\n\n

    Produces the smallest integer value greater than or equal to the one given. Examples:

    \n \n

    ceiling of pi = 4.0\n
    \n ceiling of -16.315 = -16.0\n

    \n
    \n \n

    (Note that the result is still a real number; it simply has no fractional part any more.)

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  ceiling()

    \n

    Name:  ceiling function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     floor of (real number) ... real number     y = floor(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     floor of (real number) ... real number     y = floor(x)

    \n\n\n

    Produces the largest integer value less than or equal to the one given. Examples:

    \n \n

    floor of pi = 3.0\n
    \n floor of -16.315 = -17.0\n

    \n
    \n \n

    (Note that the result is still a real number; it simply has no fractional part any more.)

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  floor()

    \n

    Name:  floor function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     floor of (real number) ... real number     y = floor(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     floor of (real number) ... real number     y = floor(x)

    \n\n\n

    Produces the largest integer value less than or equal to the one given. Examples:

    \n \n

    floor of pi = 3.0\n
    \n floor of -16.315 = -17.0\n

    \n
    \n \n

    (Note that the result is still a real number; it simply has no fractional part any more.)

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  floor()

    \n

    Name:  floor function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     (real number) to the nearest whole number ... number     y = int(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (real number) to the nearest whole number ... number     y = int(x)

    \n\n\n

    This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:

    \n \n

    1.4 to the nearest whole number = 1\n
    \n 1.6 to the nearest whole number = 2\n
    \n -1.6 to the nearest whole number = -2\n

    \n
    \n \n

    We probably ought to bear in mind that the limited range of "number" means that the nearest whole number might not be all that near. For example:

    \n \n

    6 x 10^23 to the nearest whole number = 2147483647\n

    \n
    \n \n

    because 2147483647 is the highest value a "number" can have.

    \n\n

    See   15.3. 15.3. Real number conversions

    \n

    In equations: write as  int()

    \n

    Name:  int function

    \n

    Kind: phrase real number -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (real number) to the nearest whole number ... number     y = int(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (real number) to the nearest whole number ... number     y = int(x)

    \n\n\n

    This phrase performs signed addition on the given values, whose kinds must agree, and produces the result. Examples:

    \n \n

    1.4 to the nearest whole number = 1\n
    \n 1.6 to the nearest whole number = 2\n
    \n -1.6 to the nearest whole number = -2\n

    \n
    \n \n

    We probably ought to bear in mind that the limited range of "number" means that the nearest whole number might not be all that near. For example:

    \n \n

    6 x 10^23 to the nearest whole number = 2147483647\n

    \n
    \n \n

    because 2147483647 is the highest value a "number" can have.

    \n\n

    See   15.3. 15.3. Real number conversions

    \n

    In equations: write as  int()

    \n

    Name:  int function

    \n

    Kind: phrase real number -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading15 _phrasebook_heading constant (text) ^text = "Exponential Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     natural/-- logarithm of (real number) ... real number     y = log(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     natural/-- logarithm of (real number) ... real number     y = log(x)

    \n\n\n

    Finds what power e would have to be raised to in order to get this value. Examples:

    \n \n

    logarithm of e = 1.0\n
    \n logarithm of 1 = 0.0\n
    \n logarithm of 1000 = 6.90776\n
    \n logarithm of exponential of 7.12 = 7.12\n

    \n
    \n \n

    Logarithms of zero or negative numbers are nonexistent. This is the function which most calculators label as "ln", for "log natural", but in mathematical and scientific papers it's more often written "log", and Inform follows that convention.

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  log()

    \n

    Name:  log function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     natural/-- logarithm of (real number) ... real number     y = log(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     natural/-- logarithm of (real number) ... real number     y = log(x)

    \n\n\n

    Finds what power e would have to be raised to in order to get this value. Examples:

    \n \n

    logarithm of e = 1.0\n
    \n logarithm of 1 = 0.0\n
    \n logarithm of 1000 = 6.90776\n
    \n logarithm of exponential of 7.12 = 7.12\n

    \n
    \n \n

    Logarithms of zero or negative numbers are nonexistent. This is the function which most calculators label as "ln", for "log natural", but in mathematical and scientific papers it's more often written "log", and Inform follows that convention.

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  log()

    \n

    Name:  log function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     logarithm to base (number) of (real number) ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     logarithm to base (number) of (real number) ... real number

    \n\n\n

    Finds what power the base would have to be raised to in order to get this value. Examples:

    \n \n

    logarithm to base 10 of 1000000 = 6.0\n
    \n logarithm to base 10 of 350 = 2.54407\n
    \n logarithm to base 2 of 256 = 8.0\n

    \n
    \n \n

    Logarithms of zero or negative numbers are nonexistent. Note that "logarithm to base 10 of ..." is what most calculators call simply "log", but Inform doesn't: it uses "log" for natural logarithms.

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    Kind: phrase (number, real number) -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     logarithm to base (number) of (real number) ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     logarithm to base (number) of (real number) ... real number

    \n\n\n

    Finds what power the base would have to be raised to in order to get this value. Examples:

    \n \n

    logarithm to base 10 of 1000000 = 6.0\n
    \n logarithm to base 10 of 350 = 2.54407\n
    \n logarithm to base 2 of 256 = 8.0\n

    \n
    \n \n

    Logarithms of zero or negative numbers are nonexistent. Note that "logarithm to base 10 of ..." is what most calculators call simply "log", but Inform doesn't: it uses "log" for natural logarithms.

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    Kind: phrase (number, real number) -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     exponential of (real number) ... real number     y = exp(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     exponential of (real number) ... real number     y = exp(x)

    \n\n\n

    Computes e to the given power, where e is the base of natural logarithms. Examples:

    \n \n

    exponential of 0 = 1.0\n
    \n exponential of 1 = e = 2.7182818\n
    \n exponential of -10 = 4.53999 x 10^-5\n
    \n exponential of 10 = 22026.46484\n
    \n exponential of logarithm of 7.12 = 7.12\n

    \n
    \n \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  exp()

    \n

    Name:  exp function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     exponential of (real number) ... real number     y = exp(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     exponential of (real number) ... real number     y = exp(x)

    \n\n\n

    Computes e to the given power, where e is the base of natural logarithms. Examples:

    \n \n

    exponential of 0 = 1.0\n
    \n exponential of 1 = e = 2.7182818\n
    \n exponential of -10 = 4.53999 x 10^-5\n
    \n exponential of 10 = 22026.46484\n
    \n exponential of logarithm of 7.12 = 7.12\n

    \n
    \n \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    In equations: write as  exp()

    \n

    Name:  exp function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     (real number) to the power (real number) ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (real number) to the power (real number) ... real number

    \n\n\n

    Computes x to the power y. Examples:

    \n \n

    2 to the power 4 = 16.0\n
    \n 100 to the power 0.5 = 10.0\n
    \n 7 to the power -1 = 0.14286\n
    \n pi to the power 0 = 1.0\n

    \n
    \n \n

    In the words of the Glulx specification document (section 2.12), "the special cases are breathtaking": if you need to know exactly what, say, "minus infinity to the power Y" will do for different cases of Y, refer to the details of the "pow" opcode.

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    Kind: phrase (real number, real number) -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (real number) to the power (real number) ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (real number) to the power (real number) ... real number

    \n\n\n

    Computes x to the power y. Examples:

    \n \n

    2 to the power 4 = 16.0\n
    \n 100 to the power 0.5 = 10.0\n
    \n 7 to the power -1 = 0.14286\n
    \n pi to the power 0 = 1.0\n

    \n
    \n \n

    In the words of the Glulx specification document (section 2.12), "the special cases are breathtaking": if you need to know exactly what, say, "minus infinity to the power Y" will do for different cases of Y, refer to the details of the "pow" opcode.

    \n\n

    See   15.6. 15.6. Powers and logarithms

    \n

    Kind: phrase (real number, real number) -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading16 _phrasebook_heading constant (text) ^text = "Trigonometric Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     (real number) degrees ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (real number) degrees ... real number

    \n\n\n

    Inform measures angles in radians, a convention in which the angle for a half circle is pi, and a right angle is pi divided by 2. This is better from a mathematical point of view, but in practice most people think about angles using degree , where 180 degrees is a half-circle and a right angle is 90 degrees. This phrase helps with that by converting from degrees to radians: in other words, it multiplies by 0.0174532925, since that's roughly 1/180th of pi. Examples:

    \n \n

    sine of 90 degrees = 0.0\n
    \n cosine of 60 degrees = 0.5\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (real number) degrees ... real number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (real number) degrees ... real number

    \n\n\n

    Inform measures angles in radians, a convention in which the angle for a half circle is pi, and a right angle is pi divided by 2. This is better from a mathematical point of view, but in practice most people think about angles using degree , where 180 degrees is a half-circle and a right angle is 90 degrees. This phrase helps with that by converting from degrees to radians: in other words, it multiplies by 0.0174532925, since that's roughly 1/180th of pi. Examples:

    \n \n

    sine of 90 degrees = 0.0\n
    \n cosine of 60 degrees = 0.5\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     sine of (real number) ... real number     y = sin(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sine of (real number) ... real number     y = sin(x)

    \n\n\n

    The length of the upright of a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

    \n \n

    sine of 0 = 0\n
    \n sine of 45 degrees = 0.70711\n
    \n sine of (pi divided by 4) = 0.70711\n
    \n sine of (pi divided by 2) = 1.0\n
    \n sine of pi = 0\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  sin()

    \n

    Name:  sin function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sine of (real number) ... real number     y = sin(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sine of (real number) ... real number     y = sin(x)

    \n\n\n

    The length of the upright of a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

    \n \n

    sine of 0 = 0\n
    \n sine of 45 degrees = 0.70711\n
    \n sine of (pi divided by 4) = 0.70711\n
    \n sine of (pi divided by 2) = 1.0\n
    \n sine of pi = 0\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  sin()

    \n

    Name:  sin function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     cosine of (real number) ... real number     y = cos(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     cosine of (real number) ... real number     y = cos(x)

    \n\n\n

    The length of the base of a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

    \n \n

    cosine of 0 = 1.0\n
    \n cosine of 45 degrees = 0.70711\n
    \n cosine of (pi divided by 4) = 0.70711\n
    \n cosine of (pi divided by 2) = 0.0\n
    \n cosine of pi = -1.0\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  cos()

    \n

    Name:  cos function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     cosine of (real number) ... real number     y = cos(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     cosine of (real number) ... real number     y = cos(x)

    \n\n\n

    The length of the base of a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

    \n \n

    cosine of 0 = 1.0\n
    \n cosine of 45 degrees = 0.70711\n
    \n cosine of (pi divided by 4) = 0.70711\n
    \n cosine of (pi divided by 2) = 0.0\n
    \n cosine of pi = -1.0\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  cos()

    \n

    Name:  cos function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     tangent of (real number) ... real number     y = tan(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     tangent of (real number) ... real number     y = tan(x)

    \n\n\n

    The ratio of the upright length to the base length in a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

    \n \n

    tangent of 0 = 0.0\n
    \n tangent of 45 degrees = 1.0\n
    \n tangent of (pi divided by 4) = 1.0\n
    \n tangent of (pi divided by 2) = plus infinity\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  tan()

    \n

    Name:  tan function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     tangent of (real number) ... real number     y = tan(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     tangent of (real number) ... real number     y = tan(x)

    \n\n\n

    The ratio of the upright length to the base length in a right-angled triangle with this angle and a hypotenuse of length 1, where angle is measured in radians. Examples:

    \n \n

    tangent of 0 = 0.0\n
    \n tangent of 45 degrees = 1.0\n
    \n tangent of (pi divided by 4) = 1.0\n
    \n tangent of (pi divided by 2) = plus infinity\n

    \n
    \n \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  tan()

    \n

    Name:  tan function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     arcsine of (real number) ... real number     y = arcsin(x)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     arcsine of (real number) ... real number     y = arcsin(x)

    \n\n\n

    The inverse of the sine function.

    \n\n

    See   15.7. 15.7. Trigonometry

    \n

    In equations: write as  arcsin()

    \n

    Name:  arcsin function

    \n

    Kind: phrase real number -> real number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry @@ -28947,61 +28947,61 @@ package main _plain package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

     decide no

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decide no

    \n\n\n

    This phrase can only be used in the definition of a phrase to decide whether a condition holds. It ends the decision process immediately and makes the condition false.

    \n\n

    See   11.16. 11.16. New conditions, new adjectives

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     stop

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     stop

    \n\n\n

    This phrase causes the current rule to end immediately. It is most often used in the definition of other phrases:

    \n \n

    To judge the score:\n
    \n     if the score is 0, stop;\n
    \n     say "The score is [score in words] more than it was a half-hour ago."\n

    \n
    \n \n

    In the case when the score is 0, the "stop" ends the phrase immediately, so that the subsequent text is printed only if the score is not 0.

    \n

    "Stop" can also be used in action rules, though this is not very good style - it's clearer to use "stop the action", which is exactly equivalent.

    \n\n

    See   11.13. 11.13. Stop

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     stop

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     stop

    \n\n\n

    This phrase causes the current rule to end immediately. It is most often used in the definition of other phrases:

    \n \n

    To judge the score:\n
    \n     if the score is 0, stop;\n
    \n     say "The score is [score in words] more than it was a half-hour ago."\n

    \n
    \n \n

    In the case when the score is 0, the "stop" ends the phrase immediately, so that the subsequent text is printed only if the score is not 0.

    \n

    "Stop" can also be used in action rules, though this is not very good style - it's clearer to use "stop the action", which is exactly equivalent.

    \n\n

    See   11.13. 11.13. Stop

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     decide on (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decide on (value)

    \n\n\n

    This phrase can only be used in the body of a definition of a phrase to decide a value. It causes the calculation to end immediately, with the outcome being the given value, which must be of the kind expected. Example:

    \n \n

    To decide which number is double (N - a number):\n
    \n     let D be N times N;\n
    \n     decide on D.\n

    \n
    \n \n\n

    See   11.17. 11.17. Phrases to decide other things

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     decide on (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     decide on (value)

    \n\n\n

    This phrase can only be used in the body of a definition of a phrase to decide a value. It causes the calculation to end immediately, with the outcome being the given value, which must be of the kind expected. Example:

    \n \n

    To decide which number is double (N - a number):\n
    \n     let D be N times N;\n
    \n     decide on D.\n

    \n
    \n \n\n

    See   11.17. 11.17. Phrases to decide other things

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading19 _phrasebook_heading constant (text) ^text = "If and Unless" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     if (a condition):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (a condition):\n

    \n\n\n

    This phrase causes the single phrase, or block of phrases, following it to be obeyed only if the condition is true. (If the condition must contain a comma for some reason, the block form should be used.) Example:

    \n \n

    if the red door is open, say "You could try going east?"\n

    \n
    \n \n\n

    See   11.6. 11.6. If

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (a condition):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (a condition):\n

    \n\n\n

    This phrase causes the single phrase, or block of phrases, following it to be obeyed only if the condition is true. (If the condition must contain a comma for some reason, the block form should be used.) Example:

    \n \n

    if the red door is open, say "You could try going east?"\n

    \n
    \n \n\n

    See   11.6. 11.6. If

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     unless (a condition):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     unless (a condition):\n

    \n\n\n

    This phrase causes the single phrase, or block of phrases, following it to be obeyed only if the condition is false. (If the condition must contain a comma for some reason, the block form should be used.) Example:

    \n \n

    unless the red door is closed, say "You could try going east?"\n

    \n
    \n \n\n

    See   11.6. 11.6. If

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     unless (a condition):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     unless (a condition):\n

    \n\n\n

    This phrase causes the single phrase, or block of phrases, following it to be obeyed only if the condition is false. (If the condition must contain a comma for some reason, the block form should be used.) Example:

    \n \n

    unless the red door is closed, say "You could try going east?"\n

    \n
    \n \n\n

    See   11.6. 11.6. If

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     if (value) is:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) is:\n

    \n\n\n

    This phrase switches between a variety of possible blocks of phrases to follow, depending on the value given. Example:

    \n \n

    if the dangerous item is:\n
    \n     -- the electric hairbrush:\n
    \n         say "Mind your head.";\n
    \n     -- the silver spoon:\n
    \n         say "Steer clear of the cutlery drawer."\n

    \n
    \n \n

    One alternative is allowed to be "otherwise", which is used only if none of the other cases apply, and which therefore guarantees that in any situation exactly one of the blocks will be followed.

    \n \n

    if N is:\n
    \n     -- 1: say "1.";\n
    \n     -- 2: say "2.";\n
    \n     -- otherwise: say "Neither 1 nor 2.";\n

    \n
    \n \n\n

    See   11.8. 11.8. Otherwise

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (value) is:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) is:\n

    \n\n\n

    This phrase switches between a variety of possible blocks of phrases to follow, depending on the value given. Example:

    \n \n

    if the dangerous item is:\n
    \n     -- the electric hairbrush:\n
    \n         say "Mind your head.";\n
    \n     -- the silver spoon:\n
    \n         say "Steer clear of the cutlery drawer."\n

    \n
    \n \n

    One alternative is allowed to be "otherwise", which is used only if none of the other cases apply, and which therefore guarantees that in any situation exactly one of the blocks will be followed.

    \n \n

    if N is:\n
    \n     -- 1: say "1.";\n
    \n     -- 2: say "2.";\n
    \n     -- otherwise: say "Neither 1 nor 2.";\n

    \n
    \n \n\n

    See   11.8. 11.8. Otherwise

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     do nothing

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     do nothing

    \n\n\n

    This phrase does nothing at all. It is very occasionally useful to make a rule which does nothing:

    \n \n

    This is the largely ineffective rule:\n
    \n     do nothing.\n

    \n
    \n \n\n

    See   11.1. 11.1. What are phrases?

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     do nothing

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     do nothing

    \n\n\n

    This phrase does nothing at all. It is very occasionally useful to make a rule which does nothing:

    \n \n

    This is the largely ineffective rule:\n
    \n     do nothing.\n

    \n
    \n \n\n

    See   11.1. 11.1. What are phrases?

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading20 _phrasebook_heading constant (text) ^text = "While and Repeat" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     while (a condition):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     while (a condition):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated over and over for as long the condition is true. If it isn't even true the first time, the block is skipped over and nothing happens. Example:

    \n \n

    while someone (called the victim) is in the Crypt:\n
    \n     say "A bolt of lightning strikes [the victim]!";\n
    \n     now the victim is in the Afterlife;\n

    \n
    \n \n\n

    See   11.9. 11.9. While

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     while (a condition):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     while (a condition):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated over and over for as long the condition is true. If it isn't even true the first time, the block is skipped over and nothing happens. Example:

    \n \n

    while someone (called the victim) is in the Crypt:\n
    \n     say "A bolt of lightning strikes [the victim]!";\n
    \n     now the victim is in the Afterlife;\n

    \n
    \n \n\n

    See   11.9. 11.9. While

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

     repeat with (a new name) running from (arithmetic value) to (arithmetic value):\n

    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     repeat with (a new name) running from (enumerated value) to (enumerated value):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat with (a new name) running from (arithmetic value) to (arithmetic value):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each value in the given range, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

    \n \n

    repeat with counter running from 1 to 10:\n
    \n     ...\n

    \n
    \n \n

    This, and runs through the given phrases ten times. Within those phrases, a special value called "counter" has the value 1 the first time through, then the value 2, then 3 and so on up to 10. (It can of course be called whatever we like: this is only an example.) The range can be from any kind where ranges make sense - anything on which arithmetic can be done, so for instance

    \n \n

    repeat with moment running from 4 PM to 4:07 PM:\n
    \n     ...\n

    \n
    \n \n

    and also any enumeration:

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n \n

    ...\n
    \n     repeat with hue running from orange to indigo:\n
    \n         ...\n

    \n
    \n \n\n

    See   11.10. 11.10. Repeat

    \n

    Kind: phrase (K, K [arithmetic value], K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     repeat with (a new name) running from (enumerated value) to (enumerated value):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat with (a new name) running from (arithmetic value) to (arithmetic value):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each value in the given range, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

    \n \n

    repeat with counter running from 1 to 10:\n
    \n     ...\n

    \n
    \n \n

    This, and runs through the given phrases ten times. Within those phrases, a special value called "counter" has the value 1 the first time through, then the value 2, then 3 and so on up to 10. (It can of course be called whatever we like: this is only an example.) The range can be from any kind where ranges make sense - anything on which arithmetic can be done, so for instance

    \n \n

    repeat with moment running from 4 PM to 4:07 PM:\n
    \n     ...\n

    \n
    \n \n

    and also any enumeration:

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n \n

    ...\n
    \n     repeat with hue running from orange to indigo:\n
    \n         ...\n

    \n
    \n \n\n

    See   11.10. 11.10. Repeat

    \n

    Kind: phrase (K, K [arithmetic value], K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     repeat with (a new name) running through (description of values):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat with (a new name) running through (description of values):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each value matching the description, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

    \n \n

    repeat with item running through open containers:\n
    \n     ...\n

    \n
    \n \n

    If there are no containers, or they are all closed, the phrases will not be followed at all. Inform will issue a Problem message if the range of the loop may be infinite: for example, it won't allow:

    \n \n

    repeat with X running through odd numbers:\n
    \n     ...\n

    \n
    \n \n

    On the other hand it will allow:

    \n \n

    repeat with T running through times:\n
    \n     ...\n

    \n
    \n \n

    which repeats 1440 times, starting with T at midnight and finishing at 11:59 PM. See the Kinds index for which kinds of value can be repeated through.

    \n\n

    See   11.11. 11.11. Repeat running through

    \n

    Kind: phrase (K, description of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     repeat with (a new name) running through (description of values):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat with (a new name) running through (description of values):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each value matching the description, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

    \n \n

    repeat with item running through open containers:\n
    \n     ...\n

    \n
    \n \n

    If there are no containers, or they are all closed, the phrases will not be followed at all. Inform will issue a Problem message if the range of the loop may be infinite: for example, it won't allow:

    \n \n

    repeat with X running through odd numbers:\n
    \n     ...\n

    \n
    \n \n

    On the other hand it will allow:

    \n \n

    repeat with T running through times:\n
    \n     ...\n

    \n
    \n \n

    which repeats 1440 times, starting with T at midnight and finishing at 11:59 PM. See the Kinds index for which kinds of value can be repeated through.

    \n\n

    See   11.11. 11.11. Repeat running through

    \n

    Kind: phrase (K, description of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     repeat with (a new name) running through (list of values):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat with (a new name) running through (list of values):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each item in the given list, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

    \n \n

    let L be {2, 3, 5, 7, 11, 13, 17, 19};\n
    \n repeat with prime running through L:\n
    \n     ...\n

    \n
    \n \n

    If the list is empty, nothing happens: the "..." phrase(s) are never tried.

    \n\n

    See   21.4. 21.4. Testing and iterating over lists

    \n

    Kind: phrase (object, list of values) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     repeat with (a new name) running through (list of values):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat with (a new name) running through (list of values):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each item in the given list, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example:

    \n \n

    let L be {2, 3, 5, 7, 11, 13, 17, 19};\n
    \n repeat with prime running through L:\n
    \n     ...\n

    \n
    \n \n

    If the list is empty, nothing happens: the "..." phrase(s) are never tried.

    \n\n

    See   21.4. 21.4. Testing and iterating over lists

    \n

    Kind: phrase (object, list of values) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     repeat through (table name):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, from top to bottom. Blank rows are skipped. Example:

    \n \n

    To list the succession:\n
    \n     say "The Succession List runs as follows...";\n
    \n     repeat through the Table of Recent Monarchs:\n
    \n         say "[accession entry]: [name entry] ([family entry])."\n

    \n
    \n \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     repeat through (table name):\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name):\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, from top to bottom. Blank rows are skipped. Example:

    \n \n

    To list the succession:\n
    \n     say "The Succession List runs as follows...";\n
    \n     repeat through the Table of Recent Monarchs:\n
    \n         say "[accession entry]: [name entry] ([family entry])."\n

    \n
    \n \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry constant (text) ^text = "

     repeat through (table name) in reverse order:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name) in reverse order:\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, from bottom to top. Blank rows are skipped.

    \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     repeat through (table name) in (table column) order:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name) in (table column) order:\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, in order of the values in the given column. Blank rows are skipped. Example:

    \n \n

    repeat through the Table of Recent Monarchs in name order: ...\n
    \n repeat through the Table of Recent Monarchs in accession order: ...\n

    \n
    \n \n

    work through the same table in rather different orders. The sequence is lower to higher (small numbers to high numbers, A to Z, and so on); insert "reverse" after "in" to reverse this.

    \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     repeat through (table name) in (table column) order:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name) in (table column) order:\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, in order of the values in the given column. Blank rows are skipped. Example:

    \n \n

    repeat through the Table of Recent Monarchs in name order: ...\n
    \n repeat through the Table of Recent Monarchs in accession order: ...\n

    \n
    \n \n

    work through the same table in rather different orders. The sequence is lower to higher (small numbers to high numbers, A to Z, and so on); insert "reverse" after "in" to reverse this.

    \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     repeat through (table name) in reverse (table column) order:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name) in reverse (table column) order:\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, in order of the values in the given column. Blank rows are skipped. Example:

    \n \n

    repeat through the Table of Recent Monarchs in reverse name order: ...\n
    \n repeat through the Table of Recent Monarchs in reverse accession order: ...\n

    \n
    \n \n

    work through the same table in rather different orders. The sequence is higher to lower (high numbers to small numbers, Z to A, and so on); delete the "reverse" after "in" to reverse this.

    \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     repeat through (table name) in reverse (table column) order:\n

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     repeat through (table name) in reverse (table column) order:\n

    \n\n\n

    This phrase causes the block of phrases following it to be repeated once for each row in the given table, choosing each row in turn, in order of the values in the given column. Blank rows are skipped. Example:

    \n \n

    repeat through the Table of Recent Monarchs in reverse name order: ...\n
    \n repeat through the Table of Recent Monarchs in reverse accession order: ...\n

    \n
    \n \n

    work through the same table in rather different orders. The sequence is higher to lower (high numbers to small numbers, Z to A, and so on); delete the "reverse" after "in" to reverse this.

    \n\n

    See   16.6. 16.6. Repeating through tables

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading21 _phrasebook_heading constant (text) ^text = "Loop Flow" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     break

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     break

    \n\n\n

    This phrase can only be used inside "repeat", "while" block, and causes both the current repetition and the entire loop to finish immediately. Example:

    \n \n

    repeat with X running from 1 to 10:\n
    \n     if X is 7, break;\n
    \n     say "[X] ".\n

    \n
    \n \n

    produces the text "1 2 3 4 5 6 ", with nothing after "6" because the loop was broken at that point. The "say" wasn't reached on the 7th repetition, and the 8th, 9th and 10th never happened.

    \n\n

    See   11.12. 11.12. Next and break

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     break

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     break

    \n\n\n

    This phrase can only be used inside "repeat", "while" block, and causes both the current repetition and the entire loop to finish immediately. Example:

    \n \n

    repeat with X running from 1 to 10:\n
    \n     if X is 7, break;\n
    \n     say "[X] ".\n

    \n
    \n \n

    produces the text "1 2 3 4 5 6 ", with nothing after "6" because the loop was broken at that point. The "say" wasn't reached on the 7th repetition, and the 8th, 9th and 10th never happened.

    \n\n

    See   11.12. 11.12. Next and break

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     next

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     next

    \n\n\n

    This phrase can only be used inside a "repeat" or "while" block, and causes the current repetition of the block to finish immediately. That either means the next repetition begins, or (if we are a ready at the last one) the loop ends too. Example:

    \n \n

    repeat with X running from 1 to 10:\n
    \n     if X is 4, next;\n
    \n     say "[X] ".\n

    \n
    \n \n

    produces the text "1 2 3 5 6 7 8 9 10 ", with no "4" because the "say" phrase was never reached on the fourth repetition.

    \n\n

    See   11.12. 11.12. Next and break

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     next

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     next

    \n\n\n

    This phrase can only be used inside a "repeat" or "while" block, and causes the current repetition of the block to finish immediately. That either means the next repetition begins, or (if we are a ready at the last one) the loop ends too. Example:

    \n \n

    repeat with X running from 1 to 10:\n
    \n     if X is 4, next;\n
    \n     say "[X] ".\n

    \n
    \n \n

    produces the text "1 2 3 5 6 7 8 9 10 ", with no "4" because the "say" phrase was never reached on the fourth repetition.

    \n\n

    See   11.12. 11.12. Next and break

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading22 _phrasebook_heading constant (text) ^text = "Enumerations" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     number of (description of values) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of (description of values) ... number

    \n\n\n

    This phrase counts the number of values matching the description, which may of course be 0. Example:

    \n \n

    number of open doors\n

    \n
    \n \n

    produces the number of doors, anywhere in the model world, which are currently open. A Problem message is produced if the number is potentially infinite, or impractical to count: for instance, Inform rejects "number of odd numbers".

    \n\n

    See   6.1. 6.1. What are descriptions?

    \n

    Kind: phrase description of values -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of (description of values) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of (description of values) ... number

    \n\n\n

    This phrase counts the number of values matching the description, which may of course be 0. Example:

    \n \n

    number of open doors\n

    \n
    \n \n

    produces the number of doors, anywhere in the model world, which are currently open. A Problem message is produced if the number is potentially infinite, or impractical to count: for instance, Inform rejects "number of odd numbers".

    \n\n

    See   6.1. 6.1. What are descriptions?

    \n

    Kind: phrase description of values -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     (name of kind) after (enumerated value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) after (enumerated value) ... value

    \n\n\n

    This phrase produces the next-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "colour after orange" is yellow.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase (K [enumerated value], K) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (name of kind) after (enumerated value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) after (enumerated value) ... value

    \n\n\n

    This phrase produces the next-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "colour after orange" is yellow.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase (K [enumerated value], K) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     (name of kind) before (enumerated value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) before (enumerated value) ... value

    \n\n\n

    This phrase produces the previous-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "colour before blue" is green.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase (K [enumerated value], K) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (name of kind) before (enumerated value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) before (enumerated value) ... value

    \n\n\n

    This phrase produces the previous-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "colour before blue" is green.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase (K [enumerated value], K) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     first value of (name of kind) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     first value of (name of kind) ... value

    \n\n\n

    This phrase produces the first-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "first value of colour" is red.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase K [enumerated value] -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     first value of (name of kind) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     first value of (name of kind) ... value

    \n\n\n

    This phrase produces the first-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "first value of colour" is red.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase K [enumerated value] -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     last value of (name of kind) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     last value of (name of kind) ... value

    \n\n\n

    This phrase produces the last-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "last value of colour" is violet.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase K [enumerated value] -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     last value of (name of kind) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     last value of (name of kind) ... value

    \n\n\n

    This phrase produces the last-created value of the given kind, which should be an enumeration. Example: if we have

    \n \n

    Colour is a kind of value. The colours are red, orange, yellow, green, blue, indigo and violet.\n

    \n
    \n \n

    then "last value of colour" is violet.

    \n\n

    See   11.18. 11.18. The value after and the value before

    \n

    Kind: phrase K [enumerated value] -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading23 _phrasebook_heading constant (text) ^text = "Randomness" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     a/-- random (description of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     a/-- random (description of values) ... value

    \n\n\n

    This phrase makes a uniformly random choice from values satisfying the description given. Example:

    \n \n

    a random visited room\n
    \n a random scene\n

    \n
    \n \n

    A problem message is issued if the range is too large (for instance, "a random text"). Unexpected results may follow if no value fits the description, unless we are describing objects, in which case the result is the special value "nothing".

    \n\n

    See   8.19. 8.19. Random choices of things

    \n

    Kind: phrase description of Ks -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     a/-- random (description of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     a/-- random (description of values) ... value

    \n\n\n

    This phrase makes a uniformly random choice from values satisfying the description given. Example:

    \n \n

    a random visited room\n
    \n a random scene\n

    \n
    \n \n

    A problem message is issued if the range is too large (for instance, "a random text"). Unexpected results may follow if no value fits the description, unless we are describing objects, in which case the result is the special value "nothing".

    \n\n

    See   8.19. 8.19. Random choices of things

    \n

    Kind: phrase description of Ks -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

     a random (name of kind) between (arithmetic value) and (arithmetic value) ... value

    \n" package phrasebook_entry3 _phrasebook_entry @@ -29009,11 +29009,11 @@ package main _plain package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

     a random (name of kind) between (enumerated value) and (enumerated value) ... value

    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     a random (name of kind) from (enumerated value) to (enumerated value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     a random (name of kind) between (arithmetic value) and (arithmetic value) ... value

    \n\n\n

    This phrase produces a uniformly random value in the range given. Examples:

    \n \n

    a random number from 10 to 99\n
    \n a random time from 2:31 PM to 2:57 PM\n

    \n
    \n \n

    If we make a new kind of value:

    \n \n

    A cloud pattern is a kind of value. The cloud patterns are cumulus, altocumulus, cumulonimbus, stratus, cirrus, nimbus, nimbostratus.\n

    \n
    \n \n

    then we can also take random values from it:

    \n \n

    a random cloud pattern between stratus and nimbus\n

    \n
    \n \n

    which has three possible outcomes, all equally likely.

    \n\n

    See   8.18. 8.18. Randomness

    \n

    Kind: phrase (K [arithmetic value], K, K) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     a random (name of kind) from (enumerated value) to (enumerated value) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     a random (name of kind) between (arithmetic value) and (arithmetic value) ... value

    \n\n\n

    This phrase produces a uniformly random value in the range given. Examples:

    \n \n

    a random number from 10 to 99\n
    \n a random time from 2:31 PM to 2:57 PM\n

    \n
    \n \n

    If we make a new kind of value:

    \n \n

    A cloud pattern is a kind of value. The cloud patterns are cumulus, altocumulus, cumulonimbus, stratus, cirrus, nimbus, nimbostratus.\n

    \n
    \n \n

    then we can also take random values from it:

    \n \n

    a random cloud pattern between stratus and nimbus\n

    \n
    \n \n

    which has three possible outcomes, all equally likely.

    \n\n

    See   8.18. 8.18. Randomness

    \n

    Kind: phrase (K [arithmetic value], K, K) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     if a random chance of (number) in (number) succeeds:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if a random chance of (number) in (number) succeeds:

    \n\n\n

    This condition is true X/Yths of the time, where X and Y are the numbers. Example:

    \n \n

    if a random chance of 2 in 3 succeeds, ...\n

    \n
    \n \n

    Here is a rule which applies only 15% of the time:

    \n \n

    Instead of waiting when a random chance of 15 in 100 succeeds: ...\n

    \n
    \n \n\n

    See   8.18. 8.18. Randomness

    \n

    Kind: phrase (number, number) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if a random chance of (number) in (number) succeeds:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if a random chance of (number) in (number) succeeds:

    \n\n\n

    This condition is true X/Yths of the time, where X and Y are the numbers. Example:

    \n \n

    if a random chance of 2 in 3 succeeds, ...\n

    \n
    \n \n

    Here is a rule which applies only 15% of the time:

    \n \n

    Instead of waiting when a random chance of 15 in 100 succeeds: ...\n

    \n
    \n \n\n

    See   8.18. 8.18. Randomness

    \n

    Kind: phrase (number, number) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     seed the random-number generator with (number)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     seed the random-number generator with (number)

    \n\n\n

    This phrase changes the seed number as specified. Any random numbers generated after that depend only on the seed. Example: the following sentence will "fix" the process of generating these random numbers so that they are not random at all - t e same sequence of random numbers will be produced on each run.

    \n \n

    When play begins, seed the random-number generator with 1234.\n

    \n
    \n \n

    The seed value "1234" can be anything positive; a different sequence of random numbers will be produced for each different seed value. A seed value of 0 restores the RNG to properly random behaviour again.

    \n\n

    See   8.18. 8.18. Randomness

    \n

    Kind: phrase number -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     seed the random-number generator with (number)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     seed the random-number generator with (number)

    \n\n\n

    This phrase changes the seed number as specified. Any random numbers generated after that depend only on the seed. Example: the following sentence will "fix" the process of generating these random numbers so that they are not random at all - t e same sequence of random numbers will be produced on each run.

    \n \n

    When play begins, seed the random-number generator with 1234.\n

    \n
    \n \n

    The seed value "1234" can be anything positive; a different sequence of random numbers will be produced for each different seed value. A seed value of 0 restores the RNG to properly random behaviour again.

    \n\n

    See   8.18. 8.18. Randomness

    \n

    Kind: phrase number -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading24 _phrasebook_heading constant (text) ^text = "Default Values" package phrasebook_entry1 _phrasebook_entry @@ -29021,53 +29021,53 @@ package main _plain package phrasebook_heading25 _phrasebook_heading constant (text) ^text = "Breaking down text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     number of characters in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of characters in (text) ... number

    \n\n\n

    This phrase produces the number of characters from the text. Characters include letters, digits, punctuation symbols, spaces or other letter-forms. Examples:

    \n \n

    number of characters in "War and Peace"\n
    \n number of characters in ""\n

    \n
    \n \n

    produce 13 and 0 respectively.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of characters in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of characters in (text) ... number

    \n\n\n

    This phrase produces the number of characters from the text. Characters include letters, digits, punctuation symbols, spaces or other letter-forms. Examples:

    \n \n

    number of characters in "War and Peace"\n
    \n number of characters in ""\n

    \n
    \n \n

    produce 13 and 0 respectively.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     number of words in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of words in (text) ... number

    \n\n\n

    This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing that punctuation or spacing. Exam le:

    \n \n

    number of words in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces 5.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of words in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of words in (text) ... number

    \n\n\n

    This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing that punctuation or spacing. Exam le:

    \n \n

    number of words in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces 5.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     number of punctuated words in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of punctuated words in (text) ... number

    \n\n\n

    This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing the spacing, but leaving the punctuation as i dependent words. Example:

    \n \n

    number of punctuated words in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces 8; see if you can find them all.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of punctuated words in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of punctuated words in (text) ... number

    \n\n\n

    This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing the spacing, but leaving the punctuation as i dependent words. Example:

    \n \n

    number of punctuated words in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces 8; see if you can find them all.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     number of unpunctuated words in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of unpunctuated words in (text) ... number

    \n\n\n

    This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at spacing (spaces, line breaks, paragraph breaks) but including all punctuation as if it were part of the spelling of the words it oins to. Example:

    \n \n

    number of unpunctuated words in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces just 4.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of unpunctuated words in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of unpunctuated words in (text) ... number

    \n\n\n

    This phrase produces the number of words from the text. Words for this purpose are what's left after breaking the text up at spacing (spaces, line breaks, paragraph breaks) but including all punctuation as if it were part of the spelling of the words it oins to. Example:

    \n \n

    number of unpunctuated words in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces just 4.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     number of lines in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of lines in (text) ... number

    \n\n\n

    This phrase produces the number of lines in the text. Unless explicit use is made of line-breaking, lines and paragraphs will be the same - it doesn't refer to lines as visible on screen, because we have no way of knowing what size screen he player might have. Example: the number of lines in

    \n \n

    "Sensational news just in![paragraph break]The Martians have invaded Miranda.[line break](One of the moons of Uranus, that is.)"\n

    \n
    \n \n

    is 3.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of lines in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of lines in (text) ... number

    \n\n\n

    This phrase produces the number of lines in the text. Unless explicit use is made of line-breaking, lines and paragraphs will be the same - it doesn't refer to lines as visible on screen, because we have no way of knowing what size screen he player might have. Example: the number of lines in

    \n \n

    "Sensational news just in![paragraph break]The Martians have invaded Miranda.[line break](One of the moons of Uranus, that is.)"\n

    \n
    \n \n

    is 3.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     number of paragraphs in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of paragraphs in (text) ... number

    \n\n\n

    This phrase produces the number of paragraphs in the text. Example: the number of paragraphs in

    \n \n

    "Sensational news just in![paragraph break]The Martians have invaded Miranda.[line break](One of the moons of Uranus, that is.)"\n

    \n
    \n \n

    is 2.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of paragraphs in (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of paragraphs in (text) ... number

    \n\n\n

    This phrase produces the number of paragraphs in the text. Example: the number of paragraphs in

    \n \n

    "Sensational news just in![paragraph break]The Martians have invaded Miranda.[line break](One of the moons of Uranus, that is.)"\n

    \n
    \n \n

    is 2.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase text -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     character number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     character number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth character from the text, counting from 1. Characters include letters, digits, punctuation symbols, spaces or other letter-forms. Example:

    \n \n

    character number 8 in "numberless projects of social reform"\n

    \n
    \n \n

    produces "e". If the index is less than 1 or more than the length of the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     character number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     character number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth character from the text, counting from 1. Characters include letters, digits, punctuation symbols, spaces or other letter-forms. Example:

    \n \n

    character number 8 in "numberless projects of social reform"\n

    \n
    \n \n

    produces "e". If the index is less than 1 or more than the length of the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     word number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     word number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing that punctuation or spacing. Exa ple:

    \n \n

    word number 3 in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces "don't". If the index is less than 1 or more than the number of words in the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     word number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     word number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing that punctuation or spacing. Exa ple:

    \n \n

    word number 3 in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces "don't". If the index is less than 1 or more than the number of words in the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     punctuated word number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     punctuated word number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing the spacing, but leaving the punctuation as ndependent words. Example:

    \n \n

    punctuated word number 2 in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces "-". The punctuated words here are "ice", "-", "hot", ",", "don't", "you", "think", "?". If two or more punctuation marks are adjacent, they are counted as different words, except for runs of dashes or periods: thus ",," has two punctuated words, but "--" and "..." have only one each. If the index is less than 1 or more than the number of punctuated words in the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     punctuated word number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     punctuated word number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at punctuation or spacing (spaces, line breaks, paragraph breaks) and then removing the spacing, but leaving the punctuation as ndependent words. Example:

    \n \n

    punctuated word number 2 in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces "-". The punctuated words here are "ice", "-", "hot", ",", "don't", "you", "think", "?". If two or more punctuation marks are adjacent, they are counted as different words, except for runs of dashes or periods: thus ",," has two punctuated words, but "--" and "..." have only one each. If the index is less than 1 or more than the number of punctuated words in the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

     unpunctuated word number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     unpunctuated word number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at spacing (spaces, line breaks, paragraph breaks) but including all punctuation as if it were part of the spelling of the words it joins to. Example:

    \n \n

    unpunctuated word number 1 in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces "ice-hot,". The unpunctuated words in "ice-hot, don't you think?" are "ice-hot,", "don't", "you", "think?". If the index is less than 1 or more than the number of punctuated words in the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     unpunctuated word number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     unpunctuated word number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth word from the text, counting from 1. Words for this purpose are what's left after breaking the text up at spacing (spaces, line breaks, paragraph breaks) but including all punctuation as if it were part of the spelling of the words it joins to. Example:

    \n \n

    unpunctuated word number 1 in "ice-hot, don't you think?"\n

    \n
    \n \n

    produces "ice-hot,". The unpunctuated words in "ice-hot, don't you think?" are "ice-hot,", "don't", "you", "think?". If the index is less than 1 or more than the number of punctuated words in the text, the result is an empty text, "".

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry11 _phrasebook_entry constant (text) ^text = "

     line number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     line number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth line from the text, counting from 1. Unless explicit use is made of line-breaking, lines and paragraphs will be the same - it doesn't refer to lines as visible on screen, because we have no way of knowing what size scre n the player might have.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry12 _phrasebook_entry constant (text) ^text = "

     paragraph number (number) in (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     paragraph number (number) in (text) ... text

    \n\n\n

    This phrase produces the Nth paragraph from the text, counting from 1.

    \n\n

    See   20.3. 20.3. Characters, words, punctuated words, unpunctuated words, lines, paragraphs

    \n

    Kind: phrase (number, text) -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

     substituted form of (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     substituted form of (text) ... text

    \n\n\n

    This takes a text and makes substitution occur immediately. For example,

    \n \n

    substituted form of "time of death, [time of day]"\n

    \n
    \n \n

    produces something like "time of death, 9:15 AM" rather than "time of death, [time of day]". It's entirely legal to apply this to text which never had any substitutions in, so

    \n \n

    substituted form of "balloon"\n

    \n
    \n \n

    produces "balloon".

    \n\n

    See   20.7. 20.7. Making new text with text substitutions

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     substituted form of (text) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     substituted form of (text) ... text

    \n\n\n

    This takes a text and makes substitution occur immediately. For example,

    \n \n

    substituted form of "time of death, [time of day]"\n

    \n
    \n \n

    produces something like "time of death, 9:15 AM" rather than "time of death, [time of day]". It's entirely legal to apply this to text which never had any substitutions in, so

    \n \n

    substituted form of "balloon"\n

    \n
    \n \n

    produces "balloon".

    \n\n

    See   20.7. 20.7. Making new text with text substitutions

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading26 _phrasebook_heading constant (text) ^text = "Matching and Replacing" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     if (text) exactly matches the text (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) exactly matches the text (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if the second text matches the first, starting at the beginning and finishing at the end. This appears to be the same as testing if one is equal to the other, but that's not quite true: for example,

    \n \n

    if "[score]" exactly matches the text "[best score]", ...\n

    \n
    \n \n

    is true if the score and best score currently print out as the same text, which will be true if they are currently equal as numbers; but

    \n \n

    if "[score]" is "[best score]", ...\n

    \n
    \n \n

    is never true - these are different texts, even if they sometimes look the same.

    \n\n

    See   20.5. 20.5. Matching and exactly matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (text) exactly matches the text (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) exactly matches the text (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if the second text matches the first, starting at the beginning and finishing at the end. This appears to be the same as testing if one is equal to the other, but that's not quite true: for example,

    \n \n

    if "[score]" exactly matches the text "[best score]", ...\n

    \n
    \n \n

    is true if the score and best score currently print out as the same text, which will be true if they are currently equal as numbers; but

    \n \n

    if "[score]" is "[best score]", ...\n

    \n
    \n \n

    is never true - these are different texts, even if they sometimes look the same.

    \n\n

    See   20.5. 20.5. Matching and exactly matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     if (text) matches the text (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) matches the text (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if the second text occurs anywhere inside the first. Examples:

    \n \n

    if "[score]" matches the text "3", ...\n

    \n
    \n \n

    tests whether the digit 3 occurs anywhere in the score, as printed out; and

    \n \n

    if the printed name of the location matches the text "the", ...\n

    \n
    \n \n

    tests to see whether "the" can be found anywhere in the current room's name. Note that the location "Smotheringly Hot Jungle" would pass this test - it's there if you look. On the other hand, "The Orangery" would not, because "The" does not match against "the". We can get around this in a variety of ways, one of which is to tell Inform to be insensitive to the case (upper or lower) of letters:

    \n \n

    if the printed name of the location matches the text "the", case insensitively: ...\n

    \n
    \n \n\n

    See   20.5. 20.5. Matching and exactly matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (text) matches the text (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) matches the text (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if the second text occurs anywhere inside the first. Examples:

    \n \n

    if "[score]" matches the text "3", ...\n

    \n
    \n \n

    tests whether the digit 3 occurs anywhere in the score, as printed out; and

    \n \n

    if the printed name of the location matches the text "the", ...\n

    \n
    \n \n

    tests to see whether "the" can be found anywhere in the current room's name. Note that the location "Smotheringly Hot Jungle" would pass this test - it's there if you look. On the other hand, "The Orangery" would not, because "The" does not match against "the". We can get around this in a variety of ways, one of which is to tell Inform to be insensitive to the case (upper or lower) of letters:

    \n \n

    if the printed name of the location matches the text "the", case insensitively: ...\n

    \n
    \n \n\n

    See   20.5. 20.5. Matching and exactly matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     number of times (text) matches the text (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of times (text) matches the text (text) ... number    
    \n optionally  case insensitively\n

    \n\n\n

    This produces the number of times the second text occurs within the first. The matches are not allowed to overlap. Example:

    \n \n

    number of times "pell-mell sally" matches the text "ll" = 3\n
    \n number of times "xyzzy" matches the text "Z" = 0\n
    \n number of times "xyzzy" matches the text "Z", case insensitively = 2\n
    \n number of times "aaaaaaaa" matches the text "aaaa" = 2\n

    \n
    \n \n\n

    See   20.5. 20.5. Matching and exactly matching

    \n

    Kind: phrase (text, text) -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of times (text) matches the text (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of times (text) matches the text (text) ... number    
    \n optionally  case insensitively\n

    \n\n\n

    This produces the number of times the second text occurs within the first. The matches are not allowed to overlap. Example:

    \n \n

    number of times "pell-mell sally" matches the text "ll" = 3\n
    \n number of times "xyzzy" matches the text "Z" = 0\n
    \n number of times "xyzzy" matches the text "Z", case insensitively = 2\n
    \n number of times "aaaaaaaa" matches the text "aaaa" = 2\n

    \n
    \n \n\n

    See   20.5. 20.5. Matching and exactly matching

    \n

    Kind: phrase (text, text) -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     replace the text (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the text (text) in (text) with (text)    
    \n optionally  case insensitively\n

    \n\n\n

    This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible. Example:

    \n \n

    replace the text "a" in V with "z"\n

    \n
    \n \n

    changes every lower-case "a" to "z": the same thing done with the "case insensitively" option would change each "a" or "A" to "z".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace the text (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the text (text) in (text) with (text)    
    \n optionally  case insensitively\n

    \n\n\n

    This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible. Example:

    \n \n

    replace the text "a" in V with "z"\n

    \n
    \n \n

    changes every lower-case "a" to "z": the same thing done with the "case insensitively" option would change each "a" or "A" to "z".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     replace the word (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the word (text) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible, where the search text must occur as a whole word. Example:

    \n \n

    replace the word "Bob" in V with "Robert"\n

    \n
    \n \n

    changes "Bob got on the Bobsleigh" to "Robert got on the Bobsleigh".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace the word (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the word (text) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible, where the search text must occur as a whole word. Example:

    \n \n

    replace the word "Bob" in V with "Robert"\n

    \n
    \n \n

    changes "Bob got on the Bobsleigh" to "Robert got on the Bobsleigh".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry constant (text) ^text = "

     replace the punctuated word (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the punctuated word (text) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by searching and replacing, as many non-overlapping times as possible, where the search text must occur as a whole word or run of punctuation.

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     replace character number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace character number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth character, counting from 1. Example:

    \n \n

    let V be "mope";\n
    \n replace character number 3 in V with "lecul";\n
    \n say V;\n

    \n
    \n \n

    says "molecule".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace character number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace character number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth character, counting from 1. Example:

    \n \n

    let V be "mope";\n
    \n replace character number 3 in V with "lecul";\n
    \n say V;\n

    \n
    \n \n

    says "molecule".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     replace word number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace word number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing or punctuation. Example:

    \n \n

    let V be "Does the well run dry?";\n
    \n replace word number 3 in V with "jogger";\n
    \n say V;\n

    \n
    \n \n

    says "Does the jogger run dry?".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace word number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace word number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing or punctuation. Example:

    \n \n

    let V be "Does the well run dry?";\n
    \n replace word number 3 in V with "jogger";\n
    \n say V;\n

    \n
    \n \n

    says "Does the jogger run dry?".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     replace punctuated word number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace punctuated word number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing, counting punctuation runs as words in their own right. Example:

    \n \n

    let V be "Frankly, yes, I agree.";\n
    \n replace punctuated word number 2 in V with ":";\n
    \n say V;\n

    \n
    \n \n

    says "Frankly: yes, I agree.".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace punctuated word number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace punctuated word number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing, counting punctuation runs as words in their own right. Example:

    \n \n

    let V be "Frankly, yes, I agree.";\n
    \n replace punctuated word number 2 in V with ":";\n
    \n say V;\n

    \n
    \n \n

    says "Frankly: yes, I agree.".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

     replace unpunctuated word number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace unpunctuated word number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing, counting punctuation as part of a word just as if it were lettering. Example:

    \n \n

    let V be "Frankly, yes, I agree.";\n
    \n replace unpunctuated word number 2 in V with "of course";\n
    \n say V;\n

    \n
    \n \n

    says "Frankly, of course I agree.".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace unpunctuated word number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace unpunctuated word number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth word, counting from 1, and dividing words at spacing, counting punctuation as part of a word just as if it were lettering. Example:

    \n \n

    let V be "Frankly, yes, I agree.";\n
    \n replace unpunctuated word number 2 in V with "of course";\n
    \n say V;\n

    \n
    \n \n

    says "Frankly, of course I agree.".

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry11 _phrasebook_entry constant (text) ^text = "

     replace line number (number) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace line number (number) in (text) with (text)

    \n\n\n

    This phrase acts on the named text by placing the given text in place of the Nth line, counting from 1. Lines are divided by paragraph or line breaks.

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (number, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry12 _phrasebook_entry @@ -29077,25 +29077,25 @@ package main _plain package phrasebook_entry1 _phrasebook_entry constant (text) ^text = "

     if (text) exactly matches the regular expression (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) exactly matches the regular expression (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if the whole text (starting from the beginning and finishing at the end) can be matched against the given regular expression. The option "case insensitively" causes lower and upper case letters to be treated as equivalent.

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     if (text) matches the regular expression (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) matches the regular expression (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if any contiguous part of the text can be matched against the given regular expression. Examples:

    \n \n

    if "taramasalata" matches the regular expression "a.*l", ...\n

    \n
    \n \n

    is true, since this looks for a part of "taramasalata" which begins with "a", continues with any number of characters, and finishes with "l"; so it matches "aramasal". (Not "asal", because it gets the makes the leftmost match it can.) The option "case insensitively" causes lower and upper case letters to be treated as equivalent.

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (text) matches the regular expression (text):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) matches the regular expression (text):    
    \n optionally  case insensitively\n

    \n\n\n

    This condition is true if any contiguous part of the text can be matched against the given regular expression. Examples:

    \n \n

    if "taramasalata" matches the regular expression "a.*l", ...\n

    \n
    \n \n

    is true, since this looks for a part of "taramasalata" which begins with "a", continues with any number of characters, and finishes with "l"; so it matches "aramasal". (Not "asal", because it gets the makes the leftmost match it can.) The option "case insensitively" causes lower and upper case letters to be treated as equivalent.

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase (text, text) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     text matching regular expression ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     text matching regular expression ... text

    \n\n\n

    This phrase is only meaningful immediately after a successful match of a regular expression against text, and it produces the text which matched. Example:

    \n \n

    if "taramasalata" matches the regular expression "m.*l":\n
    \n     say "[text matching regular expression].";\n

    \n
    \n \n

    says "masal."

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase nothing -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     text matching regular expression ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     text matching regular expression ... text

    \n\n\n

    This phrase is only meaningful immediately after a successful match of a regular expression against text, and it produces the text which matched. Example:

    \n \n

    if "taramasalata" matches the regular expression "m.*l":\n
    \n     say "[text matching regular expression].";\n

    \n
    \n \n

    says "masal."

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase nothing -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     text matching subexpression (number) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     text matching subexpression (number) ... text

    \n\n\n

    This phrase is only meaningful immediately after a successful match of a regular expression against text, and it produces the text which matched. The number must be from 1 to 9, and must correspond to one of the bracketed groups in the expression just match d. Example: after

    \n \n

    if "taramasalata" matches the regular expression "a(r.*l)a(.)":\n

    \n
    \n \n

    the "text matching regular expression" is "aramasalat", the "text matching subexpression 1" is "ramasal", and "text matching subexpression 2" is "t".

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase number -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     text matching subexpression (number) ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     text matching subexpression (number) ... text

    \n\n\n

    This phrase is only meaningful immediately after a successful match of a regular expression against text, and it produces the text which matched. The number must be from 1 to 9, and must correspond to one of the bracketed groups in the expression just match d. Example: after

    \n \n

    if "taramasalata" matches the regular expression "a(r.*l)a(.)":\n

    \n
    \n \n

    the "text matching regular expression" is "aramasalat", the "text matching subexpression 1" is "ramasal", and "text matching subexpression 2" is "t".

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase number -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     number of times (text) matches the regular expression (text) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of times (text) matches the regular expression (text) ... number    
    \n optionally  case insensitively\n

    \n\n\n

    This produces the number of times that contiguous pieces of the text can be matched against the regular expression, without allowing them to overlap.

    \n\n

    See   20.6. 20.6. Regular expression matching

    \n

    Kind: phrase (text, text) -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     replace the regular expression (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the regular expression (text) in (text) with (text)    
    \n optionally  case insensitively\n

    \n\n\n

    This phrase acts on the named text by matching the regular expression and replacing anything which fits it, as many non-overlapping times as possible. Example:

    \n \n

    replace the regular expression "\\d+" in V with "..."\n

    \n
    \n \n

    changes "The Battle of Waterloo, 1815, rivalled Trafalgar, 1805" to "The Battle of Waterloo, ..., rivalled Trafalgar, ...". The "case insensitively" causes lower and upper case letters to be treated as if the same letter.

    \n

    When replacing a regular expression, the replacement text also has a few special meanings (though, thankfully, many fewer than for the expression itself). Once again "\\n" and "\\t" can be used for line break and tab characters, and "\\\\" must be used for an actual backslash. But, very usefully, "\\1" to "\\9" expand as the contents of groups numbered 1 to 9, and "\\0" to the exact text matched. So:

    \n \n

    replace the regular expression "\\d+" in V with "roughly \\0"\n

    \n
    \n \n

    adds the word "roughly" in front of any run of digits in V, because \\0 becomes in turn whichever run of digits matched. And

    \n \n

    replace the regular expression "(\\w+) (.*)" in V with "\\2, \\1"\n

    \n
    \n \n

    performs the transformation "Frank Booth" to "Booth, Frank".

    \n

    Finally, prefixing the number by "l" or "u" forces the text it represents into lower or upper case, respectively. For instance:

    \n \n

    replace the regular expression "\\b(\\w)(\\w*)" in X with "\\u1\\l2";\n

    \n
    \n \n

    changes the casing of X to "title casing", where each individual word is capitalised. (This is a little slow on large texts, since so many matches and replacements are made: it's more efficient to use the official phrases for changing case.)

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     replace the regular expression (text) in (text) with (text)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     replace the regular expression (text) in (text) with (text)    
    \n optionally  case insensitively\n

    \n\n\n

    This phrase acts on the named text by matching the regular expression and replacing anything which fits it, as many non-overlapping times as possible. Example:

    \n \n

    replace the regular expression "\\d+" in V with "..."\n

    \n
    \n \n

    changes "The Battle of Waterloo, 1815, rivalled Trafalgar, 1805" to "The Battle of Waterloo, ..., rivalled Trafalgar, ...". The "case insensitively" causes lower and upper case letters to be treated as if the same letter.

    \n

    When replacing a regular expression, the replacement text also has a few special meanings (though, thankfully, many fewer than for the expression itself). Once again "\\n" and "\\t" can be used for line break and tab characters, and "\\\\" must be used for an actual backslash. But, very usefully, "\\1" to "\\9" expand as the contents of groups numbered 1 to 9, and "\\0" to the exact text matched. So:

    \n \n

    replace the regular expression "\\d+" in V with "roughly \\0"\n

    \n
    \n \n

    adds the word "roughly" in front of any run of digits in V, because \\0 becomes in turn whichever run of digits matched. And

    \n \n

    replace the regular expression "(\\w+) (.*)" in V with "\\2, \\1"\n

    \n
    \n \n

    performs the transformation "Frank Booth" to "Booth, Frank".

    \n

    Finally, prefixing the number by "l" or "u" forces the text it represents into lower or upper case, respectively. For instance:

    \n \n

    replace the regular expression "\\b(\\w)(\\w*)" in X with "\\u1\\l2";\n

    \n
    \n \n

    changes the casing of X to "title casing", where each individual word is capitalised. (This is a little slow on large texts, since so many matches and replacements are made: it's more efficient to use the official phrases for changing case.)

    \n\n

    See   20.8. 20.8. Replacements

    \n

    Kind: phrase (text, text, text) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading28 _phrasebook_heading constant (text) ^text = "Casing of Text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     (text) in lower case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in lower case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with all upper case letters reduced to lower case. Example: "a ticket to Tromsø via Østfold" becomes

    \n \n

    "a ticket to tromsø via østfold"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (text) in lower case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in lower case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with all upper case letters reduced to lower case. Example: "a ticket to Tromsø via Østfold" becomes

    \n \n

    "a ticket to tromsø via østfold"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     (text) in upper case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in upper case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with all upper case letters reduced to lower case. Example: "a ticket to Tromsø via Østfold" becomes

    \n \n

    "A TICKET TO TROMSØ VIA ØSTFOLD"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (text) in upper case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in upper case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with all upper case letters reduced to lower case. Example: "a ticket to Tromsø via Østfold" becomes

    \n \n

    "A TICKET TO TROMSØ VIA ØSTFOLD"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     (text) in title case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in title case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with casing of words changed to title casing: this capitalises the first letter of each word, and lowers the rest. Example: "a ticket to Tromsø via Østfold" becomes

    \n \n

    "A Ticket To Tromsø Via Østfold"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (text) in title case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in title case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with casing of words changed to title casing: this capitalises the first letter of each word, and lowers the rest. Example: "a ticket to Tromsø via Østfold" becomes

    \n \n

    "A Ticket To Tromsø Via Østfold"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     (text) in sentence case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in sentence case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with casing of words changed to sentence casing: this capitalises the first letter of each sentence and reduces the rest to lower case. Example: "a ticket to Tromsø via Østfold" bec mes

    \n \n

    "A ticket to tromsø via østfold"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (text) in sentence case ... text

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (text) in sentence case ... text

    \n\n\n

    This phrase produces a new version of the given text, but with casing of words changed to sentence casing: this capitalises the first letter of each sentence and reduces the rest to lower case. Example: "a ticket to Tromsø via Østfold" bec mes

    \n \n

    "A ticket to tromsø via østfold"\n

    \n
    \n \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> text

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     if (text) is in lower case:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (text) is in lower case:

    \n\n\n

    This condition is true if every character in the text is a lower case letter. Examples: this is true for "wax", but false for "wax seal" or "eZ mOnEy".

    \n\n

    See   20.4. 20.4. Upper and lower case letters

    \n

    Kind: phrase text -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry @@ -29129,31 +29129,31 @@ package main _plain package phrasebook_heading30 _phrasebook_heading constant (text) ^text = "Tables" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     choose a/the/-- row (number) in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- row (number) in/from (table name)

    \n\n\n

    This phrase selects the row with the given number. Row numbers in a table start from 1, so

    \n \n

    choose row 1 from the Table of Recent Monarchs\n

    \n
    \n \n

    selects the top row.

    \n\n

    See   16.5. 16.5. Choosing rows

    \n

    Kind: phrase (number, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     choose a/the/-- row (number) in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- row (number) in/from (table name)

    \n\n\n

    This phrase selects the row with the given number. Row numbers in a table start from 1, so

    \n \n

    choose row 1 from the Table of Recent Monarchs\n

    \n
    \n \n

    selects the top row.

    \n\n

    See   16.5. 16.5. Choosing rows

    \n

    Kind: phrase (number, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     choose a/the/-- row with (table column) of (value) in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- row with (table column) of (value) in/from (table name)

    \n\n\n

    This phrase selects the first row, working down from the top of the given table, in which the given column has the given value. Example:

    \n \n

    choose row with a name of "Victoria" in the Table of Recent Monarchs;\n

    \n
    \n \n

    A run-time problem message is produced if the value isn't found anywhere in that column.

    \n\n

    See   16.5. 16.5. Choosing rows

    \n

    Kind: phrase (Ks valued table column, K, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     choose a/the/-- row with (table column) of (value) in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- row with (table column) of (value) in/from (table name)

    \n\n\n

    This phrase selects the first row, working down from the top of the given table, in which the given column has the given value. Example:

    \n \n

    choose row with a name of "Victoria" in the Table of Recent Monarchs;\n

    \n
    \n \n

    A run-time problem message is produced if the value isn't found anywhere in that column.

    \n\n

    See   16.5. 16.5. Choosing rows

    \n

    Kind: phrase (Ks valued table column, K, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     choose a/the/-- blank row in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- blank row in/from (table name)

    \n\n\n

    This phrase chooses a row in the given table which is currently blank under every column. A run-time problem message is issued if no rows are blank. Example:

    \n \n

    choose a blank row in Table 3;\n
    \n now element entry is "Fluorine";\n
    \n now symbol entry is "F";\n
    \n now atomic number entry is 9;\n
    \n now atomic weight entry is 19;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     choose a/the/-- blank row in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- blank row in/from (table name)

    \n\n\n

    This phrase chooses a row in the given table which is currently blank under every column. A run-time problem message is issued if no rows are blank. Example:

    \n \n

    choose a blank row in Table 3;\n
    \n now element entry is "Fluorine";\n
    \n now symbol entry is "F";\n
    \n now atomic number entry is 9;\n
    \n now atomic weight entry is 19;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

     choose a/the/-- random row in/from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     choose a/the/-- random row in/from (table name)

    \n\n\n

    This phrase makes a uniformly random choice of non-blank rows in the given table. Note that although a table always has at least one row, it can't be guaranteed that it always has a non-blank row, so it's possible for this to fail: if it does, a real-time problem message is thrown.

    \n\n

    See   16.5. 16.5. Choosing rows

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     number of rows in/from (table name) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of rows in/from (table name) ... number

    \n\n\n

    This phrase produces the number of rows (including any blank rows) in the given table. Example:

    \n \n

    number of rows in the Table of Selected Elements\n

    \n
    \n \n\n

    See   16.2. 16.2. Looking up entries

    \n

    Kind: phrase table name -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of rows in/from (table name) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of rows in/from (table name) ... number

    \n\n\n

    This phrase produces the number of rows (including any blank rows) in the given table. Example:

    \n \n

    number of rows in the Table of Selected Elements\n

    \n
    \n \n\n

    See   16.2. 16.2. Looking up entries

    \n

    Kind: phrase table name -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry constant (text) ^text = "

     number of blank rows in/from (table name) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of blank rows in/from (table name) ... number

    \n\n\n

    This phrase produces the number of rows in the given table which are entirely blank (that is, blank under every column).

    \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase table name -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry constant (text) ^text = "

     number of filled rows in/from (table name) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of filled rows in/from (table name) ... number

    \n\n\n

    This phrase produces the number of rows in the given table which are not entirely blank (that is, at least one column has a value in this row).

    \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase table name -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     if there is (a table entry):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if there is (a table entry):

    \n\n\n

    This condition is true if the entry referred to exists, that is, that is, the space for it in the table is not blank. Examples:

    \n \n

    if there is a symbol corresponding to an atomic number of 30 in the Table of Selected Elements ...\n
    \n if there is an atomic number in row 2 of the Table of Selected Elements ...\n

    \n
    \n \n\n

    See   16.7. 16.7. Blank entries

    \n

    Kind: phrase value -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if there is (a table entry):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if there is (a table entry):

    \n\n\n

    This condition is true if the entry referred to exists, that is, that is, the space for it in the table is not blank. Examples:

    \n \n

    if there is a symbol corresponding to an atomic number of 30 in the Table of Selected Elements ...\n
    \n if there is an atomic number in row 2 of the Table of Selected Elements ...\n

    \n
    \n \n\n

    See   16.7. 16.7. Blank entries

    \n

    Kind: phrase value -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     if there is no (a table entry):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if there is no (a table entry):

    \n\n\n

    This condition is true if the entry referred to does not exist, that is, the space for it in the table is blank. Examples:

    \n \n

    if there is no symbol corresponding to an atomic number of 30 in the Table of Selected Elements ...\n
    \n if there is no atomic number in row 2 of the Table of Selected Elements ...\n

    \n
    \n \n\n

    See   16.7. 16.7. Blank entries

    \n

    Kind: phrase value -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if there is no (a table entry):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if there is no (a table entry):

    \n\n\n

    This condition is true if the entry referred to does not exist, that is, the space for it in the table is blank. Examples:

    \n \n

    if there is no symbol corresponding to an atomic number of 30 in the Table of Selected Elements ...\n
    \n if there is no atomic number in row 2 of the Table of Selected Elements ...\n

    \n
    \n \n\n

    See   16.7. 16.7. Blank entries

    \n

    Kind: phrase value -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

     blank out (a table entry)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out (a table entry)

    \n\n\n

    This phrase replaces the entry referred to with a blank, erasing any value previously stored there. Example:

    \n \n

    choose row 1 in the Table of Fish Habitats;\n
    \n blank out the salinity entry;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     blank out (a table entry)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out (a table entry)

    \n\n\n

    This phrase replaces the entry referred to with a blank, erasing any value previously stored there. Example:

    \n \n

    choose row 1 in the Table of Fish Habitats;\n
    \n blank out the salinity entry;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

     blank out the whole row

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out the whole row

    \n\n\n

    This phrase replaces the currently chosen row with blanks, erasing any value previously stored under any of the columns. Example:

    \n \n

    choose row 1 in the Table of Fish Habitats;\n
    \n blank out the whole row;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     blank out the whole row

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out the whole row

    \n\n\n

    This phrase replaces the currently chosen row with blanks, erasing any value previously stored under any of the columns. Example:

    \n \n

    choose row 1 in the Table of Fish Habitats;\n
    \n blank out the whole row;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

     blank out the whole (table column) in/from/of (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out the whole (table column) in/from/of (table name)

    \n\n\n

    This phrase replaces the currently chosen column with blanks, erasing any value previously stored in any of the rows. Example:

    \n \n

    blank out the whole salinity column in the Table of Fish Habitats;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase (table column, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     blank out the whole (table column) in/from/of (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out the whole (table column) in/from/of (table name)

    \n\n\n

    This phrase replaces the currently chosen column with blanks, erasing any value previously stored in any of the rows. Example:

    \n \n

    blank out the whole salinity column in the Table of Fish Habitats;\n

    \n
    \n \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase (table column, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry13 _phrasebook_entry - constant (text) ^text = "

     blank out the whole of (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out the whole of (table name)

    \n\n\n

    This phrase replaces every row of the currently chosen table with blanks, erasing any value previously stored anywhere in it. Example:

    \n \n

    blank out the whole of the Table of Fish Habitats;\n

    \n
    \n \n

    This is only really useful when a Table is being used to hold working space for some calculation or other.

    \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     blank out the whole of (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     blank out the whole of (table name)

    \n\n\n

    This phrase replaces every row of the currently chosen table with blanks, erasing any value previously stored anywhere in it. Example:

    \n \n

    blank out the whole of the Table of Fish Habitats;\n

    \n
    \n \n

    This is only really useful when a Table is being used to hold working space for some calculation or other.

    \n\n

    See   16.10. 16.10. Adding and removing rows

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry14 _phrasebook_entry constant (text) ^text = "

     showme the contents of (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     showme the contents of (table name)

    \n\n\n

    This phrase prints a crude but sometimes useful display on screen of the current contents of the named table. It's intended for authors to see when testing, not for players of the finished version to see.

    \n\n

    See   16.4. 16.4. Changing entries

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry15 _phrasebook_entry @@ -29165,29 +29165,29 @@ package main _plain package phrasebook_heading31 _phrasebook_heading constant (text) ^text = "Sorting Tables" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     sort (table name) in/into random order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (table name) in/into random order

    \n\n\n

    This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, in a uniformly random order, and any blank rows at the bottom. Example:

    \n \n

    sort the Table of Recent Monarchs in random order;\n

    \n
    \n \n\n

    See   16.11. 16.11. Sorting

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (table name) in/into random order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (table name) in/into random order

    \n\n\n

    This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, in a uniformly random order, and any blank rows at the bottom. Example:

    \n \n

    sort the Table of Recent Monarchs in random order;\n

    \n
    \n \n\n

    See   16.11. 16.11. Sorting

    \n

    Kind: phrase table name -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     sort (table name) in/into (table column) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (table name) in/into (table column) order

    \n\n\n

    This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, so that the given column has ascending order, and any blank rows at the bottom. Example:

    \n \n

    sort the Table of Recent Monarchs in accession order;\n

    \n
    \n \n

    Ascending order means 1 up to 10, say, or A up to Z, with blank values coming last.

    \n\n

    See   16.11. 16.11. Sorting

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (table name) in/into (table column) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (table name) in/into (table column) order

    \n\n\n

    This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, so that the given column has ascending order, and any blank rows at the bottom. Example:

    \n \n

    sort the Table of Recent Monarchs in accession order;\n

    \n
    \n \n

    Ascending order means 1 up to 10, say, or A up to Z, with blank values coming last.

    \n\n

    See   16.11. 16.11. Sorting

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     sort (table name) in/into reverse (table column) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (table name) in/into reverse (table column) order

    \n\n\n

    This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, so that the given column has descending order, and any blank rows at the bottom. Example:

    \n \n

    sort the Table of Recent Monarchs in reverse name order;\n

    \n
    \n \n

    Descending order means 10 down to 1, say, or Z down to A, with blank values coming last.

    \n\n

    See   16.11. 16.11. Sorting

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (table name) in/into reverse (table column) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (table name) in/into reverse (table column) order

    \n\n\n

    This phrase rearranges the rows of the given table so that the non-blank rows occur at the top, so that the given column has descending order, and any blank rows at the bottom. Example:

    \n \n

    sort the Table of Recent Monarchs in reverse name order;\n

    \n
    \n \n

    Descending order means 10 down to 1, say, or Z down to A, with blank values coming last.

    \n\n

    See   16.11. 16.11. Sorting

    \n

    Kind: phrase (table name, table column) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading32 _phrasebook_heading constant (text) ^text = "Lists" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     add (value) to (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (value) to (list of values)    
    \n optionally  if absent\n

    \n\n\n

    This phrase adds the given value to the end of the list. Example:

    \n \n

    let L be {60, 168};\n
    \n add 360 to L;\n

    \n
    \n \n

    results in L being {60, 168, 360}. Note that the value is added even if it already occurs somewhere in L; this can be avoided with "if absent". So:

    \n \n

    add 168 to L, if absent;\n

    \n
    \n \n

    would do nothing - it is already there.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (K, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     add (value) to (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (value) to (list of values)    
    \n optionally  if absent\n

    \n\n\n

    This phrase adds the given value to the end of the list. Example:

    \n \n

    let L be {60, 168};\n
    \n add 360 to L;\n

    \n
    \n \n

    results in L being {60, 168, 360}. Note that the value is added even if it already occurs somewhere in L; this can be avoided with "if absent". So:

    \n \n

    add 168 to L, if absent;\n

    \n
    \n \n

    would do nothing - it is already there.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (K, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     add (value) at entry (number) in (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (value) at entry (number) in (list of values)    
    \n optionally  if absent\n

    \n\n\n

    This phrase adds the given value so that it becomes the entry with that index number in the list. Example:

    \n \n

    let L be {1, 2, 3, 4, 8, 24};\n
    \n add 12 at entry 6 in L;\n

    \n
    \n \n

    sets L to {1, 2, 3, 4, 8, 12, 24}. If there are N entries in L, then we can add at any of entries 1 up to N+1: adding at entry N+1 means adding at the end. The phrase option "if absent" makes the phrase do nothing if the value already exists anywhere in L.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (K, number, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     add (value) at entry (number) in (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (value) at entry (number) in (list of values)    
    \n optionally  if absent\n

    \n\n\n

    This phrase adds the given value so that it becomes the entry with that index number in the list. Example:

    \n \n

    let L be {1, 2, 3, 4, 8, 24};\n
    \n add 12 at entry 6 in L;\n

    \n
    \n \n

    sets L to {1, 2, 3, 4, 8, 12, 24}. If there are N entries in L, then we can add at any of entries 1 up to N+1: adding at entry N+1 means adding at the end. The phrase option "if absent" makes the phrase do nothing if the value already exists anywhere in L.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (K, number, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     add (list of values) to (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (list of values) to (list of values)    
    \n optionally  if absent\n

    \n\n\n

    This phrase adds the first list to the end of the second. Example:

    \n \n

    let L be {2, 3, 5, 7};\n
    \n add {11, 13, 17, 19} to L;\n

    \n
    \n \n

    results in L being {2, 3, 5, 7, 11, 13, 17, 19}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (list of Ks, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     add (list of values) to (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (list of values) to (list of values)    
    \n optionally  if absent\n

    \n\n\n

    This phrase adds the first list to the end of the second. Example:

    \n \n

    let L be {2, 3, 5, 7};\n
    \n add {11, 13, 17, 19} to L;\n

    \n
    \n \n

    results in L being {2, 3, 5, 7, 11, 13, 17, 19}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (list of Ks, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     add (list of values) at entry (number) in (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (list of values) at entry (number) in (list of values)

    \n\n\n

    This phrase adds the first list to the second so that it begins at the given position. Example:

    \n \n

    let L be {1, 2, 3, 4};\n
    \n add {4, 8, 12} at entry 3 in L;\n

    \n
    \n \n

    results in L being {1, 2, 4, 8, 12, 3, 4}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (list of Ks, number, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     add (list of values) at entry (number) in (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     add (list of values) at entry (number) in (list of values)

    \n\n\n

    This phrase adds the first list to the second so that it begins at the given position. Example:

    \n \n

    let L be {1, 2, 3, 4};\n
    \n add {4, 8, 12} at entry 3 in L;\n

    \n
    \n \n

    results in L being {1, 2, 4, 8, 12, 3, 4}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (list of Ks, number, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     remove (value) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove (value) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes every instance of the given value from the list. Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove 1 from L;\n

    \n
    \n \n

    results in L being {3, 4, 5, 9, 2, 6, 5, 3}. Ordinarily "remove 7 from L" would produce a run-time problem, since L does not contain the value 7, but using the "if present" option lets us off this: the phrase then does nothing if L does not contain the value to be removed.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (K, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     remove (value) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove (value) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes every instance of the given value from the list. Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove 1 from L;\n

    \n
    \n \n

    results in L being {3, 4, 5, 9, 2, 6, 5, 3}. Ordinarily "remove 7 from L" would produce a run-time problem, since L does not contain the value 7, but using the "if present" option lets us off this: the phrase then does nothing if L does not contain the value to be removed.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (K, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     remove (list of values) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove (list of values) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes every instance of any value in the first list from the second. Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove {0, 2, 4, 6, 8} from L;\n

    \n
    \n \n

    results in L being {3, 1, 1, 5, 9, 5, 3}. If both lists are large, this can be a slow process, and we might do better by sorting them and trying a more sophisticated method. But this is convenient for anything reasonable-sized.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (list of Ks, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     remove (list of values) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove (list of values) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes every instance of any value in the first list from the second. Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove {0, 2, 4, 6, 8} from L;\n

    \n
    \n \n

    results in L being {3, 1, 1, 5, 9, 5, 3}. If both lists are large, this can be a slow process, and we might do better by sorting them and trying a more sophisticated method. But this is convenient for anything reasonable-sized.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (list of Ks, list of Ks) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     remove entry (number) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove entry (number) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes the entry at the given position, counting from 1 as the first entry. (Once it is removed, the other entries shuffle down.) Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove entry 3 from L;\n

    \n
    \n \n

    results in L being {3, 1, 1, 5, 9, 2, 6, 5, 3}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (number, list of values) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     remove entry (number) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove entry (number) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes the entry at the given position, counting from 1 as the first entry. (Once it is removed, the other entries shuffle down.) Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove entry 3 from L;\n

    \n
    \n \n

    results in L being {3, 1, 1, 5, 9, 2, 6, 5, 3}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (number, list of values) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     remove entries (number) to (number) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove entries (number) to (number) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes the entries at the given range of positions, counting from 1 as the first entry. (Once they are removed, the other entries shuffle down.) Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove entries 3 to 6 from L;\n

    \n
    \n \n

    results in L being {3, 1, 2, 6, 5, 3}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (number, number, list of values) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     remove entries (number) to (number) from (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     remove entries (number) to (number) from (list of values)    
    \n optionally  if present\n

    \n\n\n

    This phrase removes the entries at the given range of positions, counting from 1 as the first entry. (Once they are removed, the other entries shuffle down.) Example:

    \n \n

    let L be {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};\n
    \n remove entries 3 to 6 from L;\n

    \n
    \n \n

    results in L being {3, 1, 2, 6, 5, 3}.

    \n\n

    See   21.5. 21.5. Building lists

    \n

    Kind: phrase (number, number, list of values) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry9 _phrasebook_entry constant (text) ^text = "

     if (value) is listed in (list of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) is listed in (list of values):

    \n\n\n

    This condition is true if the given value, which must be of a compatible kind, is one of those in the list. For instance, if L is our list of the numbers 2, 3, 5, 7 and 11 then 5 is listed in it but 6 is not.

    \n\n

    See   21.4. 21.4. Testing and iterating over lists

    \n

    Kind: phrase (K, list of Ks) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry10 _phrasebook_entry @@ -29197,69 +29197,69 @@ package main _plain package phrasebook_heading33 _phrasebook_heading constant (text) ^text = "Length of lists" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     number of entries in/of (list of values) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of entries in/of (list of values) ... number

    \n\n\n

    This phrase produces the number of positions in the list. Example:

    \n \n

    the number of entries in {1, 1, 1, 3, 1}\n

    \n
    \n \n

    is 5, even though there are only two genuinely different items in the list.

    \n\n

    See   21.9. 21.9. Accessing entries in a list

    \n

    Kind: phrase list of values -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of entries in/of (list of values) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of entries in/of (list of values) ... number

    \n\n\n

    This phrase produces the number of positions in the list. Example:

    \n \n

    the number of entries in {1, 1, 1, 3, 1}\n

    \n
    \n \n

    is 5, even though there are only two genuinely different items in the list.

    \n\n

    See   21.9. 21.9. Accessing entries in a list

    \n

    Kind: phrase list of values -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     truncate (list of values) to (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     truncate (list of values) to (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now has no more than the number of entries given. Example:

    \n \n

    truncate L to 8 entries;\n

    \n
    \n \n

    shortens L to length 8 if it is currently longer than that, trimming entries from the end, but would (for instance) leave a list of length 3 unchanged. Note that

    \n \n

    truncate L to 0 entries;\n

    \n
    \n \n

    empties it to { }, the list with nothing in.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     truncate (list of values) to (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     truncate (list of values) to (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now has no more than the number of entries given. Example:

    \n \n

    truncate L to 8 entries;\n

    \n
    \n \n

    shortens L to length 8 if it is currently longer than that, trimming entries from the end, but would (for instance) leave a list of length 3 unchanged. Note that

    \n \n

    truncate L to 0 entries;\n

    \n
    \n \n

    empties it to { }, the list with nothing in.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     truncate (list of values) to the first (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     truncate (list of values) to the first (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now consists only of the initial part of the list with the given length. Example:

    \n \n

    truncate L to the first 4 entries;\n

    \n
    \n \n

    turns {1, 3, 5, 7, 9, 11} to {1, 3, 5, 7}.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     truncate (list of values) to the first (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     truncate (list of values) to the first (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now consists only of the initial part of the list with the given length. Example:

    \n \n

    truncate L to the first 4 entries;\n

    \n
    \n \n

    turns {1, 3, 5, 7, 9, 11} to {1, 3, 5, 7}.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     truncate (list of values) to the last (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     truncate (list of values) to the last (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now consists only of the final part of the list with the given length. Example:

    \n \n

    truncate L to the last 4 entries;\n

    \n
    \n \n

    turns {1, 3, 5, 7, 9, 11} to {5, 7, 9, 11}.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     truncate (list of values) to the last (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     truncate (list of values) to the last (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now consists only of the final part of the list with the given length. Example:

    \n \n

    truncate L to the last 4 entries;\n

    \n
    \n \n

    turns {1, 3, 5, 7, 9, 11} to {5, 7, 9, 11}.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     extend (list of values) to (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     extend (list of values) to (number) entries/entry

    \n\n\n

    This phrase pads out the list with default values as needed so that it now has at least the given length. (If the list is already at least that length, nothing is done.) Example:

    \n \n

    extend L to 80 entries;\n

    \n
    \n \n

    lengthens L to length 80 if it is currently shorter than that.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     extend (list of values) to (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     extend (list of values) to (number) entries/entry

    \n\n\n

    This phrase pads out the list with default values as needed so that it now has at least the given length. (If the list is already at least that length, nothing is done.) Example:

    \n \n

    extend L to 80 entries;\n

    \n
    \n \n

    lengthens L to length 80 if it is currently shorter than that.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     change (list of values) to have (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     change (list of values) to have (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now has exactly the number of entries given. Example:

    \n \n

    change L to have 21 entries;\n

    \n
    \n \n

    If L previously had more than 21 entries, they are thrown away (and lost forever); if L previously had fewer, then new entries are created, using the default value for whatever kind of value L holds. So extending a list of numbers will pad it out with 0s, but extending a list of texts will pad it out with the empty text "", and so on.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     change (list of values) to have (number) entries/entry

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     change (list of values) to have (number) entries/entry

    \n\n\n

    This phrase alters the given list so that it now has exactly the number of entries given. Example:

    \n \n

    change L to have 21 entries;\n

    \n
    \n \n

    If L previously had more than 21 entries, they are thrown away (and lost forever); if L previously had fewer, then new entries are created, using the default value for whatever kind of value L holds. So extending a list of numbers will pad it out with 0s, but extending a list of texts will pad it out with the empty text "", and so on.

    \n\n

    See   21.10. 21.10. Lengthening or shortening a list

    \n

    Kind: phrase (list of values, number) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading34 _phrasebook_heading constant (text) ^text = "List operations" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     reverse (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     reverse (list of values)

    \n\n\n

    This phrase puts the list in reverse order. The old entry 1 becomes the new last entry, and so on: reversing an empty list or a list containing only one entry leaves it unchanged. Example:

    \n \n

    let L be {11, 12, 14, 15, 16, 17};\n
    \n reverse L;\n

    \n
    \n \n

    results in L being {17, 16, 15, 14, 12, 11}.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     reverse (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     reverse (list of values)

    \n\n\n

    This phrase puts the list in reverse order. The old entry 1 becomes the new last entry, and so on: reversing an empty list or a list containing only one entry leaves it unchanged. Example:

    \n \n

    let L be {11, 12, 14, 15, 16, 17};\n
    \n reverse L;\n

    \n
    \n \n

    results in L being {17, 16, 15, 14, 12, 11}.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     rotate (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     rotate (list of values)

    \n\n\n

    This phrase shuffles the entries of the list forwards (to the right) by one place, so that the 1st becomes 2nd, the 2nd becomes 3rd, and so on until the last, which becomes the new first entry. Example:

    \n \n

    let L be { "cow", "heifer", "bullock" };\n
    \n rotate L;\n

    \n
    \n \n

    results in L being { "bullock", "cow", "heifer" }.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     rotate (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     rotate (list of values)

    \n\n\n

    This phrase shuffles the entries of the list forwards (to the right) by one place, so that the 1st becomes 2nd, the 2nd becomes 3rd, and so on until the last, which becomes the new first entry. Example:

    \n \n

    let L be { "cow", "heifer", "bullock" };\n
    \n rotate L;\n

    \n
    \n \n

    results in L being { "bullock", "cow", "heifer" }.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     rotate (list of values) backwards

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     rotate (list of values) backwards

    \n\n\n

    This phrase shuffles the entries of the list backwards (to the left) by one place, so that the 3rd becomes 2nd, the 2nd becomes 1st, and so on; the previous 1st entry becomes the new last entry. Example:

    \n \n

    let L be { "cow", "heifer", "bullock" };\n
    \n rotate L backwards;\n

    \n
    \n \n

    results in L being { "heifer", "bullock", "cow"}. (This achieves the same effect as "reverse L; rotate L; reverse L;" but is a little faster, and a lot less effort to read.)

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     rotate (list of values) backwards

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     rotate (list of values) backwards

    \n\n\n

    This phrase shuffles the entries of the list backwards (to the left) by one place, so that the 3rd becomes 2nd, the 2nd becomes 1st, and so on; the previous 1st entry becomes the new last entry. Example:

    \n \n

    let L be { "cow", "heifer", "bullock" };\n
    \n rotate L backwards;\n

    \n
    \n \n

    results in L being { "heifer", "bullock", "cow"}. (This achieves the same effect as "reverse L; rotate L; reverse L;" but is a little faster, and a lot less effort to read.)

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     sort (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of values)

    \n\n\n

    This phrase puts the list into ascending order. Example:

    \n \n

    let L be {6 PM, 11:13 AM, 4:21 PM, 9:01 AM};\n
    \n sort L;\n

    \n
    \n \n

    results in L being {9:01 AM, 11:13 AM, 4:21 PM, 6 PM}.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (list of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of values)

    \n\n\n

    This phrase puts the list into ascending order. Example:

    \n \n

    let L be {6 PM, 11:13 AM, 4:21 PM, 9:01 AM};\n
    \n sort L;\n

    \n
    \n \n

    results in L being {9:01 AM, 11:13 AM, 4:21 PM, 6 PM}.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     sort (list of values) in/into reverse order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of values) in/into reverse order

    \n\n\n

    This phrase puts the list into descending order. Example:

    \n \n

    let L be {6 PM, 11:13 AM, 4:21 PM, 9:01 AM};\n
    \n sort L in reverse order;\n

    \n
    \n \n

    results in L being {6 PM, 4:21 PM, 11:13 AM, 9:01 AM}.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (list of values) in/into reverse order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of values) in/into reverse order

    \n\n\n

    This phrase puts the list into descending order. Example:

    \n \n

    let L be {6 PM, 11:13 AM, 4:21 PM, 9:01 AM};\n
    \n sort L in reverse order;\n

    \n
    \n \n

    results in L being {6 PM, 4:21 PM, 11:13 AM, 9:01 AM}.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     sort (list of values) in/into random order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of values) in/into random order

    \n\n\n

    This phrase puts the list into a uniformly random order, shuffling it as if it were a pack of cards. Example:

    \n \n

    let L be {1, 2, 3, 4, 5, 6};\n
    \n sort L in random order;\n

    \n
    \n \n

    might result in L being {3, 1, 5, 6, 4, 2}. Or any of 719 other arrangements, including being left as it was.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (list of values) in/into random order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of values) in/into random order

    \n\n\n

    This phrase puts the list into a uniformly random order, shuffling it as if it were a pack of cards. Example:

    \n \n

    let L be {1, 2, 3, 4, 5, 6};\n
    \n sort L in random order;\n

    \n
    \n \n

    might result in L being {3, 1, 5, 6, 4, 2}. Or any of 719 other arrangements, including being left as it was.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase list of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     sort (list of objects) in/into (property) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of objects) in/into (property) order

    \n\n\n

    This phrase puts the list into ascending order of the values of the given property for the items in the list; this is only allowed if all of those values do have the property in question. Example:

    \n \n

    let L be the list of people;\n
    \n sort L in carrying capacity order;\n

    \n
    \n \n

    would arrange people with weaklings first, titans last.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase (list of objects, property) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (list of objects) in/into (property) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of objects) in/into (property) order

    \n\n\n

    This phrase puts the list into ascending order of the values of the given property for the items in the list; this is only allowed if all of those values do have the property in question. Example:

    \n \n

    let L be the list of people;\n
    \n sort L in carrying capacity order;\n

    \n
    \n \n

    would arrange people with weaklings first, titans last.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase (list of objects, property) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     sort (list of objects) in/into reverse (property) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of objects) in/into reverse (property) order

    \n\n\n

    This phrase puts the list into descending order of the values of the given property for the items in the list; this is only allowed if all of those values do have the property in question. Example:

    \n \n

    let L be the list of people;\n
    \n sort L in reverse carrying capacity order;\n

    \n
    \n \n

    would arrange people with titans first, weaklings last.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase (list of objects, property) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     sort (list of objects) in/into reverse (property) order

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     sort (list of objects) in/into reverse (property) order

    \n\n\n

    This phrase puts the list into descending order of the values of the given property for the items in the list; this is only allowed if all of those values do have the property in question. Example:

    \n \n

    let L be the list of people;\n
    \n sort L in reverse carrying capacity order;\n

    \n
    \n \n

    would arrange people with titans first, weaklings last.

    \n\n

    See   21.8. 21.8. Sorting, reversing and rotating lists

    \n

    Kind: phrase (list of objects, property) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading35 _phrasebook_heading constant (text) ^text = "Relations" package phrasebook_entry1 _phrasebook_entry constant (text) ^text = "

     show relation (relation of values)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     show relation (relation of values)

    \n\n\n

    This phrase is for testing purposes only. It shows the current state of the named relation, that is, it shows which values relate to which other ones, where it's possible to do this in any sensible way.

    \n\n

    See   13.7. 13.7. Relations in groups

    \n

    Kind: phrase relation of values -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     next step via (relation of objects) from (object) to (object) ... object

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     next step via (relation of objects) from (object) to (object) ... object

    \n\n\n

    This phrase tries to find a shortest route between the two given endpoints, using the given relation of objects to determine single steps. Example:

    \n \n

    next step via the overlooking relation from the Folly to the Chinese Lake\n

    \n
    \n \n

    The result is the special object value "nothing" if the two endpoints are the same or if no route exists.

    \n\n

    See   13.11. 13.11. Indirect relations

    \n

    Kind: phrase (relation of objects, object, object) -> object

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     next step via (relation of objects) from (object) to (object) ... object

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     next step via (relation of objects) from (object) to (object) ... object

    \n\n\n

    This phrase tries to find a shortest route between the two given endpoints, using the given relation of objects to determine single steps. Example:

    \n \n

    next step via the overlooking relation from the Folly to the Chinese Lake\n

    \n
    \n \n

    The result is the special object value "nothing" if the two endpoints are the same or if no route exists.

    \n\n

    See   13.11. 13.11. Indirect relations

    \n

    Kind: phrase (relation of objects, object, object) -> object

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     number of steps via (relation of objects) from (object) to (object) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of steps via (relation of objects) from (object) to (object) ... number

    \n\n\n

    This phrase tries to find the length of a shortest route between the two given endpoints, using the given relation of objects to determine single steps. Example:

    \n \n

    number of steps via the overlooking relation from the Folly to the Chinese Lake\n

    \n
    \n \n

    The result is 0 if the two endpoints are the same, or -1 if no route exists.

    \n\n

    See   13.11. 13.11. Indirect relations

    \n

    Kind: phrase (relation of objects, object, object) -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     number of steps via (relation of objects) from (object) to (object) ... number

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     number of steps via (relation of objects) from (object) to (object) ... number

    \n\n\n

    This phrase tries to find the length of a shortest route between the two given endpoints, using the given relation of objects to determine single steps. Example:

    \n \n

    number of steps via the overlooking relation from the Folly to the Chinese Lake\n

    \n
    \n \n

    The result is 0 if the two endpoints are the same, or -1 if no route exists.

    \n\n

    See   13.11. 13.11. Indirect relations

    \n

    Kind: phrase (relation of objects, object, object) -> number

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     list of (name of kind) that/which/whom (relation of values) relates ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) that/which/whom (relation of values) relates ... value

    \n\n\n

    This phrase produces a list of all X which relate to anything under the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts which the partnership relation relates\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, relation of Ks to Ls) -> list of Ks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     list of (name of kind) that/which/whom (relation of values) relates ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) that/which/whom (relation of values) relates ... value

    \n\n\n

    This phrase produces a list of all X which relate to anything under the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts which the partnership relation relates\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, relation of Ks to Ls) -> list of Ks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry constant (text) ^text = "

     list of (name of kind) to which/whom (relation of values) relates ... value

    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     list of (name of kind) that/which/whom (relation of values) relates to ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) to which/whom (relation of values) relates ... value

    \n\n\n

    This phrase produces a list of all Y which anything relates to under the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts which the partnership relation relates to\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (L, relation of Ks to Ls) -> list of Ls

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     list of (name of kind) that/which/whom (relation of values) relates to ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) to which/whom (relation of values) relates ... value

    \n\n\n

    This phrase produces a list of all Y which anything relates to under the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts which the partnership relation relates to\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (L, relation of Ks to Ls) -> list of Ls

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

    \n\n\n

    This phrase produces a list of all the X such that X relates to the given value V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts which relate to "cheese" by the partnership relation\n

    \n
    \n \n

    which might be, say, { "chalk", "grapes", "macaroni" }. The answer might be the empty set, but that's not a problem.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> list of Ks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) that/which/who relate to (value) by (relation of values) ... value

    \n\n\n

    This phrase produces a list of all the X such that X relates to the given value V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts which relate to "cheese" by the partnership relation\n

    \n
    \n \n

    which might be, say, { "chalk", "grapes", "macaroni" }. The answer might be the empty set, but that's not a problem.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> list of Ks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry constant (text) ^text = "

     list of (name of kind) to which/whom (value) relates by (relation of values) ... value

    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     list of (name of kind) that/which/whom (value) relates to by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) to which/whom (value) relates by (relation of values) ... value

    \n\n\n

    This phrase produces a list of all Y such that the given value V relates to Y by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts to which "chalk" relates by the partnership relation\n

    \n
    \n \n

    which might be, say, { "cheese", "blackboard", "cliffs" }. The answer might be the empty set, but that's not a problem.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (L, K, relation of Ks to Ls) -> list of Ls

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     list of (name of kind) that/which/whom (value) relates to by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     list of (name of kind) to which/whom (value) relates by (relation of values) ... value

    \n\n\n

    This phrase produces a list of all Y such that the given value V relates to Y by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    list of texts to which "chalk" relates by the partnership relation\n

    \n
    \n \n

    which might be, say, { "cheese", "blackboard", "cliffs" }. The answer might be the empty set, but that's not a problem.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (L, K, relation of Ks to Ls) -> list of Ls

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry10 _phrasebook_entry - constant (text) ^text = "

     if (name of kind) relates to (value) by (relation of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (name of kind) relates to (value) by (relation of values):

    \n\n\n

    This condition is true if the value V is such that something relates to V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can test

    \n \n

    if a text relates to "cheese" by the partnership relation, ...\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (name of kind) relates to (value) by (relation of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (name of kind) relates to (value) by (relation of values):

    \n\n\n

    This condition is true if the value V is such that something relates to V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can test

    \n \n

    if a text relates to "cheese" by the partnership relation, ...\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry11 _phrasebook_entry - constant (text) ^text = "

     if (value) relates to (name of kind) by (relation of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) relates to (name of kind) by (relation of values):

    \n\n\n

    This condition is true if the value V is such that V relates to something by the given relation. Example: suppose partnership relates various texts to various texts. Then we can test

    \n \n

    if "chalk" relates to a text by the partnership relation, ...\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (value) relates to (name of kind) by (relation of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) relates to (name of kind) by (relation of values):

    \n\n\n

    This condition is true if the value V is such that V relates to something by the given relation. Example: suppose partnership relates various texts to various texts. Then we can test

    \n \n

    if "chalk" relates to a text by the partnership relation, ...\n

    \n
    \n \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry12 _phrasebook_entry - constant (text) ^text = "

     (name of kind) that/which/who relates to (value) by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) that/which/who relates to (value) by (relation of values) ... value

    \n\n\n

    This phrase produces an X such that X relates to the given value V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    the text which relates to "cheese" by the partnership relation\n

    \n
    \n \n

    which might be, say, "chalk". It's a run-time problem to use this if no such X exists.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (name of kind) that/which/who relates to (value) by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) that/which/who relates to (value) by (relation of values) ... value

    \n\n\n

    This phrase produces an X such that X relates to the given value V by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    the text which relates to "cheese" by the partnership relation\n

    \n
    \n \n

    which might be, say, "chalk". It's a run-time problem to use this if no such X exists.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (K, L, relation of Ks to Ls) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry13 _phrasebook_entry constant (text) ^text = "

     (name of kind) to which/whom (value) relates by (relation of values) ... value

    \n" package phrasebook_entry14 _phrasebook_entry - constant (text) ^text = "

     (name of kind) that/which/whom (value) relates to by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) to which/whom (value) relates by (relation of values) ... value

    \n\n\n

    This phrase produces an Y such that the given value V relates to Y by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    the text to which "chalk" relates by the partnership relation\n

    \n
    \n \n

    which might be, say, "cheese". It's a run-time problem to use this if no such Y exists.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (L, K, relation of Ks to Ls) -> L

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (name of kind) that/which/whom (value) relates to by (relation of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) to which/whom (value) relates by (relation of values) ... value

    \n\n\n

    This phrase produces an Y such that the given value V relates to Y by the given relation. Example: suppose partnership relates various texts to various texts. Then we can obtain

    \n \n

    the text to which "chalk" relates by the partnership relation\n

    \n
    \n \n

    which might be, say, "cheese". It's a run-time problem to use this if no such Y exists.

    \n\n

    See   13.13. 13.13. Relations involving values

    \n

    Kind: phrase (L, K, relation of Ks to Ls) -> L

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading36 _phrasebook_heading constant (text) ^text = "Applying Functions" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     if (value) matches (description of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) matches (description of values):

    \n\n\n

    This condition is true if the value matches the description; the kinds must be compatible, or Inform will issue a problem message. There is no point using this for cases where the description is given explicitly:

    \n \n

    if 4 matches even numbers, ...\n

    \n
    \n \n

    because it is easier to write just:

    \n \n

    if 4 is an even number, ...\n

    \n
    \n \n

    So this condition is only useful when the description is stored in some variable, and its identity is not known.

    \n\n

    See   22.2. 22.2. Descriptions as values

    \n

    Kind: phrase (K, description of Ks) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (value) matches (description of values):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (value) matches (description of values):

    \n\n\n

    This condition is true if the value matches the description; the kinds must be compatible, or Inform will issue a problem message. There is no point using this for cases where the description is given explicitly:

    \n \n

    if 4 matches even numbers, ...\n

    \n
    \n \n

    because it is easier to write just:

    \n \n

    if 4 is an even number, ...\n

    \n
    \n \n

    So this condition is only useful when the description is stored in some variable, and its identity is not known.

    \n\n

    See   22.2. 22.2. Descriptions as values

    \n

    Kind: phrase (K, description of Ks) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry constant (text) ^text = "

     (phrase nothing -> value) applied ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (phrase nothing -> value) applied ... value

    \n\n\n

    This phrase produces the result of applying the given phrase, which must be one which takes no values itself.

    \n\n

    See   22.3. 22.3. Phrases as values

    \n

    Kind: phrase phrase nothing -> K -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry @@ -29279,45 +29279,45 @@ package main _plain package phrasebook_heading37 _phrasebook_heading constant (text) ^text = "Working with Lists" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     (phrase nothing -> value) applied to (list of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (phrase nothing -> value) applied to (list of values) ... value

    \n\n\n

    This phrase takes the list, applies the phrase to each entry in the list, and forms a new list of the result. Example:

    \n \n

    To decide what number is double (N - a number) (this is doubling):\n
    \n     decide on N plus N.\n

    \n
    \n \n

    Then "doubling applied to 2" produces 4, by the simpler definition of "applied to", but also:

    \n \n

    doubling applied to {2, 3, 4}\n

    \n
    \n \n

    produces the list {4, 6, 8}.

    \n\n

    See   22.5. 22.5. Map, filter and reduce

    \n

    Kind: phrase (phrase K -> L, list of Ks) -> list of Ls

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (phrase nothing -> value) applied to (list of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (phrase nothing -> value) applied to (list of values) ... value

    \n\n\n

    This phrase takes the list, applies the phrase to each entry in the list, and forms a new list of the result. Example:

    \n \n

    To decide what number is double (N - a number) (this is doubling):\n
    \n     decide on N plus N.\n

    \n
    \n \n

    Then "doubling applied to 2" produces 4, by the simpler definition of "applied to", but also:

    \n \n

    doubling applied to {2, 3, 4}\n

    \n
    \n \n

    produces the list {4, 6, 8}.

    \n\n

    See   22.5. 22.5. Map, filter and reduce

    \n

    Kind: phrase (phrase K -> L, list of Ks) -> list of Ls

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

    \n\n\n

    This phrase works through the list and accumulates the values in it, using the phrase supplied. Example: if we have

    \n \n

    To decide what number is the sum of (N - number) and (M - number)\n
    \n     (this is summing):\n
    \n     decide on N + M.\n

    \n
    \n \n

    then the summing reduction of {3, 8, 4, 19, 7} is the number 41, obtained by

    \n \n

    (((3 + 8) + 4) + 19) + 7\n

    \n
    \n \n

    so that the summing phrase has been used four times.

    \n\n

    See   22.5. 22.5. Map, filter and reduce

    \n

    Kind: phrase (phrase (K, K) -> K, list of Ks) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (phrase (nothing, nothing) -> value) reduction of (list of values) ... value

    \n\n\n

    This phrase works through the list and accumulates the values in it, using the phrase supplied. Example: if we have

    \n \n

    To decide what number is the sum of (N - number) and (M - number)\n
    \n     (this is summing):\n
    \n     decide on N + M.\n

    \n
    \n \n

    then the summing reduction of {3, 8, 4, 19, 7} is the number 41, obtained by

    \n \n

    (((3 + 8) + 4) + 19) + 7\n

    \n
    \n \n

    so that the summing phrase has been used four times.

    \n\n

    See   22.5. 22.5. Map, filter and reduce

    \n

    Kind: phrase (phrase (K, K) -> K, list of Ks) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     filter to (description of values) of (list of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     filter to (description of values) of (list of values) ... value

    \n\n\n

    This phrase produces a new list which is a thinner version of the one given, so that it contains only those values which match the description given. Example:

    \n \n

    filter to even numbers of {3, 8, 4, 19, 7}\n

    \n
    \n \n

    produces {8, 4}, with the values 3, 19, and 7 failing to make it through. A sufficiently fine filter may well thin out a list to a single entry, or even no entries at all, but the result is always a list.

    \n\n

    See   22.5. 22.5. Map, filter and reduce

    \n

    Kind: phrase (description of Ks, list of Ks) -> list of Ks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     filter to (description of values) of (list of values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     filter to (description of values) of (list of values) ... value

    \n\n\n

    This phrase produces a new list which is a thinner version of the one given, so that it contains only those values which match the description given. Example:

    \n \n

    filter to even numbers of {3, 8, 4, 19, 7}\n

    \n
    \n \n

    produces {8, 4}, with the values 3, 19, and 7 failing to make it through. A sufficiently fine filter may well thin out a list to a single entry, or even no entries at all, but the result is always a list.

    \n\n

    See   22.5. 22.5. Map, filter and reduce

    \n

    Kind: phrase (description of Ks, list of Ks) -> list of Ks

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading38 _phrasebook_heading constant (text) ^text = "Carrying out Activities" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     carry out the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     carry out the (activity) activity

    \n\n\n

    This phrase carries out the given activity, which must be one not applying to any value. Example:

    \n \n

    carry out the assaying activity;\n

    \n
    \n \n\n

    See   18.5. 18.5. New activities

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     carry out the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     carry out the (activity) activity

    \n\n\n

    This phrase carries out the given activity, which must be one not applying to any value. Example:

    \n \n

    carry out the assaying activity;\n

    \n
    \n \n\n

    See   18.5. 18.5. New activities

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     carry out the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     carry out the (activity) activity with (value)

    \n\n\n

    This phrase carries out the given activity, which must apply to a kind of value matching the one supplied. Example:

    \n \n

    carry out the analysing activity with the pitchblende;\n
    \n carry out the announcing activity with the score;\n

    \n
    \n \n\n

    See   18.5. 18.5. New activities

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     carry out the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     carry out the (activity) activity with (value)

    \n\n\n

    This phrase carries out the given activity, which must apply to a kind of value matching the one supplied. Example:

    \n \n

    carry out the analysing activity with the pitchblende;\n
    \n carry out the announcing activity with the score;\n

    \n
    \n \n\n

    See   18.5. 18.5. New activities

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

     continue the activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     continue the activity

    \n\n\n

    This phrase should be used only in rules in activity rulebooks. It causes the current rule to end, but without result, so that the activity continues rather than stopping as a result of the rule. This is useful for rulebooks like the "for" rulebook of an activity) where the default is that a rule does stop the activity.

    \n\n

    See   18.5. 18.5. New activities

    \n

    Kind: phrase nothing -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading39 _phrasebook_heading constant (text) ^text = "Advanced Activities" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     begin the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     begin the (activity) activity

    \n\n\n

    This phrase causes the named activity to become active, and runs its "before" rulebook. The activity must be one which applies to nothing. Example:

    \n \n

    begin the assaying activity;\n

    \n
    \n \n

    In all cases a matching "end the ... activity" or else "abandon the ... activity" phrase must be reached.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     begin the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     begin the (activity) activity

    \n\n\n

    This phrase causes the named activity to become active, and runs its "before" rulebook. The activity must be one which applies to nothing. Example:

    \n \n

    begin the assaying activity;\n

    \n
    \n \n

    In all cases a matching "end the ... activity" or else "abandon the ... activity" phrase must be reached.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     begin the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     begin the (activity) activity with (value)

    \n\n\n

    This phrase causes the named activity to become active, and runs its "before" rulebook. The activity must be one which applies to a value of a matching kind. Example:

    \n \n

    begin the analysing activity with the pitchblende;\n

    \n
    \n \n

    In all cases a matching "end the ... activity with ..." or else "abandon the ... activity with..." phrase must be reached.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     begin the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     begin the (activity) activity with (value)

    \n\n\n

    This phrase causes the named activity to become active, and runs its "before" rulebook. The activity must be one which applies to a value of a matching kind. Example:

    \n \n

    begin the analysing activity with the pitchblende;\n

    \n
    \n \n

    In all cases a matching "end the ... activity with ..." or else "abandon the ... activity with..." phrase must be reached.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry constant (text) ^text = "

     if handling (activity) activity:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if handling (activity) activity:

    \n\n\n

    This should be used only where the given activity has been started with "begin ..." and will be finished with "end ...". It runs the "for" rules for the activity, and then comes out true if none of those for rules intervened in the handling of that activity. (The activity must be one which doesn't apply to any value.)

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

     if handling (activity) activity with (value):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if handling (activity) activity with (value):

    \n\n\n

    This should be used only where the given activity has been started with "begin ..." and will be finished with "end ...". It runs the "for" rules for the activity, and then comes out true if none of those for rules intervened in the handling of that activity. (The given value m st be the one it is being applied to.)

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     end the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     end the (activity) activity

    \n\n\n

    This phrase runs the "after" rulebook of the activity and then causes it to become inactive. The activity must be one which applies to nothing. Example:

    \n \n

    end the assaying activity;\n

    \n
    \n \n

    This must only happen to match an earlier "begin the ... activity" phrase.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     end the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     end the (activity) activity

    \n\n\n

    This phrase runs the "after" rulebook of the activity and then causes it to become inactive. The activity must be one which applies to nothing. Example:

    \n \n

    end the assaying activity;\n

    \n
    \n \n

    This must only happen to match an earlier "begin the ... activity" phrase.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     end the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     end the (activity) activity with (value)

    \n\n\n

    This phrase runs the "after" rulebook of the activity and then causes it to become inactive. The activity must be one which applies to a value of a matching kind. Example:

    \n \n

    end the analysing activity with the pitchblende;\n

    \n
    \n \n

    This must only happen to match an earlier "begin the ... activity with..." phrase.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     end the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     end the (activity) activity with (value)

    \n\n\n

    This phrase runs the "after" rulebook of the activity and then causes it to become inactive. The activity must be one which applies to a value of a matching kind. Example:

    \n \n

    end the analysing activity with the pitchblende;\n

    \n
    \n \n

    This must only happen to match an earlier "begin the ... activity with..." phrase.

    \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     abandon the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abandon the (activity) activity

    \n\n\n

    This phrase ends an activity at once (without consulting any further rulebooks, including its "after" rulebook). It can only be used with an activity which has had its "begin" but not yet its "end" phrase; it is a drastic remedy best taken o ly if it is clear that circumstances have changed so that the activity now seems inappropriate. It must not be used during one of the rules for the activity: it can only be used between the begin and for stages, or between the for and end stages.

    \n \n

    abandon the assaying activity;\n

    \n
    \n \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     abandon the (activity) activity

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abandon the (activity) activity

    \n\n\n

    This phrase ends an activity at once (without consulting any further rulebooks, including its "after" rulebook). It can only be used with an activity which has had its "begin" but not yet its "end" phrase; it is a drastic remedy best taken o ly if it is clear that circumstances have changed so that the activity now seems inappropriate. It must not be used during one of the rules for the activity: it can only be used between the begin and for stages, or between the for and end stages.

    \n \n

    abandon the assaying activity;\n

    \n
    \n \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase activity -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry - constant (text) ^text = "

     abandon the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abandon the (activity) activity with (value)

    \n\n\n

    This phrase ends an activity at once (without consulting any further rulebooks, including its "after" rulebook). It can only be used with an activity which has had its "begin" but not yet its "end" phrase; it is a drastic remedy best taken only if it is clear that circumstan es have changed so that the activity now seems inappropriate. It must not be used during one of the rules for the activity: it can only be used between the begin and for stages, or between the for and end stages.

    \n \n

    abandon the analysing activity with the pitchblende;\n

    \n
    \n \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     abandon the (activity) activity with (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abandon the (activity) activity with (value)

    \n\n\n

    This phrase ends an activity at once (without consulting any further rulebooks, including its "after" rulebook). It can only be used with an activity which has had its "begin" but not yet its "end" phrase; it is a drastic remedy best taken only if it is clear that circumstan es have changed so that the activity now seems inappropriate. It must not be used during one of the rules for the activity: it can only be used between the begin and for stages, or between the for and end stages.

    \n \n

    abandon the analysing activity with the pitchblende;\n

    \n
    \n \n\n

    See   18.7. 18.7. Beginning and ending activities manually

    \n

    Kind: phrase (activity on Ks, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading40 _phrasebook_heading constant (text) ^text = "Following Rules" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     follow (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     follow (nothing based rule)

    \n\n\n

    This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such). Example:

    \n \n

    follow the advance time rule;\n
    \n follow the appraisal rulebook;\n

    \n
    \n \n\n

    See   19.8. 19.8. New rulebooks

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     follow (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     follow (nothing based rule)

    \n\n\n

    This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such). Example:

    \n \n

    follow the advance time rule;\n
    \n follow the appraisal rulebook;\n

    \n
    \n \n\n

    See   19.8. 19.8. New rulebooks

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     follow (nothing based rule producing values) for (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     follow (nothing based rule producing values) for (value)

    \n\n\n

    This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such), and applies it to the value given, which must be of a matching kind. Example:

    \n \n

    follow the reaching inside rulebook for the electrified cage;\n

    \n
    \n \n\n

    See   19.9. 19.9. Basis of a rulebook

    \n

    Kind: phrase (Ks based rule producing values, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     follow (nothing based rule producing values) for (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     follow (nothing based rule producing values) for (value)

    \n\n\n

    This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such), and applies it to the value given, which must be of a matching kind. Example:

    \n \n

    follow the reaching inside rulebook for the electrified cage;\n

    \n
    \n \n\n

    See   19.9. 19.9. Basis of a rulebook

    \n

    Kind: phrase (Ks based rule producing values, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     follow (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     follow (nothing based rule)

    \n\n\n

    This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such). Example:

    \n \n

    follow the advance time rule;\n
    \n follow the appraisal rulebook;\n

    \n
    \n \n\n

    See   19.8. 19.8. New rulebooks

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     follow (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     follow (nothing based rule)

    \n\n\n

    This phrase causes the rule to be obeyed immediately (rather than simply at predetermined times such as when a particular action is being tried, or at the end of every turn, and such). Example:

    \n \n

    follow the advance time rule;\n
    \n follow the appraisal rulebook;\n

    \n
    \n \n\n

    See   19.8. 19.8. New rulebooks

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

     (name of kind) produced by (nothing based rule producing values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) produced by (nothing based rule producing values) ... value

    \n\n\n

    This phrase is used to follow the named rule, and to collect the resulting value.

    \n\n

    See   19.13. 19.13. Rulebooks producing values

    \n

    Kind: phrase (K, nothing based rule producing Ks) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry @@ -29325,11 +29325,11 @@ package main _plain package phrasebook_entry6 _phrasebook_entry constant (text) ^text = "

     (name of kind) produced by (nothing based rule producing values) ... value

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     (name of kind) produced by (nothing based rule producing values) ... value

    \n\n\n

    This phrase is used to follow the named rule, and to collect the resulting value.

    \n\n

    See   19.13. 19.13. Rulebooks producing values

    \n

    Kind: phrase (K, nothing based rule producing Ks) -> K

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     abide by (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abide by (nothing based rule)

    \n\n\n

    This phrase applies the given rule, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further i structions. Example:

    \n \n

    The omnibus rule:\n
    \n     abide by the first rule;\n
    \n     abide by the second rule;\n
    \n     abide by the third rule;\n
    \n     abide by the fourth rule.\n

    \n
    \n \n

    This duplicates the effect of a rulebook of four rules: the "omnibus rule" tries each in turn, and stops as soon as any of them stop.

    \n\n

    See   19.14. 19.14. Abide by

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     abide by (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abide by (nothing based rule)

    \n\n\n

    This phrase applies the given rule, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further i structions. Example:

    \n \n

    The omnibus rule:\n
    \n     abide by the first rule;\n
    \n     abide by the second rule;\n
    \n     abide by the third rule;\n
    \n     abide by the fourth rule.\n

    \n
    \n \n

    This duplicates the effect of a rulebook of four rules: the "omnibus rule" tries each in turn, and stops as soon as any of them stop.

    \n\n

    See   19.14. 19.14. Abide by

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry8 _phrasebook_entry constant (text) ^text = "

     abide by (nothing based rule producing values) for (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abide by (nothing based rule producing values) for (value)

    \n\n\n

    This phrase applies the given rule to the given value, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further instructions.

    \n\n

    See   19.14. 19.14. Abide by

    \n

    Kind: phrase (Ks based rule producing values, K) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry9 _phrasebook_entry - constant (text) ^text = "

     abide by (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abide by (nothing based rule)

    \n\n\n

    This phrase applies the given rule, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further i structions. Example:

    \n \n

    The omnibus rule:\n
    \n     abide by the first rule;\n
    \n     abide by the second rule;\n
    \n     abide by the third rule;\n
    \n     abide by the fourth rule.\n

    \n
    \n \n

    This duplicates the effect of a rulebook of four rules: the "omnibus rule" tries each in turn, and stops as soon as any of them stop.

    \n\n

    See   19.14. 19.14. Abide by

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     abide by (nothing based rule)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     abide by (nothing based rule)

    \n\n\n

    This phrase applies the given rule, and makes its result the result of the present rule. If the rule being abided by succeeds or fails then the original rule also stops, at once and without going on to any further i structions. Example:

    \n \n

    The omnibus rule:\n
    \n     abide by the first rule;\n
    \n     abide by the second rule;\n
    \n     abide by the third rule;\n
    \n     abide by the fourth rule.\n

    \n
    \n \n

    This duplicates the effect of a rulebook of four rules: the "omnibus rule" tries each in turn, and stops as soon as any of them stop.

    \n\n

    See   19.14. 19.14. Abide by

    \n

    Kind: phrase nothing based rule -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading41 _phrasebook_heading constant (text) ^text = "Success and Failure" package phrasebook_entry1 _phrasebook_entry @@ -29341,35 +29341,35 @@ package main _plain package phrasebook_entry4 _phrasebook_entry constant (text) ^text = "

     rule succeeds with result (value)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     rule succeeds with result (value)

    \n\n\n

    This phrase can only be used in a rule which produces a value, and the value given must be of the right kind. It causes the current rule to finish immediately, to succeed, and to produce the value given.

    \n\n

    See   19.13. 19.13. Rulebooks producing values

    \n

    Kind: phrase value -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry5 _phrasebook_entry - constant (text) ^text = "

     if rule succeeded:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if rule succeeded:

    \n\n\n

    This condition is true if the most recently followed rule or rulebook ended in success. Example:

    \n \n

    follow the hypothetical clever rule;\n
    \n if rule succeeded:\n
    \n     ...\n

    \n
    \n \n\n

    See   19.11. 19.11. Success and failure

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if rule succeeded:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if rule succeeded:

    \n\n\n

    This condition is true if the most recently followed rule or rulebook ended in success. Example:

    \n \n

    follow the hypothetical clever rule;\n
    \n if rule succeeded:\n
    \n     ...\n

    \n
    \n \n\n

    See   19.11. 19.11. Success and failure

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry6 _phrasebook_entry - constant (text) ^text = "

     if rule failed:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if rule failed:

    \n\n\n

    This condition is true if the most recently followed rule or rulebook ended in failure. Example:

    \n \n

    follow the hypothetical clever rule;\n
    \n if rule failed:\n
    \n     ...\n

    \n
    \n \n

    Note that this is not the opposite of "rule succeeded", because there's a third possibility: that it ended with no outcome.

    \n\n

    See   19.11. 19.11. Success and failure

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if rule failed:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if rule failed:

    \n\n\n

    This condition is true if the most recently followed rule or rulebook ended in failure. Example:

    \n \n

    follow the hypothetical clever rule;\n
    \n if rule failed:\n
    \n     ...\n

    \n
    \n \n

    Note that this is not the opposite of "rule succeeded", because there's a third possibility: that it ended with no outcome.

    \n\n

    See   19.11. 19.11. Success and failure

    \n

    Kind: phrase nothing -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry7 _phrasebook_entry - constant (text) ^text = "

     outcome of the rulebook ... rulebook outcome

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     outcome of the rulebook ... rulebook outcome

    \n\n\n

    This phrase produces the (named) outcome of the phrase most recently followed. Example:

    \n \n

    follow the audibility rules;\n
    \n if the outcome of the rulebook is the absolute silence outcome:\n
    \n     say "You could hear a pin drop in here."\n

    \n
    \n \n\n

    See   19.12. 19.12. Named outcomes

    \n

    Kind: phrase nothing -> rulebook outcome

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     outcome of the rulebook ... rulebook outcome

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     outcome of the rulebook ... rulebook outcome

    \n\n\n

    This phrase produces the (named) outcome of the phrase most recently followed. Example:

    \n \n

    follow the audibility rules;\n
    \n if the outcome of the rulebook is the absolute silence outcome:\n
    \n     say "You could hear a pin drop in here."\n

    \n
    \n \n\n

    See   19.12. 19.12. Named outcomes

    \n

    Kind: phrase nothing -> rulebook outcome

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading42 _phrasebook_heading constant (text) ^text = "Files of Text" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     write (text) to (external file)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     write (text) to (external file)

    \n\n\n

    This phrase makes the given text become the entire contents of the named file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    write "Jackdaws love my big sphinx of quartz." to the file of Abecedary Wisdom;\n

    \n
    \n \n\n

    See   23.14. 23.14. Writing, reading and appending text to files

    \n

    Kind: phrase (text, external file) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     write (text) to (external file)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     write (text) to (external file)

    \n\n\n

    This phrase makes the given text become the entire contents of the named file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    write "Jackdaws love my big sphinx of quartz." to the file of Abecedary Wisdom;\n

    \n
    \n \n\n

    See   23.14. 23.14. Writing, reading and appending text to files

    \n

    Kind: phrase (text, external file) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     append (text) to (external file)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     append (text) to (external file)

    \n\n\n

    This phrase adds the given text to the end of the current contents of the named file (creating it if it does not exist on disc). Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. E ample:

    \n \n

    append "Jinxed wizards pluck ivy from the big quilt." to the file of Abecedary Wisdom;\n

    \n
    \n \n\n

    See   23.14. 23.14. Writing, reading and appending text to files

    \n

    Kind: phrase (text, external file) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     append (text) to (external file)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     append (text) to (external file)

    \n\n\n

    This phrase adds the given text to the end of the current contents of the named file (creating it if it does not exist on disc). Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. E ample:

    \n \n

    append "Jinxed wizards pluck ivy from the big quilt." to the file of Abecedary Wisdom;\n

    \n
    \n \n\n

    See   23.14. 23.14. Writing, reading and appending text to files

    \n

    Kind: phrase (text, external file) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     say \"[text of external file]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[text of external file]\"

    \n\n\n

    This text expands to the contents of the named file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    "[text of the File of Abecedary Wisdom]"\n

    \n
    \n \n\n

    See   23.14. 23.14. Writing, reading and appending text to files

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     say \"[text of external file]\"

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     say \"[text of external file]\"

    \n\n\n

    This text expands to the contents of the named file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    "[text of the File of Abecedary Wisdom]"\n

    \n
    \n \n\n

    See   23.14. 23.14. Writing, reading and appending text to files

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading43 _phrasebook_heading constant (text) ^text = "Files of Data" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     read (external file) into (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     read (external file) into (table name)

    \n\n\n

    This phrase causes the entire contents of the given table to be read in from the given file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    read File of Glaciation Data into the Table of Antarctic Reserves\n

    \n
    \n \n

    Any rows left spare at the foot of the table are automatically blanked. On the other hand if the file is too large to fit into the table - with too many columns or too many rows - a run-time problem is produced.

    \n\n

    See   23.13. 23.13. Writing and reading tables to external files

    \n

    Kind: phrase (external file, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     read (external file) into (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     read (external file) into (table name)

    \n\n\n

    This phrase causes the entire contents of the given table to be read in from the given file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    read File of Glaciation Data into the Table of Antarctic Reserves\n

    \n
    \n \n

    Any rows left spare at the foot of the table are automatically blanked. On the other hand if the file is too large to fit into the table - with too many columns or too many rows - a run-time problem is produced.

    \n\n

    See   23.13. 23.13. Writing and reading tables to external files

    \n

    Kind: phrase (external file, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     write (external file) from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     write (external file) from (table name)

    \n\n\n

    This phrase causes the entire contents of the given table to be written out to the given file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    write File of Glaciation Data from the Table of Antarctic Reserves\n

    \n
    \n \n

    Any blank rows in the table are automatically moved to the bottom, and only the non-blank rows are written.

    \n\n

    See   23.13. 23.13. Writing and reading tables to external files

    \n

    Kind: phrase (external file, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     write (external file) from (table name)

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     write (external file) from (table name)

    \n\n\n

    This phrase causes the entire contents of the given table to be written out to the given file. Note that files must have been declared, and must be referred to by their Inform names, not by textual filenames. Example:

    \n \n

    write File of Glaciation Data from the Table of Antarctic Reserves\n

    \n
    \n \n

    Any blank rows in the table are automatically moved to the bottom, and only the non-blank rows are written.

    \n\n

    See   23.13. 23.13. Writing and reading tables to external files

    \n

    Kind: phrase (external file, table name) -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_heading44 _phrasebook_heading constant (text) ^text = "File Handling" package phrasebook_entry1 _phrasebook_entry - constant (text) ^text = "

     if (external file) exists:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (external file) exists:

    \n\n\n

    This condition is true if the file-system used by the player appears to contain a file with the right name. For example, if we declared:

    \n \n

    The binary File of Glaciation Data is called "icedata".\n

    \n
    \n \n

    and then tested

    \n \n

    if the File of Glaciation Data exists, ...\n

    \n
    \n \n

    then Inform would search for a file called "icedata". (The arrangements for where this might be stored, and its filename extension, vary from platform to platform.)

    \n\n

    See   23.13. 23.13. Writing and reading tables to external files

    \n

    Kind: phrase external file -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if (external file) exists:

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if (external file) exists:

    \n\n\n

    This condition is true if the file-system used by the player appears to contain a file with the right name. For example, if we declared:

    \n \n

    The binary File of Glaciation Data is called "icedata".\n

    \n
    \n \n

    and then tested

    \n \n

    if the File of Glaciation Data exists, ...\n

    \n
    \n \n

    then Inform would search for a file called "icedata". (The arrangements for where this might be stored, and its filename extension, vary from platform to platform.)

    \n\n

    See   23.13. 23.13. Writing and reading tables to external files

    \n

    Kind: phrase external file -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry2 _phrasebook_entry - constant (text) ^text = "

     if ready to read (external file):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if ready to read (external file):

    \n\n\n

    This condition is true if the file exists and is marked as being ready to read; that is, it is not in a state where another program is currently writing it. Example:

    \n \n

    if ready to read the file of Invariants, ...\n

    \n
    \n \n\n

    See   23.15. 23.15. Exchanging files with other programs

    \n

    Kind: phrase external file -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     if ready to read (external file):

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     if ready to read (external file):

    \n\n\n

    This condition is true if the file exists and is marked as being ready to read; that is, it is not in a state where another program is currently writing it. Example:

    \n \n

    if ready to read the file of Invariants, ...\n

    \n
    \n \n\n

    See   23.15. 23.15. Exchanging files with other programs

    \n

    Kind: phrase external file -> truth state

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry3 _phrasebook_entry - constant (text) ^text = "

     mark (external file) as ready to read

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     mark (external file) as ready to read

    \n\n\n

    This phrase marks that we have finished writing to the given file, so that any external program is welcome to read it now. Example:

    \n \n

    mark the file of Invariants as ready to read;\n

    \n
    \n \n\n

    See   23.15. 23.15. Exchanging files with other programs

    \n

    Kind: phrase external file -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     mark (external file) as ready to read

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     mark (external file) as ready to read

    \n\n\n

    This phrase marks that we have finished writing to the given file, so that any external program is welcome to read it now. Example:

    \n \n

    mark the file of Invariants as ready to read;\n

    \n
    \n \n\n

    See   23.15. 23.15. Exchanging files with other programs

    \n

    Kind: phrase external file -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_entry4 _phrasebook_entry - constant (text) ^text = "

     mark (external file) as not ready to read

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     mark (external file) as not ready to read

    \n\n\n

    This phrase marks that we are about to start writing to the given file, so that any external program should wait until we're finished if it wants to read the file. Example:

    \n \n

    mark the file of Invariants as not ready to read;\n

    \n
    \n \n\n

    See   23.15. 23.15. Exchanging files with other programs

    \n

    Kind: phrase external file -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" + constant (text) ^text = "

     mark (external file) as not ready to read

    \n
    \n

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \"...\"\n \n\n \n \"...\"\n
    \n\n \n

     mark (external file) as not ready to read

    \n\n\n

    This phrase marks that we are about to start writing to the given file, so that any external program should wait until we're finished if it wants to read the file. Example:

    \n \n

    mark the file of Invariants as not ready to read;\n

    \n
    \n \n\n

    See   23.15. 23.15. Exchanging files with other programs

    \n

    Kind: phrase external file -> nothing

    \n\n
    \n\n
    \n \"...\"\n \n\n \n \"...\"\n
    \n

    \n
    \n" package phrasebook_super_heading3 _phrasebook_super_heading constant (text) ^text = "Defined in the source" package phrasebook_heading1 _phrasebook_heading diff --git a/inform7/Tests/Test Problems/PM_DubiousAmbiguity.txt b/inform7/Tests/Test Problems/PM_DubiousAmbiguity.txt new file mode 100644 index 000000000..5f82df0d4 --- /dev/null +++ b/inform7/Tests/Test Problems/PM_DubiousAmbiguity.txt @@ -0,0 +1,17 @@ +r1 is a room. + +when play begins: + showme table of nondup; + showme table of dup1. + +table of dup1 - x +rm +r1 + +table of dup1 - y +rm +r1 + +table of nondup - z +rm +r1 diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_DubiousAmbiguity.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_DubiousAmbiguity.txt new file mode 100644 index 000000000..e1c51ff24 --- /dev/null +++ b/inform7/Tests/Test Problems/_Results_Ideal/PM_DubiousAmbiguity.txt @@ -0,0 +1,14 @@ +Inform 7 v10.1.0 has started. +I've now read your source text, which is 36 words long. +I've also read Basic Inform by Graham Nelson, which is 7691 words long. +I've also read English Language by Graham Nelson, which is 2328 words long. +I've also read Standard Rules by Graham Nelson, which is 32092 words long. +Problem__ PM_DubiousAmbiguity + >--> The phrase 'showme table of dup1' (source text, line 5) is ambiguous in + a way that I can't sort out. I can see 2 different meanings of 'table of + dup1', and no good way to choose. + I was trying to match this phrase: + showme (table of dup1 - value) + I recognised: + table of dup1 = a table name +Inform 7 has finished. diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_EitherOrAsValue.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_EitherOrAsValue.txt index afd2e6ead..90797c393 100644 --- a/inform7/Tests/Test Problems/_Results_Ideal/PM_EitherOrAsValue.txt +++ b/inform7/Tests/Test Problems/_Results_Ideal/PM_EitherOrAsValue.txt @@ -1,7 +1,8 @@ -Inform 7 build 6L64 has started. +Inform 7 v10.1.0 has started. I've now read your source text, which is 22 words long. -I've also read Standard Rules by Graham Nelson, which is 42486 words long. -I've also read English Language by Graham Nelson, which is 2288 words long. +I've also read Basic Inform by Graham Nelson, which is 7691 words long. +I've also read English Language by Graham Nelson, which is 2328 words long. +I've also read Standard Rules by Graham Nelson, which is 32092 words long. Problem__ PM_EitherOrAsValue >--> In the sentence 'decrease the lighted of the NI School for Typing by 1' (source text, line 4), it looks as if you intend 'lighted of the NI School for @@ -11,6 +12,6 @@ Problem__ PM_EitherOrAsValue decrease (lighted of the ni school for typing - a stored value) by (1 - value) I recognised: - lighted of the ni school for typing = a property whose value is a - nothing, holding a value -Inform 7 has finished: 48 centiseconds used. + lighted of the ni school for typing = a property whose value is a nothing, + holding a value +Inform 7 has finished. diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_GenericDescription.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_GenericDescription.txt index a0d6caefe..1c345ceb5 100644 --- a/inform7/Tests/Test Problems/_Results_Ideal/PM_GenericDescription.txt +++ b/inform7/Tests/Test Problems/_Results_Ideal/PM_GenericDescription.txt @@ -1,7 +1,8 @@ -Inform 7 build 6M05 has started. +Inform 7 v10.1.0 has started. I've now read your source text, which is 123 words long. -I've also read Standard Rules by Graham Nelson, which is 42485 words long. -I've also read English Language by Graham Nelson, which is 2288 words long. +I've also read Basic Inform by Graham Nelson, which is 7691 words long. +I've also read English Language by Graham Nelson, which is 2328 words long. +I've also read Standard Rules by Graham Nelson, which is 32092 words long. Problem__ PM_GenericDescription >--> You wrote 'if a container (called B) carried by the player is larger than the noun' (source text, line 10), but 'a container (called B) carried @@ -13,7 +14,6 @@ Problem__ PM_GenericDescription (a container ( called b ) carried by the player - a lit block) is larger than (noun - block) I recognised: - a container ( called b ) carried by the player = a description of - containers + a container ( called b ) carried by the player = a description of containers noun = a non-temporary variable, holding an object -Inform 7 has finished: 51 centiseconds used. +Inform 7 has finished. diff --git a/inform7/Tests/Test Problems/_Results_Ideal/PM_LookedUpForbiddenProperty.txt b/inform7/Tests/Test Problems/_Results_Ideal/PM_LookedUpForbiddenProperty.txt index 244430a7a..237cc18ab 100644 --- a/inform7/Tests/Test Problems/_Results_Ideal/PM_LookedUpForbiddenProperty.txt +++ b/inform7/Tests/Test Problems/_Results_Ideal/PM_LookedUpForbiddenProperty.txt @@ -1,7 +1,8 @@ -Inform 7 build 6M27 has started. +Inform 7 v10.1.0 has started. I've now read your source text, which is 17 words long. -I've also read Standard Rules by Graham Nelson, which is 42500 words long. -I've also read English Language by Graham Nelson, which is 2288 words long. +I've also read Basic Inform by Graham Nelson, which is 7691 words long. +I've also read English Language by Graham Nelson, which is 2328 words long. +I've also read Standard Rules by Graham Nelson, which is 32092 words long. Problem__ PM_LookedUpForbiddenProperty >--> In the sentence 'let M be the carrying capacity of the Entire Game' (source text, line 4), you seem to be looking up the 'carrying capacity' property, @@ -16,7 +17,7 @@ Problem__ PM_LookedUpForbiddenProperty 4. let (m - a temporary named value) be (carrying capacity of the entire game - value) I recognised: - carrying capacity of the entire game = a property whose value is a - number, holding a number + carrying capacity of the entire game = a property whose value is a number, + holding a number The name 'm' doesn't yet exist. -Inform 7 has finished: 57 centiseconds used. +Inform 7 has finished. diff --git a/inform7/assertions-module/Chapter 5/Phrase Type Data.w b/inform7/assertions-module/Chapter 5/Phrase Type Data.w index 6c7d6309d..77893c442 100644 --- a/inform7/assertions-module/Chapter 5/Phrase Type Data.w +++ b/inform7/assertions-module/Chapter 5/Phrase Type Data.w @@ -630,25 +630,30 @@ void IDTypeData::log_inline_details(inline_details id) { @ = void IDTypeData::make_inline(id_type_data *idtd) { + if (idtd == NULL) internal_error("null idtd"); idtd->as_inline.invoked_inline_not_as_call = TRUE; } int IDTypeData::invoked_inline(id_body *idb) { + if (idb == NULL) return FALSE; return idb->type_data.as_inline.invoked_inline_not_as_call; } @ = int IDTypeData::is_a_let_assignment(id_body *idb) { + if (idb == NULL) return FALSE; if (idb->type_data.as_inline.let_phrase == ASSIGNMENT_LET_PHRASE) return TRUE; return FALSE; } int IDTypeData::is_a_let_equation(id_body *idb) { + if (idb == NULL) return FALSE; if (idb->type_data.as_inline.let_phrase == EQUATION_LET_PHRASE) return TRUE; return FALSE; } int IDTypeData::arithmetic_operation(id_body *idb) { + if (idb == NULL) return -1; return idb->type_data.as_inline.arithmetical_operation; } @@ -659,6 +664,7 @@ int IDTypeData::is_arithmetic_phrase(id_body *idb) { } int IDTypeData::is_assignment_phrase(id_body *idb) { + if (idb == NULL) return FALSE; return idb->type_data.as_inline.assignment_phrase; } @@ -668,6 +674,7 @@ wchar_t *IDTypeData::only_in(id_body *idb) { } int IDTypeData::block_follows(id_body *idb) { + if (idb == NULL) return FALSE; return idb->type_data.as_inline.block_follows; } diff --git a/inform7/imperative-module/Chapter 5/Compile Invocations.w b/inform7/imperative-module/Chapter 5/Compile Invocations.w index 19919cf10..09b60c783 100644 --- a/inform7/imperative-module/Chapter 5/Compile Invocations.w +++ b/inform7/imperative-module/Chapter 5/Compile Invocations.w @@ -5,7 +5,7 @@ Generating code to perform an invocation. @h Upper level: compiling from whole lists. Here, we are given an invocation list |invl|, and we must generate Inter code to carry it out. The code in this section does some complicated things; the -test grpup |:invocations| may be helpful when maintaining it. +test group |:invocations| may be helpful when maintaining it. = void CompileInvocations::list(value_holster *VH, parse_node *invl, wording W, diff --git a/inform7/values-module/Chapter 5/Dash.w b/inform7/values-module/Chapter 5/Dash.w index f8034ee0b..75cc3a2b7 100644 --- a/inform7/values-module/Chapter 5/Dash.w +++ b/inform7/values-module/Chapter 5/Dash.w @@ -193,6 +193,7 @@ int Dash::check_value_silently(parse_node *p, kind *K) { int Dash::check_invl(parse_node *p) { LOGIF(MATCHING, "Dash (1): invocation list '%W'\n", Node::get_text(p)); + LOGIF(MATCHING, "p = $T\n", p); return Dash::funnel_to_level_2(p, FALSE); } @@ -365,27 +366,27 @@ from a text substitution.) @ else @; - } else Problems::issue_problem_segment("%1 = %2"); + } else Problems::issue_problem_segment("%1 = %2"); Problems::issue_problem_end(); @ = - Problems::issue_problem_segment("%1 = %2, holding %3"); + Problems::issue_problem_segment("%1 = %2, holding %3"); @ = - char *seg = "%1 = an instruction to work out %3"; + char *seg = "%1 = an instruction to work out %3"; if (K == NULL) seg = "%1 = a phrase"; parse_node *found_invl = itpt->as_parsed->down; parse_node *inv; LOOP_THROUGH_ALTERNATIVES(inv, found_invl) { LOG("$e\n", inv); if (Dash::reading_passed(inv) == FALSE) { - seg = "%1 = an instruction I think should work out %3, " + seg = "%1 = an instruction I think should work out %3, " "but which I can't make sense of"; for (int i=0; i = - char *seg = "%1 = %3"; + char *seg = "%1 = %3"; if (Rvalues::is_CONSTANT_construction(itpt->as_parsed, CON_property)) { property *prn = Node::get_constant_property(itpt->as_parsed); if (Properties::is_value_property(prn)) { binary_predicate *bp = ValueProperties::get_stored_relation(prn); if (bp) { - seg = "%1 = %3, which is used to store %4, " + seg = "%1 = %3, which is used to store %4, " "but is not the same thing as the relation itself"; Problems::quote_relation(4, bp); } @@ -927,6 +928,16 @@ checking. LOGIF(MATCHING, "Winnow %s from $T\n", (invocational)?"invocationally":"regularly", Dash_ambiguity_list); + if (invocational) { + int dubious = FALSE; + for (int ref = 0; ref; + } + if (invocational) Dash_ambiguity_list->down = NULL; parse_node *last_survivor = NULL; @@ -963,6 +974,21 @@ checking. } LOGIF(MATCHING, "After winnowing, CS is $T\n", current_sentence); +@ This is a last-throw-of-the-dice problem message, designed to pick up just +a few really awkward ambiguities which have been missed elsewhere in the parser +or in Dash. + +@ = + THIS_IS_AN_ORDINARY_PROBLEM; + Problems::quote_source(1, current_sentence); + Problems::quote_number(2, &no_of_possible_readings); + Problems::quote_wording(3, Node::get_text(list_of_possible_readings[0])); + StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_DubiousAmbiguity)); + Problems::issue_problem_segment( + "The phrase %1 is ambiguous in a way that I can't sort out. " + "I can see %2 different meanings of '%3', and no good way to choose."); + Problems::issue_problem_end(); + return NEVER_MATCH; @ This is another sort of error which couldn't happen with a conventional programming language -- in C, for instance, it's syntactically obvious diff --git a/services/lexicon-module/Chapter 1/Lexicon Module.w b/services/lexicon-module/Chapter 1/Lexicon Module.w index c2226144b..9747b22ac 100644 --- a/services/lexicon-module/Chapter 1/Lexicon Module.w +++ b/services/lexicon-module/Chapter 1/Lexicon Module.w @@ -46,7 +46,7 @@ MAKE_ANNOTATION_FUNCTIONS(meaning, excerpt_meaning) @ = void LexiconModule::write_meaning_ANNOT(text_stream *OUT, parse_node *p) { if (Node::get_meaning(p)) { - WRITE("{meaning: "); + WRITE(" {meaning: "); ExcerptMeanings::log(OUT, Node::get_meaning(p)); WRITE("}"); }