occam-verify-cli 1.0.587 → 1.0.602

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/lib/context/ephemeral.js +74 -2
  2. package/lib/context/file/nominal.js +11 -9
  3. package/lib/context/liminal.js +161 -24
  4. package/lib/context/literal.js +8 -2
  5. package/lib/context/scoped.js +4 -28
  6. package/lib/context/synthetic.js +146 -0
  7. package/lib/context.js +170 -1
  8. package/lib/element/assertion/contained.js +21 -15
  9. package/lib/element/assertion/defined.js +45 -65
  10. package/lib/element/assertion/property.js +25 -19
  11. package/lib/element/assertion/satisfies.js +14 -8
  12. package/lib/element/assertion/subproof.js +12 -6
  13. package/lib/element/assertion.js +47 -1
  14. package/lib/element/assumption.js +12 -12
  15. package/lib/element/conclusion.js +2 -2
  16. package/lib/element/deduction.js +2 -2
  17. package/lib/element/frame.js +61 -29
  18. package/lib/element/judgement.js +7 -1
  19. package/lib/element/label.js +8 -8
  20. package/lib/element/metavariable.js +71 -59
  21. package/lib/element/procedureCall.js +24 -8
  22. package/lib/element/proof.js +43 -35
  23. package/lib/element/proofAssertion/premise.js +122 -97
  24. package/lib/element/proofAssertion/step.js +161 -115
  25. package/lib/element/proofAssertion/supposition.js +157 -118
  26. package/lib/element/proofAssertion.js +3 -3
  27. package/lib/element/reference.js +40 -7
  28. package/lib/element/rule.js +227 -95
  29. package/lib/element/signature.js +2 -1
  30. package/lib/element/statement.js +67 -34
  31. package/lib/element/substitution/frame.js +36 -16
  32. package/lib/element/substitution/reference.js +36 -16
  33. package/lib/element/substitution/statement.js +94 -55
  34. package/lib/element/substitution/term.js +36 -16
  35. package/lib/element/substitution.js +54 -17
  36. package/lib/element/substitutions.js +4 -276
  37. package/lib/element/term.js +60 -31
  38. package/lib/element/topLevelAssertion/axiom.js +13 -4
  39. package/lib/element/topLevelAssertion/conjecture.js +7 -2
  40. package/lib/element/topLevelAssertion/theorem.js +7 -2
  41. package/lib/element/topLevelAssertion.js +201 -134
  42. package/lib/element/topLevelMetaAssertion.js +310 -51
  43. package/lib/element/variable.js +15 -6
  44. package/lib/node/substitution/statement.js +33 -1
  45. package/lib/process/unify.js +6 -6
  46. package/lib/utilities/context.js +10 -25
  47. package/lib/utilities/element.js +34 -9
  48. package/lib/utilities/statement.js +1 -8
  49. package/lib/utilities/string.js +12 -1
  50. package/lib/utilities/substitutions.js +42 -16
  51. package/lib/utilities/unification.js +3 -1
  52. package/lib/utilities/validation.js +2 -2
  53. package/package.json +4 -4
  54. package/src/context/ephemeral.js +73 -1
  55. package/src/context/file/nominal.js +14 -11
  56. package/src/context/liminal.js +180 -25
  57. package/src/context/literal.js +3 -1
  58. package/src/context/scoped.js +3 -35
  59. package/src/context/synthetic.js +49 -0
  60. package/src/context.js +163 -1
  61. package/src/element/assertion/contained.js +28 -20
  62. package/src/element/assertion/defined.js +62 -34
  63. package/src/element/assertion/property.js +27 -19
  64. package/src/element/assertion/satisfies.js +15 -7
  65. package/src/element/assertion/subproof.js +13 -5
  66. package/src/element/assertion.js +35 -0
  67. package/src/element/assumption.js +5 -5
  68. package/src/element/conclusion.js +2 -4
  69. package/src/element/deduction.js +2 -4
  70. package/src/element/frame.js +71 -39
  71. package/src/element/judgement.js +2 -0
  72. package/src/element/label.js +4 -4
  73. package/src/element/metavariable.js +94 -75
  74. package/src/element/procedureCall.js +6 -6
  75. package/src/element/proof.js +6 -6
  76. package/src/element/proofAssertion/premise.js +101 -69
  77. package/src/element/proofAssertion/step.js +78 -39
  78. package/src/element/proofAssertion/supposition.js +141 -115
  79. package/src/element/proofAssertion.js +3 -2
  80. package/src/element/reference.js +52 -10
  81. package/src/element/rule.js +138 -76
  82. package/src/element/signature.js +2 -0
  83. package/src/element/statement.js +76 -45
  84. package/src/element/substitution/frame.js +44 -15
  85. package/src/element/substitution/reference.js +44 -15
  86. package/src/element/substitution/statement.js +124 -72
  87. package/src/element/substitution/term.js +43 -15
  88. package/src/element/substitution.js +55 -18
  89. package/src/element/substitutions.js +1 -258
  90. package/src/element/term.js +65 -34
  91. package/src/element/topLevelAssertion/axiom.js +1 -1
  92. package/src/element/topLevelAssertion/conjecture.js +1 -1
  93. package/src/element/topLevelAssertion/theorem.js +1 -1
  94. package/src/element/topLevelAssertion.js +128 -48
  95. package/src/element/topLevelMetaAssertion.js +86 -32
  96. package/src/element/variable.js +15 -5
  97. package/src/node/substitution/statement.js +33 -0
  98. package/src/process/unify.js +6 -8
  99. package/src/utilities/context.js +9 -8
  100. package/src/utilities/element.js +37 -10
  101. package/src/utilities/statement.js +0 -7
  102. package/src/utilities/string.js +14 -0
  103. package/src/utilities/substitutions.js +59 -17
  104. package/src/utilities/unification.js +4 -0
  105. package/src/utilities/validation.js +3 -1
