occam-verify-cli 0.0.960 → 0.0.962

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 (67) hide show
  1. package/lib/context/local.js +3 -9
  2. package/lib/proofStep.js +8 -5
  3. package/lib/substitution/termForVariable.js +24 -25
  4. package/lib/unifier/statementWithCombinator.js +6 -6
  5. package/lib/unify/statementAtainstStatement.js +16 -16
  6. package/lib/unify/statementWithBracketedCombinator.js +30 -0
  7. package/lib/unify/statementWithCombinators.js +40 -0
  8. package/lib/unify/statementWithMetaType.js +6 -30
  9. package/lib/unify/termWithBracketedConstructor.js +39 -0
  10. package/lib/unify/termWithConstructors.js +61 -0
  11. package/lib/unify/termWithType.js +4 -12
  12. package/lib/utilities/assignments.js +9 -12
  13. package/lib/verifier/intrinsicLevel.js +140 -0
  14. package/lib/verifier/metaLevel.js +11 -20
  15. package/lib/verifier/statementAsCombinator.js +9 -9
  16. package/lib/verifier/termAsConstructor.js +5 -5
  17. package/lib/verify/assertion/contained.js +2 -3
  18. package/lib/verify/assertion/defined.js +2 -4
  19. package/lib/verify/assertion/subproof.js +20 -18
  20. package/lib/verify/assertion/type.js +1 -2
  21. package/lib/verify/declaration.js +27 -9
  22. package/lib/verify/frame.js +25 -6
  23. package/lib/verify/premise.js +3 -3
  24. package/lib/verify/proofStep.js +23 -30
  25. package/lib/verify/statement/qualified.js +93 -137
  26. package/lib/verify/statement/unqualified.js +18 -104
  27. package/lib/verify/statement.js +95 -76
  28. package/lib/verify/statementAsCombinator.js +2 -2
  29. package/lib/verify/statementGivenMetaType.js +41 -0
  30. package/lib/verify/supposition.js +3 -3
  31. package/lib/verify/term.js +39 -65
  32. package/lib/verify/termAsConstructor.js +2 -2
  33. package/lib/verify/termGivenType.js +34 -0
  34. package/package.json +1 -1
  35. package/src/context/local.js +4 -13
  36. package/src/proofStep.js +10 -5
  37. package/src/substitution/termForVariable.js +33 -30
  38. package/src/unifier/statementWithCombinator.js +5 -5
  39. package/src/unify/statementAtainstStatement.js +13 -13
  40. package/src/unify/statementWithBracketedCombinator.js +22 -0
  41. package/src/unify/statementWithCombinators.js +38 -0
  42. package/src/unify/statementWithMetaType.js +6 -42
  43. package/src/unify/termWithBracketedConstructor.js +39 -0
  44. package/src/unify/termWithConstructors.js +63 -0
  45. package/src/unify/termWithType.js +4 -20
  46. package/src/utilities/assignments.js +6 -13
  47. package/src/verifier/intrinsicLevel.js +42 -0
  48. package/src/verifier/metaLevel.js +13 -21
  49. package/src/verifier/statementAsCombinator.js +11 -7
  50. package/src/verifier/termAsConstructor.js +4 -3
  51. package/src/verify/assertion/contained.js +1 -3
  52. package/src/verify/assertion/defined.js +1 -4
  53. package/src/verify/assertion/subproof.js +22 -18
  54. package/src/verify/assertion/type.js +0 -1
  55. package/src/verify/declaration.js +34 -11
  56. package/src/verify/frame.js +32 -5
  57. package/src/verify/premise.js +3 -3
  58. package/src/verify/proofStep.js +26 -38
  59. package/src/verify/statement/qualified.js +104 -184
  60. package/src/verify/statement/unqualified.js +19 -149
  61. package/src/verify/statement.js +126 -72
  62. package/src/verify/statementAsCombinator.js +1 -1
  63. package/src/verify/statementGivenMetaType.js +37 -0
  64. package/src/verify/supposition.js +3 -3
  65. package/src/verify/term.js +44 -93
  66. package/src/verify/termAsConstructor.js +1 -1
  67. package/src/verify/termGivenType.js +32 -0