@@ -6,4 +6,39 @@ export default class Assertion extends Element {
6
6
  constructor(context, string, node) {
7
7
  super(context, string, node);
8
8
  }
9
+
10
+ getAssertionNode() {
11
+ const node = this.getNode(),
12
+ assertionNode = node; ///
13
+
14
+ return assertionNode;
15
+ }
16
+
17
+ matchAssertionNode(assertionNode) {
18
+ const assertionNodeA = assertionNode; ///
19
+
20
+ assertionNode = this.getAssertionNode();
21
+
22
+ const assertionNodeB = assertionNode, ///
23
+ assertionNodeAAMatchesAssertionBNodeB = assertionNodeA.match(assertionNodeB),
24
+ equalTo = assertionNodeAAMatchesAssertionBNodeB; ///
25
+
26
+ return equalTo;
27
+ }
28
+
29
+ isValid(context) {
30
+ const assertionNode = this.getAssertionNode(),
31
+ assertionPresent = context.isAssertionPresentByAssertionNode(assertionNode),
32
+ valid = assertionPresent; ///
33
+
34
+ return valid;
35
+ }
36
+
37
+ isEqualTo(assertion) {
38
+ const assertionNode = assertion.getNode(),
39
+ assertionNodeMatches = this.matchAssertionNode(assertionNode),
40
+ equalTo = assertionNodeMatches; ///
41
+
42
+ return equalTo;
43
+ }
9
44
  }