@@ -1,16 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import verifyEquality from "../../verify/equality";
4
- import verifyJudgement from "../../verify/judgement";
5
3
  import verifyStatement from "../../verify/statement";
6
- import verifyTypeAssertion from "../assertion/type";
7
4
 
8
5
  import { nodeQuery } from "../../utilities/query";
9
6
 
10
- const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
11
- equalityNodeQuery = nodeQuery("/statement/equality!"),
12
- judgementNodeQuery = nodeQuery("/statement/judgement!"),
13
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!");
7
+ const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
14
8
 
15
9
  export default function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
16
10
  let unqualifiedStatementVerified;
@@ -19,18 +13,18 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
19
13
 
20
14
  localContext.trace(`Verifying the '${unqualifiedStatementString}' unqualified statement...`, unqualifiedStatementNode);
21
15
 
22
- const verifyUnqualifiedStatementFunctions = [
23
- verifyDerivedUnqualifiedStatement,
24
- verifyStatedUnqualifiedStatement
25
- ];
16
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
17
+ statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
26
18
 
27
- unqualifiedStatementVerified = verifyUnqualifiedStatementFunctions.some((verifyUnqualifiedStatementFunction) => {
28
- const unqualifiedStatementVerified = verifyUnqualifiedStatementFunction(unqualifiedStatementNode, assignments, derived, localContext);
19
+ if (statementVerified) {
20
+ if (derived) {
21
+ const derivedUnqualifiedStatementVerified = verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
29
22
 
30
- if (unqualifiedStatementVerified) {
31
- return true;
23
+ unqualifiedStatementVerified = derivedUnqualifiedStatementVerified; ///
24
+ } else {
25
+ unqualifiedStatementVerified = true;
32
26
  }
33
- });
27
+ }
34
28
 
35
29
  if (unqualifiedStatementVerified) {
36
30
  localContext.debug(`...verified the '${unqualifiedStatementString}' unqualified statement.`, unqualifiedStatementNode);
@@ -39,145 +33,21 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
39
33
  return unqualifiedStatementVerified;
40
34
  }
41
35
 
42
- function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
43
- let derivedUnqualifiedStatementVerified = false;
36
+ function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
37
+ let derivedUnqualifiedStatementVerified;
44
38
 
45
- if (derived) {
46
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
47
- unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
48
-
49
- localContext.trace(`Verifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
39
+ const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
50
40
 
51
- const statementUnified = localContext.unifyStatement(statementNode, localContext);
41
+ localContext.trace(`Verifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
52
42
 
53
- if (statementUnified) {
54
- derivedUnqualifiedStatementVerified = true;
55
- } else {
56
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
57
- derivedStatementVerified = verifyDerivedStatement(statementNode, assignments, derived, localContext);
43
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
44
+ statementUnified = localContext.unifyStatement(statementNode, localContext);
58
45
 
59
- derivedUnqualifiedStatementVerified = derivedStatementVerified; ///
60
- }
46
+ derivedUnqualifiedStatementVerified = statementUnified; ///
61
47
 
62
- if (derivedUnqualifiedStatementVerified) {
63
- localContext.debug(`...verified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
64
- }
48
+ if (derivedUnqualifiedStatementVerified) {
49
+ localContext.debug(`...verified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
65
50
  }
66
51
 
67
52
  return derivedUnqualifiedStatementVerified;
68
53
  }
69
-
70
- function verifyStatedUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
71
- let statedUnqualifiedStatementVerified = false;
72
-
73
- if (!derived) {
74
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
75
- unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
76
-
77
- localContext.trace(`Verifying the '${unqualifiedStatementString}' stated unqualified statement...`, unqualifiedStatementNode);
78
-
79
- const statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
80
-
81
- statedUnqualifiedStatementVerified = statementVerified; ///
82
-
83
- if (statedUnqualifiedStatementVerified) {
84
- localContext.debug(`...verified the '${unqualifiedStatementString}' stated unqualified statement.`, unqualifiedStatementNode);
85
- }
86
- }
87
-
88
- return statedUnqualifiedStatementVerified;
89
- }
90
-
91
- function verifyDerivedStatement(statementNode, assignments, derived, localContext) {
92
- let derivedStatementVerified;
93
-
94
- const statementString = localContext.nodeAsString(statementNode);
95
-
96
- localContext.trace(`Verifying the '${statementString}' derived statement...`, statementNode);
97
-
98
- const verifyDerivedStatementFunctions = [
99
- verifyDerivedStatementAsEquality,
100
- verifyDerivedStatementAsJudgement,
101
- verifyDerivedStatementAsTypeAssertion
102
- ];
103
-
104
- derivedStatementVerified = verifyDerivedStatementFunctions.every((verifyDerivedStatementFunction) => { ///
105
- const derivedStatementVerified = verifyDerivedStatementFunction(statementNode, assignments, derived, localContext);
106
-
107
- if (derivedStatementVerified) {
108
- return true;
109
- }
110
- });
111
-
112
- if (derivedStatementVerified) {
113
- localContext.debug(`...verified the '${statementString}' derived statement.`, statementNode);
114
- }
115
-
116
- return derivedStatementVerified;
117
- }
118
-
119
- function verifyDerivedStatementAsEquality(statementNode, assignments, derived, localContext) {
120
- let derivedStatementVerifiedAsEquality = true; ///
121
-
122
- const equalityNode = equalityNodeQuery(statementNode);
123
-
124
- if (equalityNode !== null) {
125
- const statementString = localContext.nodeAsString(statementNode);
126
-
127
- localContext.trace(`Verifying the '${statementString}' derived statement as an equality...`, statementNode);
128
-
129
- const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext);
130
-
131
- derivedStatementVerifiedAsEquality = equalityVerified; ///
132
-
133
- if (derivedStatementVerifiedAsEquality) {
134
- localContext.debug(`...verified the '${statementString}' derived statement as an equality.`, statementNode);
135
- }
136
- }
137
-
138
- return derivedStatementVerifiedAsEquality;
139
- }
140
-
141
- function verifyDerivedStatementAsJudgement(statementNode, assignments, derived, localContext) {
142
- let derivedStatementVerifiedAsJudgement = true;
143
-
144
- const judgementNode = judgementNodeQuery(statementNode);
145
-
146
- if (judgementNode !== null) {
147
- const statementString = localContext.nodeAsString(statementNode);
148
-
149
- localContext.trace(`Verifying the '${statementString}' derived statement as a judgement...`, statementNode);
150
-
151
- const judgementVerified = verifyJudgement(judgementNode, assignments, derived, localContext);
152
-
153
- derivedStatementVerifiedAsJudgement = judgementVerified; ///
154
-
155
- if (derivedStatementVerifiedAsJudgement) {
156
- localContext.debug(`...verified the '${statementString}' derived statement as a judgement.`, statementNode);
157
- }
158
- }
159
-
160
- return derivedStatementVerifiedAsJudgement;
161
- }
162
-
163
- function verifyDerivedStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
164
- let statementVerifiedAsTypeAssertion = true; ///
165
-
166
- const typeAssertionNode = typeAssertionNodeQuery(statementNode);
167
-
168
- if (typeAssertionNode !== null) {
169
- const statementString = localContext.nodeAsString(statementNode);
170
-
171
- localContext.trace(`Verifying the '${statementString}' derived statement as a type assertion...`, statementNode);
172
-
173
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext);
174
-
175
- statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
176
-
177
- if (statementVerifiedAsTypeAssertion) {
178
- localContext.debug(`...verified the '${statementString}' derived statement as a type assertion.`, statementNode);
179
- }
180
- }
181
-
182
- return statementVerifiedAsTypeAssertion;
183
- }
@@ -1,49 +1,72 @@
1
1
  "use strict";
2
2
 
3
3
  import shim from "../shim";
4
+ import verifyFrame from "../verify/frame";
4
5
  import verifyEquality from "../verify/equality";
5
6
  import verifyJudgement from "../verify/judgement";
6
- import metaLevelVerifier from "../verifier/metaLevel";
7
- import bracketedCombinator from "../ocmbinator/bracketed";
7
+ import verifyDeclaration from "../verify/declaration";
8
8
  import verifyTypeAssertion from "../verify/assertion/type";
9
9
  import verifyDefinedAssertion from "../verify/assertion/defined";
10
10
  import verifySubproofAssertion from "../verify/assertion/subproof";
11
11
  import verifyContainedAssertion from "../verify/assertion/contained";
12
- import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
12
+ import unifyStatementWithCombinators from "../unify/statementWithCombinators";
13
+ import unifyStatementWithBracketedCombinator from "../unify/statementWithBracketedCombinator";
13
14
 
14
15
  import { nodeQuery } from "../utilities/query";
15
16
 
16
- const equalityNodeQuery = nodeQuery("/statement/equality!"),
17
+ const frameNodeQuery = nodeQuery("/statement/frame!"),
18
+ equalityNodeQuery = nodeQuery("/statement/equality!"),
17
19
  judgementNodeQuery = nodeQuery("/statement/judgement!"),