@@ -33,11 +33,11 @@ export default define(class Assumption extends Element {
33
33
  context.trace(`Comparing the '${assumptionString}' assumption to the '${substitutionString}' substitution...`);
34
34
 
35
35
  const statement = substitution.getStatement(),
36
- metavariable = substitution.getMetavariable(),
36
+ metavariable = substitution.getMetavariable(generalContext, specificContext),
37
37
  statementEqualToStatement = this.statement.isEqualTo(statement),
38
- referenceMetavariableEqualToMetavariable = this.reference.isMetavariableEqualToMetavariable(metavariable);
38
+ referenceMetavariableComparesToMetavariable = this.reference.compareMetavariable(metavariable);
39
39
 
40
- if (statementEqualToStatement && referenceMetavariableEqualToMetavariable) {
40
+ if (statementEqualToStatement && referenceMetavariableComparesToMetavariable) {
41
41
  comparesToSubstituion = true;
42
42
  }
43
43
 
@@ -86,7 +86,7 @@ export default define(class Assumption extends Element {
86
86
  validateReference(assignments, stated, context) {
87
87
  let referenceValidates;
88
88
 
89
- const assumptionString = this.getString(),
89
+ const assumptionString = this.getString(), ///
90
90
  referenceString = this.reference.getString();
91
91
 
92
92
  context.trace(`Validating the '${assumptionString}' assumption's '${referenceString}' reference...`);
@@ -103,7 +103,7 @@ export default define(class Assumption extends Element {
103
103
  validateStatement(assignments, stated, context) {
104
104
  let statementValidates;
105
105
 
106
- const assumptionString = this.getString(),
106
+ const assumptionString = this.getString(), ///
107
107
  statementString = this.statement.getString();
108
108
 
109
109
  context.trace(`Validating the '${assumptionString}' assumption's '${statementString}' statement...`);
@@ -4,7 +4,7 @@ import { Element } from "occam-languages";
4
4
 
5
5
  import { define } from "../elements";
6
6
  import { attempt } from "../utilities/context";
7
- import { termsFromJSON, framesFromJSON, statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
7
+ import { statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
8
8
 
9
9
  export default define(class Conclusion extends Element {
10
10
  constructor(context, string, node, statement) {
@@ -101,9 +101,7 @@ export default define(class Conclusion extends Element {
101
101
  static name = "Conclusion";
102
102
 
103
103
  static fromJSON(json, context) {
104
- const terms = termsFromJSON(json, context),
105
- frames = framesFromJSON(json, context),
106
- statement = statementFromJSON(json, context),
104
+ const statement = statementFromJSON(json, context),
107
105
  node = null,
108
106
  string = statement.getString();
109
107
 
@@ -4,7 +4,7 @@ import { Element } from "occam-languages";
4
4
 
5
5
  import { define } from "../elements";
6
6
  import { attempt } from "../utilities/context";
7
- import { termsFromJSON, framesFromJSON, statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
7
+ import { statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
8
8
 
9
9
  export default define(class Deduction extends Element {
10
10
  constructor(context, string, node, statement) {
@@ -126,9 +126,7 @@ export default define(class Deduction extends Element {
126
126
  static name = "Deduction";
127
127
 
128
128
  static fromJSON(json, context) {
129
- const terms = termsFromJSON(json, context),
130
- frames = framesFromJSON(json, context),
131
- statement = statementFromJSON(json, context),
129
+ const statement = statementFromJSON(json, context),
132
130
  string = statement.getString();
133
131
 
134
132
  const deduction = new Deduction(context, string, statement);
@@ -30,47 +30,71 @@ export default define(class Frame extends Element {
30
30
  return metavariableName;
31
31
  }
32
32
 
33
- isSingular() {
33
+ getFrameNode() {
34
34
  const node = this.getNode(),
35
- frameNode = node, ///
36
- singular = frameNode.isSingular();
35
+ frameNode = node; ///
37
36
 
38
- return singular;
37
+ return frameNode;
39
38
  }
40
39
 
41
- isMetavariableEqualToMetavariable(metavariable, context) {
42
- let metavariableEqualToMetavariable;
40
+ compareMetavariable(metavariable) {
41
+ let metavaraibleComparseTo = false;
43
42
 
44
43
  const singular = this.isSingular();
45
44
 
46
45
  if (singular) {
47
- const node = this.getNode(),
48
- metavariableA = metavariable, ///
49
- singularMetavariableNode = node.getSingularMetavariableNode(),
50
- metavariableName = singularMetavariableNode.getMetavariableName();
46
+ let metavariableName;
51
47
 
52
- metavariable = context.findMetavariableByMetavariableName(metavariableName)
48
+ metavariableName = this.metavariable.getName();
53
49
 
54
- const metavariableB = metavariable,
55
- equalTo = metavariableA.isEqualTo(metavariableB);
50
+ const metavariableNameA = metavariableName ///
56
51
 
57
- metavariableEqualToMetavariable = equalTo; ///
52
+ metavariableName = metavariable.getName();
53
+
54
+ const metavariableNameB = metavariableName; ///
55
+
56
+ metavaraibleComparseTo = (metavariableNameA === metavariableNameB);
58
57
  }
59
58
 
60
- return metavariableEqualToMetavariable;
59
+ return metavaraibleComparseTo;
60
+ }
61
+
62
+ matchFrameNode(frameNode) {
63
+ const frameNodeA = frameNode; ///
64
+
65
+ frameNode = this.getFrameNode();
66
+
67
+ const frameNodeB = frameNode, ///
68
+ frameNodeAAMatchesFrameBNodeB = frameNodeA.match(frameNodeB),
69
+ equalTo = frameNodeAAMatchesFrameBNodeB; ///
70
+
71
+ return equalTo;
72
+ }
73
+
74
+ isValid(context) {
75
+ const frameNode = this.getFrameNode(),
76
+ framePresent = context.isFramePresentByFrameNode(frameNode),
77
+ valid = framePresent; ///
78
+
79
+ return valid;
61
80
  }
62
81
 
63
82
  isEqualTo(frame) {
64
- const frameA = this, ///
65
- frameB = frame, ///
66
- frameANode = frameA.getNode(),
67
- frameBNode = frameB.getNode(),
68
- frameANodeMatchesFrameBNode = frameANode.match(frameBNode),
69
- equalTo = frameANodeMatchesFrameBNode; ///
83
+ const frameNode = frame.getNode(),
84
+ frameNodeMatches = this.matchFrameNode(frameNode),
85
+ equalTo = frameNodeMatches; ///
70
86
 
71
87
  return equalTo;
72
88
  }
73
89
 
90
+ isSingular() {
91
+ const node = this.getNode(),
92
+ frameNode = node, ///
93
+ singular = frameNode.isSingular();
94
+
95
+ return singular;
96
+ }
97
+
74
98
  compareParameter(parameter) {
75
99
  let comparesToParamter = false;
76
100
 
@@ -124,7 +148,7 @@ export default define(class Frame extends Element {
124
148
 
125
149
  context.trace(`Comparing the '${frameString}' frame to the '${substitutionsString}' substitutions...`);
126
150
 
127
- comparesToSubstitutions = substitutions.everySubstitution((substitution) => {
151
+ comparesToSubstitutions = substitutions.every((substitution) => {
128
152
  const compaaresToSubstitution = this.compareSubstitution(substitution, context);
129
153
 
130
154
  if (compaaresToSubstitution) {
@@ -146,30 +170,38 @@ export default define(class Frame extends Element {
146
170
 
147
171
  context.trace(`Validating the '${frameString}' frame...`);
148
172
 
149
- const assumptionsValidate = this.validateAssumptions(assignments, stated, context),
150
- metavariablevalidates = this.validateMetavariable(assignments, stated, context);
173
+ const valid = this.isValid(context);
151
174
 
152
- if (assumptionsValidate && metavariablevalidates) {
153
- let validatesWhenStated = false,
154
- validatesWhenDerived = false;
175
+ if (valid) {
176
+ validates = true;
155
177
 
156
- if (stated) {
157
- validatesWhenStated = this.validateWhenStated(assignments, context);
158
- } else {
159
- validatesWhenDerived = this.validateWhenDerived(context);
160
- }
178
+ context.debug(`...the '${frameString}' frame is already valid.`);
179
+ } else {
180
+ const assumptionsValidate = this.validateAssumptions(assignments, stated, context),
181
+ metavariablevalidates = this.validateMetavariable(assignments, stated, context);
182
+
183
+ if (assumptionsValidate && metavariablevalidates) {
184
+ let validatesWhenStated = false,
185
+ validatesWhenDerived = false;
186
+
187
+ if (stated) {
188
+ validatesWhenStated = this.validateWhenStated(assignments, context);
189
+ } else {
190
+ validatesWhenDerived = this.validateWhenDerived(context);
191
+ }
161
192
 
162
- if (validatesWhenStated || validatesWhenDerived) {
163
- validates = true;
193
+ if (validatesWhenStated || validatesWhenDerived) {
194
+ validates = true;
195
+ }
164
196
  }
165
- }
166
197
 
167
- if (validates) {
168
- const frame = this; ///
198
+ if (validates) {
199
+ const frame = this; ///
169
200
 
170
- context.addFrame(frame);
201
+ context.addFrame(frame);
171
202
 
172
- context.debug(`...validated the '${frameString}' frame.`);
203
+ context.debug(`...validated the '${frameString}' frame.`);
204
+ }
173
205
  }
174
206
 
175
207
  return validates;
@@ -31,6 +31,8 @@ export default define(class Judgement extends Element {
31
31
 
32
32
  getMetavariable() { return this.frame.getMetavariable(); }
33
33
 
34
+ compareMetavariable(metavariable) { return this.frame.compareMetavariable(metavariable); }
35
+
34
36
  validate(assignments, stated, context) {
35
37
  let validates = false;
36
38
 
@@ -20,14 +20,14 @@ export default define(class Label extends Element {
20
20
 
21
21
  getMetavariableNode() { return this.metavariable.getNode(); }
22
22
 
23
- compareMetavariableName(metavariableName) { return this.metavariable.compareMetavariableName(metavariableName); }
23
+ compareMetavariable(metavariable) { return this.metavariable.compare(metavariable); }
24
24
 
25
- isMetavariableEqualToMetavariable(metavariable) { return this.metavariable.isEqualTo(metavariable); }
25
+ compareMetavariableName(metavariableName) { return this.metavariable.compareMetavariableName(metavariableName); }
26
26
 
27
27
  compareReference(reference) {
28
28
  const metavariable = reference.getMetavariable(),
29
- metavariableEqualToMetavariable = this.isMetavariableEqualToMetavariable(metavariable),
30
- comparesToReference = metavariableEqualToMetavariable; ///
29
+ metavariableComparesToMetavariable = this.compareMetavariable(metavariable),
30
+ comparesToReference = metavariableComparesToMetavariable; ///
31
31
 
32
32
  return comparesToReference;
33
33
  }
@@ -9,6 +9,7 @@ import { EMPTY_STRING } from "../constants";
9
9
  import { typeToTypeJSON } from "../utilities/json";
10
10
  import { metaTypeToMetaTypeJSON } from "../utilities/json";
11
11
  import { unifyMetavariable, unifyMetavariableIntrinsically } from "../process/unify";
12
+ import {get} from "necessary/lib/utilities/ajax";
12
13
 
13
14
  export default define(class Metavariable extends Element {
14
15
  constructor(context, string, node, name, type, metaType) {
@@ -39,10 +40,11 @@ export default define(class Metavariable extends Element {
39
40
  this.metaType = metaType;
40
41
  }
41
42
 
42
- isNameEqualTo(name) {
43
- const nameEqualTo = (name === this.name);
43
+ compare(metavariable) {
44
+ const name = metavariable.getName(),
45
+ comparesToMetavariable = (this.name === name);
44
46
 
45
- return nameEqualTo;
47
+ return comparesToMetavariable;
46
48
  }
47
49
 
48
50
  isMetaTypeEqualTo(metaType) { return this.metaType.isEqualTo(metaType); }
@@ -129,11 +131,15 @@ export default define(class Metavariable extends Element {
129
131
  } else {
130
132
  const { FrameSubstitution } = elements,
131
133
  frameSubstitution = FrameSubstitution.fromFrameAndMetavariable(frame, metavariable, context),
132
- substitution = frameSubstitution; ///
134
+ framesubstitutionValidates = frameSubstitution.validate(generalContext, specificContext);
133
135
 
134
- context.addSubstitution(substitution);
136
+ if (framesubstitutionValidates) {
137
+ const substitution = frameSubstitution; ///
138
+
139
+ context.addSubstitution(substitution);
135
140
 
136
- frameUnifies = true;
141
+ frameUnifies = true;
142
+ }
137
143
  }
138
144
  }
139
145
 
@@ -154,6 +160,8 @@ export default define(class Metavariable extends Element {
154
160
  substitution.getString() :
155
161
  EMPTY_STRING;
156
162
 
163
+
164
+
157
165
  context.trace(`Unifying the '${statementString}' statement with the '${metavariableString}${substitutionString}' metavariable...`);
158
166
 
159
167
  const metavariable = this, ///
@@ -162,11 +170,10 @@ export default define(class Metavariable extends Element {
162
170
  if (statementMetavariableUnifies) {
163
171
  statementUnifies = true;
164
172
  } else {
165
- const context = specificContext, ///
166
- substitutionPresent = context.isSubstitutionPresentByMetavariableAndSubstitution(metavariable, substitution);
173
+ const substitutionPresent = context.isSubstitutionPresentByMetavariableAndSubstitution(metavariable, substitution);
167
174
 
168
175
  if (substitutionPresent) {
169
- substitution = context.findSubstitutionByMetavariableAndSubstitution(metavariable, substitution); ///
176
+ substitution = context.findSubstitutionByMetavariableAndSubstitution(metavariable, substitution, generalContet, specificContext); ///
170
177
 
171
178
  const substitutionComparesToStatement = substitution.compareStatement(statement, context);
172
179
 
@@ -179,11 +186,23 @@ export default define(class Metavariable extends Element {
179
186
  StatementSubstitution.fromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context) :
180
187
  StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context);
181
188
 
182
- substitution = statementSubstitution; ///
189
+ if (substitution !== null) {
190
+ const context = generalContext; ///
183
191
 
184
- context.addSubstitution(substitution);
192
+ substitution = statementSubstitution.getSubstitution();
193
+
194
+ substitution.setContext(context);
195
+ }
196
+
197
+ const statementSubstitutionValidates = statementSubstitution.validate(generalContext, specificContext);
185
198
 
186
- statementUnifies = true;
199
+ if (statementSubstitutionValidates) {
200
+ const substitution = statementSubstitution; ///
201
+
202
+ context.addSubstitution(substitution);
203
+
204
+ statementUnifies = true;
205
+ }
187
206
  }
188
207
  }
189
208
 
@@ -194,7 +213,7 @@ export default define(class Metavariable extends Element {
194
213
  return statementUnifies;
195
214
  }
196
215
 
197
- unifyReference(reference, substitutions, generalContext, specificContext) {
216
+ unifyReference(reference, generalContext, specificContext) {
198
217
  let referenceUnifies = false;
199
218
 
200
219
  const context = specificContext, ///
@@ -204,15 +223,15 @@ export default define(class Metavariable extends Element {
204
223
  context.trace(`Unifying the '${referenceString}' reference with the '${metavariableString}' metavariable...`);
205
224
 
206
225
  const metavariable = this, ///
207
- referenceMetavariableUnifies = this.unifyReferenceMetavariable(reference, substitutions, generalContext, specificContext);
226
+ referenceMetavariableUnifies = this.unifyReferenceMetavariable(reference, generalContext, specificContext);
208
227
 
209
228
  if (referenceMetavariableUnifies) {
210
229
  referenceUnifies = true;
211
230
  } else {
212
- const simpleSubstitutionPresent = substitutions.isSimpleSubstitutionPresentByMetavariable(metavariable);
231
+ const simpleSubstitutionPresent = context.isSimpleSubstitutionPresentByMetavariable(metavariable);
213
232
 
214
233
  if (simpleSubstitutionPresent) {
215
- const simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariable(metavariable), ///
234
+ const simpleSubstitution = context.findSimpleSubstitutionByMetavariable(metavariable),
216
235
  substitution = simpleSubstitution, ///
217
236
  substitutionReferenceEqualToReference = substitution.isReferenceEqualToReference(reference);
218
237
 
@@ -268,15 +287,19 @@ export default define(class Metavariable extends Element {
268
287
  let frameMetavariableUnifies = false;
269
288
 
270
289
  const context = specificContext, ///
271
- generalContextFilePath = generalContext.getFilePath(),
290
+ frameString = frame.getString(),
291
+ metavariableString = this.getString(); ///
292
+
293
+ context.trace(`Unifying the '${frameString}' frame's metavariable with the '${metavariableString}' metavariable...`);
294
+
295
+ const generalContextFilePath = generalContext.getFilePath(),
272
296
  specificContextFilePath = specificContext.getFilePath();
273
297
 
274
298
  if (generalContextFilePath === specificContextFilePath) {
275
299
  const metavariable = this, ///
276
- metavariableString = metavariable.getString(),
277
- frameMetavariableEqualToMetvariable = frame.isMetavariableEqualToMetavariable(metavariable, context);
300
+ frameMetavariableComparesToMetvariable = frame.compareMetavariable(metavariable);
278
301
 
279
- if (frameMetavariableEqualToMetvariable) {
302
+ if (frameMetavariableComparesToMetvariable) {
280
303
  frameMetavariableUnifies = true;
281
304
  } else {
282
305
  const frameSingular = frame.isSingular();
@@ -284,99 +307,95 @@ export default define(class Metavariable extends Element {
284
307
  if (frameSingular) {
285
308
  const frameMetavariableName = frame.getMetavariableName(),
286
309
  frameMetavariable = context.findMetavariableByMetavariableName(frameMetavariableName),
287
- frameMetavariableString = frameMetavariable.getString();
288
-
289
- context.trace(`Unifying the frame's '${frameMetavariableString}' metavariable with the '${metavariableString}' metavariable...`);
290
-
291
- const generalMetavariable = this, ///
310
+ generalMetavariable = this, ///
292
311
  specificMetavariable = frameMetavariable, ///
293
- metavariableUnifiesIntrinsically = unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext);
312
+ metavariableUnifiesIntrinsically = unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext);
294
313
 
295
314
  frameMetavariableUnifies = metavariableUnifiesIntrinsically; ///
296
-
297
- if (frameMetavariableUnifies) {
298
- context.debug(`...unified the frame's '${frameMetavariableString}' metavariable with the '${metavariableString}' metavariable.`);
299
- }
300
315
  }
301
316
  }
302
317
  }
303
318
 
319
+ if (frameMetavariableUnifies) {
320
+ context.debug(`...unified the '${frameString}' frame's metavariable with the '${metavariableString}' metavariable.`);
321
+ }
322
+
304
323
  return frameMetavariableUnifies;
305
324
  }
306
325
 
307
- unifyStatementMetavariable(statement, generalContext, specificContext) {
308
- let statementMetavariableUnifies = false;
326
+ unifyReferenceMetavariable(reference, generalContext, specificContext) {
327
+ let referenceMetavariableUnifies = false;
309
328
 
310
329
  const context = specificContext, ///
311
- generalContextFilePath = generalContext.getFilePath(),
330
+ referenceString = reference.getString(),
331
+ metavariableString = this.getString();
332
+
333
+ context.trace(`Unifying the '${referenceString}' reference's metavariable with the '${metavariableString}' metavariable...`);
334
+
335
+ const generalContextFilePath = generalContext.getFilePath(),
312
336
  specificContextFilePath = specificContext.getFilePath();
313
337
 
314
338
  if (generalContextFilePath === specificContextFilePath) {
315
339
  const metavariable = this, ///
316
- metavariableString = metavariable.getString(),
317
- statementMetavariableEqualToMetvariable = statement.isMetavariableEqualToMetavariable(metavariable, context);
340
+ referenceMetavariableComparesToMetvariable = reference.compareMetavariable(metavariable);
318
341
 
319
- if (statementMetavariableEqualToMetvariable) {
320
- statementMetavariableUnifies = true;
342
+ if (referenceMetavariableComparesToMetvariable) {
343
+ referenceMetavariableUnifies = true;
321
344
  } else {
322
- const statementSingular = statement.isSingular();
323
-
324
- if (statementSingular) {
325
- const statementMetavariableName = statement.getMetavariableName(),
326
- statementMetavariable = context.findMetavariableByMetavariableName(statementMetavariableName),
327
- statementMetavariableString = statementMetavariable.getString();
328
-
329
- context.trace(`Unifying the statement's ${statementMetavariableString}' metavariable with the '${metavariableString}' metavariable...`);
330
-
331
- const generalMetavariable = this, ///
332
- specificMetavariable = statementMetavariable, ///
333
- metavariableUnifiesIntrinsically = unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext);
334
-
335
- statementMetavariableUnifies = metavariableUnifiesIntrinsically; ///
345
+ const referenceMetavariable = reference.getMetavariable(),
346
+ generalMetavariable = this, ///
347
+ specificMetavariable = referenceMetavariable, ///
348
+ metavariableUnifiesIntrinsically = unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext);
336
349
 
337
- if (statementMetavariableUnifies) {
338
- context.debug(`...unified the statement's '${statementMetavariableString}' metavariable with the '${metavariableString}' metavariable.`);
339
- }
340
- }
350
+ referenceMetavariableUnifies = metavariableUnifiesIntrinsically; ///
341
351
  }
342
352
  }
343
353
 
344
- return statementMetavariableUnifies;
354
+ if (referenceMetavariableUnifies) {
355
+ context.trace(`...unified the '${referenceString}' reference's metavariable with the '${metavariableString}' metavariable.`);
356
+ }
357
+
358
+ return referenceMetavariableUnifies;
345
359
  }
346
360
 
347
- unifyReferenceMetavariable(reference, substitutions, generalContext, specificContext) {
348
- let referenceMetavariableUnifies = false;
361
+ unifyStatementMetavariable(statement, generalContext, specificContext) {
362
+ let statementMetavariableUnifies = false;
349
363
 
350
364
  const context = specificContext, ///
351
- generalContextFilePath = generalContext.getFilePath(),
365
+ statementString = statement.getString(),
366
+ metavariableString = this.getString(); ///
367
+
368
+ context.trace(`Unifying the '${statementString}' statement's metavariable with the '${metavariableString}' metavariable...`);
369
+
370
+ const generalContextFilePath = generalContext.getFilePath(),
352
371
  specificContextFilePath = specificContext.getFilePath();
353
372
 
354
373
  if (generalContextFilePath === specificContextFilePath) {
355
374
  const metavariable = this, ///
356
- metavariableString = metavariable.getString(),
357
- referenceMetavariableEqualToMetvariable = reference.isMetavariableEqualToMetavariable(metavariable);
375
+ statementMetavariableComparesToMetvariable = statement.compareMetavariable(metavariable);
358
376
 
359
- if (referenceMetavariableEqualToMetvariable) {
360
- referenceMetavariableUnifies = true;
377
+ if (statementMetavariableComparesToMetvariable) {
378
+ statementMetavariableUnifies = true;
361
379
  } else {
362
- const referenceMetavariable = reference.getMetavariable(),
363
- referenceMetavariableString = referenceMetavariable.getString();
364
-
365
- context.trace(`Unifying the reference's ${referenceMetavariableString}' metavariable with the '${metavariableString}' metavariable...`);
366
-
367
- const generalMetavariable = this, ///
368
- specificMetavariable = referenceMetavariable, ///
369
- metavariableUnifiesIntrinsically = unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext);
380
+ const statementSingular = statement.isSingular();
370
381
 
371
- referenceMetavariableUnifies = metavariableUnifiesIntrinsically; ///
382
+ if (statementSingular) {
383
+ const statementMetavariableName = statement.getMetavariableName(),
384
+ statementMetavariable = context.findMetavariableByMetavariableName(statementMetavariableName),
385
+ generalMetavariable = this, ///
386
+ specificMetavariable = statementMetavariable, ///
387
+ metavariableUnifiesIntrinsically = unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext);
372
388
 
373
- if (referenceMetavariableUnifies) {
374
- context.debug(`...unified the reference's '${referenceMetavariableString}' metavariable with the '${metavariableString}' metavariable.`);
389
+ statementMetavariableUnifies = metavariableUnifiesIntrinsically; ///
375
390
  }
376
391
  }
377
392
  }
378
393
 
379
- return referenceMetavariableUnifies;
394
+ if (statementMetavariableUnifies) {
395
+ context.debug(`...unified the '${statementString}' statement's metavariable with the '${metavariableString}' metavariable.`);
396
+ }
397
+
398
+ return statementMetavariableUnifies;
380
399
  }
381
400
 
382
401
  toJSON() {
@@ -78,7 +78,7 @@ export default define(class ProcedureCall extends Element {
78
78
  terms = termsFromPrimitives(primitives),
79
79
  procedure = context.findProcedureByName(name);
80
80
 
81
- // try {
81
+ try {
82
82
  const term = await procedure.call(terms, context),
83
83
  boolean = term.isBoolean();
84
84
 
@@ -91,11 +91,11 @@ export default define(class ProcedureCall extends Element {
91
91
  unifiesIndependently = true;
92
92
  }
93
93
  }
94
- // } catch (exception) {
95
- // const message = exception.getMessage();
96
- //
97
- // context.info(message);
98
- // }
94
+ } catch (exception) {
95
+ const message = exception.getMessage();
96
+
97
+ context.info(message);
98
+ }
99
99
 
100
100
  if (unifiesIndependently) {
101
101
  context.debug(`...unified the '${procedureCallString}' procedure call independently.`);
@@ -26,21 +26,21 @@ export default define(class Proof extends Element {
26
26
  return statement;
27
27
  }
28
28
 
29
- async verify(conclusion, context) {
29
+ async verify(statement, context) {
30
30
  let verifies = false;
31
31
 
32
- asyncScope(async (context) => {
32
+ await asyncScope(async (context) => {
33
33
  const derivationVerifies = await this.derivation.verify(context);
34
34
 
35
35
  if (derivationVerifies) {
36
36
  const lastProofAssertion = context.getLastProofAssertion();
37
37
 
38
38
  if (lastProofAssertion !== null) {
39
- const statement = this.getStatement(),
40
- conclusionStatement = conclusion.getStatement(),
41
- conclusionStatementEqualToStatement = conclusionStatement.isEqualTo(statement);
39
+ const proof = this, ///
40
+ proofStatement = proof.getStatement(),
41
+ proofStatementEqualToStatement = proofStatement.isEqualTo(statement);
42
42
 
43
- if (conclusionStatementEqualToStatement) {
43
+ if (proofStatementEqualToStatement) {
44
44
  verifies = true;
45
45
  }
46
46
  }