18
- metavariableNodeQuery = nodeQuery("/*/metavariable!"),
20
+ declarationNodeQuery = nodeQuery("/statement/declaration!"),
21
+ substitutionNodeQuery = nodeQuery("/statement/substitution!"),
22
+ metavariableNodeQuery = nodeQuery("/statement/metavariable!"),
19
23
  typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
20
24
  definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
21
25
  subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
22
26
  containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
23
27
 
28
+ const unifyStatementFunctions = [
29
+ unifyStatementWithCombinators,
30
+ unifyStatementWithBracketedCombinator
31
+ ],
32
+ verifyStatementFunctions = [
33
+ verifyStatementAsEquality,
34
+ verifyStatementAsFrame,
35
+ verifyStatementAsJudgement,
36
+ verifyStatementAsDeclaration,
37
+ verifyStatementAsSubstitution,
38
+ verifyStatementAsTypeAssertion,
39
+ verifyStatementAsDefinedAssertion,
40
+ verifyStatementAsSubproofAssertion,
41
+ verifyStatementAsContainedAssertion
42
+ ];
43
+
24
44
  function verifyStatement(statementNode, assignments, derived, localContext) {
25
- let statementVerified;
45
+ let statementVerified = false;
26
46
 
27
47
  const statementString = localContext.nodeAsString(statementNode);
28
48
 
29
49
  localContext.trace(`Verifying the '${statementString}' statement...`, statementNode);
30
50
 
31
- const statementUnifiedWithCombinators = unifyStatementWithCombinators(statementNode, assignments, derived, localContext);
51
+ if (!statementVerified) {
52
+ const statementVerifiedAsMetavariable = verifyStatementAsMetavariable(statementNode, assignments, derived, localContext);
32
53
 
33
- if (statementUnifiedWithCombinators) {
34
- statementVerified = true;
35
- } else {
36
- const verifyStatementFunctions = [
37
- verifyStatementAsMetavariable,
38
- verifyStatementAsEquality,
39
- verifyStatementAsJudgement,
40
- verifyStatementAsTypeAssertion,
41
- verifyStatementAsDefinedAssertion,
42
- verifyStatementAsSubproofAssertion,
43
- verifyStatementAsContainedAssertion,
44
- unifyStatementWithCombinators
45
- ];
54
+ statementVerified = statementVerifiedAsMetavariable; ///
55
+ }
56
+
57
+ if (!statementVerified) {
58
+ const statementUnified = unifyStatementFunctions.some((unifyStatementFunction) => {
59
+ const statementUnified = unifyStatementFunction(statementNode, assignments, derived, localContext);
60
+
61
+ if (statementUnified) {
62
+ return true;
63
+ }
64
+ });
46
65
 
66
+ statementVerified = statementUnified; ///
67
+ }
68
+
69
+ if (!statementVerified) {
47
70
  statementVerified = verifyStatementFunctions.some((verifyStatementFunction) => {
48
71
  const statementVerified = verifyStatementFunction(statementNode, assignments, derived, localContext);
49
72
 
@@ -76,9 +99,9 @@ function verifyStatementAsMetavariable(statementNode, assignments, derived, loca
76
99
 
77
100
  localContext.trace(`Verifying the '${statementString}' statement as a metavariable...`, statementNode);
78
101
 
79
- const verified = metaLevelVerifier.verify(statementNode, localContext);
102
+ const metavariableVerified = verifyMetavariable(metavariableNode, localContext);
80
103
 
81
- statementVerifiedAsMetavariable = verified; ///
104
+ statementVerifiedAsMetavariable = metavariableVerified;
82
105
 
83
106
  if (statementVerifiedAsMetavariable) {
84
107
  localContext.debug(`...verified the '${statementString}' statement as a metavariable.`, statementNode);
@@ -110,6 +133,28 @@ function verifyStatementAsEquality(statementNode, assignments, derived, localCon
110
133
  return statementVerifiedAsEquality;
111
134
  }
112
135
 
136
+ function verifyStatementAsFrame(statementNode, assignments, derived, localContext) {
137
+ let statementVerifiedAsFrame = false;
138
+
139
+ const frameNode = frameNodeQuery(statementNode);
140
+
141
+ if (frameNode !== null) {
142
+ const statementString = localContext.nodeAsString(statementNode);
143
+
144
+ localContext.trace(`Verifying the '${statementString}' statement as a frame...`, statementNode);
145
+
146
+ const frameVerified = verifyFrame(frameNode, assignments, derived, localContext);
147
+
148
+ statementVerifiedAsFrame = frameVerified; ///
149
+
150
+ if (statementVerifiedAsFrame) {
151
+ localContext.debug(`...verified the '${statementString}' statement as a frame.`, statementNode);
152
+ }
153
+ }
154
+
155
+ return statementVerifiedAsFrame;
156
+ }
157
+
113
158
  function verifyStatementAsJudgement(statementNode, assignments, derived, localContext) {
114
159
  let statementVerifiedAsJudgement = false;
115
160
 
@@ -132,6 +177,50 @@ function verifyStatementAsJudgement(statementNode, assignments, derived, localCo
132
177
  return statementVerifiedAsJudgement;
133
178
  }
134
179
 
180
+ function verifyStatementAsDeclaration(statementNode, assignments, derived, localContext) {
181
+ let statementVerifiedAsDeclaration = false;
182
+
183
+ const declarationNode = declarationNodeQuery(statementNode);
184
+
185
+ if (declarationNode !== null) {
186
+ const statementString = localContext.nodeAsString(statementNode);
187
+
188
+ localContext.trace(`Verifying the '${statementString}' statement as a declaration...`, statementNode);
189
+
190
+ const declarationVerified = verifyDeclaration(declarationNode, assignments, derived, localContext);
191
+
192
+ statementVerifiedAsDeclaration = declarationVerified; ///
193
+
194
+ if (statementVerifiedAsDeclaration) {
195
+ localContext.debug(`...verified the '${statementString}' statement as a declaration.`, statementNode);
196
+ }
197
+ }
198
+
199
+ return statementVerifiedAsDeclaration;
200
+ }
201
+
202
+ function verifyStatementAsSubstitution(statementNode, assignments, derived, localContext) {
203
+ let statementVerifiedAsSubstitution = false;
204
+
205
+ const substitutionNode = substitutionNodeQuery(statementNode);
206
+
207
+ if (substitutionNode !== null) {
208
+ const statementString = localContext.nodeAsString(statementNode);
209
+
210
+ localContext.trace(`Verifying the '${statementString}' statement as a substitution...`, statementNode);
211
+
212
+ const substitutionVerified = verifySubstitution(substitutionNode, assignments, derived, localContext);
213
+
214
+ statementVerifiedAsSubstitution = substitutionVerified; ///
215
+
216
+ if (statementVerifiedAsSubstitution) {
217
+ localContext.debug(`...verified the '${statementString}' statement as a substitution.`, statementNode);
218
+ }
219
+ }
220
+
221
+ return statementVerifiedAsSubstitution;
222
+ }
223
+
135
224
  function verifyStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
136
225
  let statementVerifiedAsTypeAssertion = false;
137
226
 
@@ -191,7 +280,7 @@ function verifyStatementAsSubproofAssertion(statementNode, assignments, derived,
191
280
  statementVerifiedAsSubproofAssertion = subproofAssertionVerified; ///
192
281
 
193
282
  if (statementVerifiedAsSubproofAssertion) {
194
- localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
283
+ localContext.debug(`...verified the '${statementString}' statement as a subproof assertion.`, statementNode);
195
284
  }
196
285
  }
197
286
 
@@ -206,73 +295,38 @@ function verifyStatementAsContainedAssertion(statementNode, assignments, derived
206
295
  if (containedAssertionNode !== null) {
207
296
  const statementString = localContext.nodeAsString(statementNode);
208
297
 
209
- localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, statementNode);
298
+ localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`, statementNode);
210
299
 
211
300
  const containedAssertionVerified = verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext);
212
301
 
213
302
  statementVerifiedAsContainedAssertion = containedAssertionVerified; ///
214
303
 
215
304
  if (statementVerifiedAsContainedAssertion) {
216
- localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
305
+ localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`, statementNode);
217
306
  }
218
307
  }
219
308
 
220
309
  return statementVerifiedAsContainedAssertion;
221
310
  }
222
311
 
223
- function unifyStatementWithCombinators(statementNode, assignments, derived, localContext) {
224
- let statementUnifiedWithCombinators = false;
225
-
226
- const equalityNode = equalityNodeQuery(statementNode),
227
- judgementNode = judgementNodeQuery(statementNode),
228
- metavariableNode = metavariableNodeQuery(statementNode),
229
- typeAssertionNode = typeAssertionNodeQuery(statementNode),
230
- definedAssertionNode = definedAssertionNodeQuery(statementNode),
231
- subproofAssertionNode = subproofAssertionNodeQuery(statementNode),
232
- containedAssertionNode = containedAssertionNodeQuery(statementNode);
233
-
234
- if ( (equalityNode === null) &&
235
- (judgementNode === null) &&
236
- (metavariableNode === null) &&
237
- (typeAssertionNode === null) &&
238
- (definedAssertionNode === null) &&
239
- (subproofAssertionNode === null) &&
240
- (containedAssertionNode === null) ) {
312
+ function verifyMetavariable(metavariableNode, localContext) {
313
+ let metavariableVerified = false;
241
314
 
242
- let combinators = localContext.getCombinators();
315
+ const metavariableString = localContext.nodeAsString(metavariableNode);
243
316
 
244
- combinators = [ ///
245
- bracketedCombinator,
246
- ...combinators
247
- ];
317
+ localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
248
318
 
249
- statementUnifiedWithCombinators = combinators.some((combinator) => {
250
- const statementUnifiedWithCombinator = unifyStatementWithCombinator(statementNode, combinator, localContext);
319
+ const metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode);
251
320
 
252
- if (statementUnifiedWithCombinator) {
253
- return true;
254
- }
255
- });
321
+ if (!metavariablePresent) {
322
+ localContext.trace(`The '${metavariableString}' metavariable is not present.`, metavariableNode);
323
+ } else {
324
+ metavariableVerified = true;
256
325
  }
257
326
 
258
- return statementUnifiedWithCombinators;
259
- }
260
-
261
- function unifyStatementWithCombinator(statementNode, combinator, localContext) {
262
- let statementUnifiedWithCombinator;
263
-
264
- const statementString = localContext.nodeAsString(statementNode),
265
- combinatorString = combinator.getString();
266
-
267
- localContext.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`, statementNode);
268
-
269
- const combinatorStatementNode = combinator.getStatementNode();
270
-
271
- statementUnifiedWithCombinator = statementWithCombinatorUnifier.unify(statementNode, combinatorStatementNode, localContext);
272
-
273
- if (statementUnifiedWithCombinator) {
274
- localContext.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`, statementNode);
327
+ if (metavariableVerified) {
328
+ localContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
275
329
  }
276
330
 
277
- return statementUnifiedWithCombinator;
331
+ return metavariableVerified;
278
332
  }
@@ -10,7 +10,7 @@ export default function verifyStatementAsCombinator(statementNode, fileContext)
10
10
 
11
11
  fileContext.trace(`Verifying the '${statementString}' statement as a combinator...`, statementNode);
12
12
 
13
- statementVerifiedAsCombinator = statementAsCombinatorVerifier.verify(statementNode, fileContext);
13
+ statementVerifiedAsCombinator = statementAsCombinatorVerifier.verifyStatement(statementNode, fileContext);
14
14
 
15
15
  if (statementVerifiedAsCombinator) {
16
16
  const tokens = fileContext.getTokens(),
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import shim from "../shim";
4
+
5
+ import { FRAME_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
6
+
7
+ export default function verifyStatementGivenMetaType(statementNode, metaType, assignments, derived, localContext) {
8
+ let statementVerifiedGivenMetaType;
9
+
10
+ const metaTypeName = metaType.getName();
11
+
12
+ switch (metaTypeName) {
13
+ case FRAME_META_TYPE_NAME: {
14
+
15
+ debugger
16
+
17
+ break;
18
+ }
19
+
20
+ case STATEMENT_META_TYPE_NAME: {
21
+ const { verifyStatement } = shim,
22
+ statementVerified = verifyStatement(statementNode, assignments, derived, localContext)
23
+
24
+ statementVerifiedGivenMetaType = statementVerified;
25
+
26
+ break;
27
+ }
28
+
29
+ default: {
30
+
31
+ debugger
32
+
33
+ }
34
+ }
35
+
36
+ return statementVerifiedGivenMetaType;
37
+ }
@@ -5,7 +5,7 @@ import Supposition from "../supposition";
5
5
  import verifyUnqualifiedStatement from "../verify/statement/unqualified";
6
6
 
7
7
  import { nodeQuery } from "../utilities/query";
8
- import { assignAssignment } from "../utilities/assignments";
8
+ import { assignAssignments } from "../utilities/assignments";
9
9
 
10
10
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
11
11
  unqualifiedStatementNodeQuery = nodeQuery("/supposition/unqualifiedStatement!");
@@ -25,9 +25,9 @@ export default function verifySupposition(suppositionNode, suppositions, localCo
25
25
  unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
26
26
 
27
27
  if (unqualifiedStatementVerified) {
28
- const assignmentAssigned = assignAssignment(assignments, localContext);
28
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
29
29
 
30
- if (assignmentAssigned) {
30
+ if (assignmentsAssigned) {
31
31
  const statementNode = statementNodeQuery(unqualifiedStatementNode),
32
32
  supposition = Supposition.fromStatementNode(statementNode),
33
33
  proofStep = ProofStep.fromStatementNode(statementNode);