occam-verify-cli 0.0.1074 → 0.0.1077

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 (141) hide show
  1. package/lib/assertion/contained.js +6 -4
  2. package/lib/assertion/defined.js +2 -2
  3. package/lib/assertion/subproof.js +46 -30
  4. package/lib/assertion/type.js +4 -5
  5. package/lib/assignment/variable.js +2 -2
  6. package/lib/axiom.js +9 -12
  7. package/lib/combinator/bracketed.js +3 -2
  8. package/lib/combinator.js +6 -6
  9. package/lib/conclusion.js +2 -3
  10. package/lib/conjecture.js +10 -15
  11. package/lib/consequent.js +2 -3
  12. package/lib/constructor/bracketed.js +3 -2
  13. package/lib/constructor.js +6 -6
  14. package/lib/context/file.js +48 -102
  15. package/lib/context/local.js +21 -20
  16. package/lib/declaration/combinator.js +5 -5
  17. package/lib/declaration/constructor.js +5 -5
  18. package/lib/declaration/metavariable.js +4 -5
  19. package/lib/declaration/type.js +3 -3
  20. package/lib/declaration/variable.js +5 -5
  21. package/lib/declaration.js +10 -9
  22. package/lib/derivation.js +6 -2
  23. package/lib/equality.js +6 -2
  24. package/lib/frame.js +11 -13
  25. package/lib/index.js +13 -1
  26. package/lib/judgement.js +11 -8
  27. package/lib/label.js +6 -7
  28. package/lib/lemma.js +10 -15
  29. package/lib/metaLemma.js +15 -15
  30. package/lib/metatheorem.js +9 -14
  31. package/lib/metavariable.js +22 -27
  32. package/lib/mixins/statement/qualified/unify.js +2 -2
  33. package/lib/mixins/statement/unify.js +2 -2
  34. package/lib/mixins/statement/verify.js +20 -54
  35. package/lib/mixins/term/verify.js +3 -3
  36. package/lib/premise.js +24 -21
  37. package/lib/proof.js +8 -4
  38. package/lib/proofStep.js +62 -28
  39. package/lib/reference.js +3 -3
  40. package/lib/rule.js +17 -24
  41. package/lib/statement/qualified.js +8 -4
  42. package/lib/statement.js +5 -5
  43. package/lib/subDerivation.js +6 -2
  44. package/lib/subproof.js +10 -7
  45. package/lib/substitution/statementForMetavariable.js +36 -27
  46. package/lib/substitution.js +13 -13
  47. package/lib/substitutions.js +73 -49
  48. package/lib/supposition.js +30 -23
  49. package/lib/term.js +5 -5
  50. package/lib/theorem.js +10 -15
  51. package/lib/topLevelAssertion.js +12 -6
  52. package/lib/type.js +5 -5
  53. package/lib/unifier/equality.js +2 -2
  54. package/lib/unifier/metaLevel.js +6 -6
  55. package/lib/unifier/metavariable.js +5 -5
  56. package/lib/unifier/statementWithCombinator.js +2 -2
  57. package/lib/utilities/brackets.js +2 -2
  58. package/lib/utilities/node.js +2 -7
  59. package/lib/utilities/nominal.js +26 -0
  60. package/lib/utilities/subproof.js +2 -2
  61. package/lib/utilities/tokens.js +3 -7
  62. package/lib/variable.js +6 -6
  63. package/lib/verifier/statementAsCombinator.js +4 -11
  64. package/lib/verifier/termAsConstructor.js +4 -4
  65. package/lib/verifier/topLevel.js +9 -15
  66. package/package.json +1 -1
  67. package/src/assertion/contained.js +7 -5
  68. package/src/assertion/defined.js +2 -2
  69. package/src/assertion/subproof.js +61 -42
  70. package/src/assertion/type.js +2 -2
  71. package/src/assignment/variable.js +2 -1
  72. package/src/axiom.js +6 -8
  73. package/src/combinator/bracketed.js +6 -3
  74. package/src/combinator.js +4 -4
  75. package/src/conclusion.js +2 -2
  76. package/src/conjecture.js +8 -11
  77. package/src/consequent.js +2 -2
  78. package/src/constructor/bracketed.js +6 -3
  79. package/src/constructor.js +4 -4
  80. package/src/context/file.js +46 -84
  81. package/src/context/local.js +15 -17
  82. package/src/declaration/combinator.js +5 -4
  83. package/src/declaration/constructor.js +5 -4
  84. package/src/declaration/metavariable.js +3 -4
  85. package/src/declaration/type.js +2 -2
  86. package/src/declaration/variable.js +5 -4
  87. package/src/declaration.js +12 -9
  88. package/src/derivation.js +7 -1
  89. package/src/equality.js +7 -1
  90. package/src/frame.js +10 -9
  91. package/src/index.js +12 -0
  92. package/src/judgement.js +11 -5
  93. package/src/label.js +5 -5
  94. package/src/lemma.js +8 -11
  95. package/src/metaLemma.js +13 -11
  96. package/src/metatheorem.js +6 -10
  97. package/src/metavariable.js +23 -42
  98. package/src/mixins/statement/qualified/unify.js +1 -2
  99. package/src/mixins/statement/unify.js +2 -2
  100. package/src/mixins/statement/verify.js +35 -88
  101. package/src/mixins/term/verify.js +3 -2
  102. package/src/premise.js +41 -33
  103. package/src/proof.js +10 -3
  104. package/src/proofStep.js +91 -32
  105. package/src/reference.js +3 -2
  106. package/src/rule.js +17 -24
  107. package/src/statement/qualified.js +9 -5
  108. package/src/statement.js +3 -3
  109. package/src/subDerivation.js +8 -2
  110. package/src/subproof.js +12 -5
  111. package/src/substitution/statementForMetavariable.js +45 -30
  112. package/src/substitution.js +9 -9
  113. package/src/substitutions.js +75 -45
  114. package/src/supposition.js +50 -35
  115. package/src/term.js +3 -3
  116. package/src/theorem.js +8 -11
  117. package/src/topLevelAssertion.js +16 -7
  118. package/src/type.js +3 -3
  119. package/src/unifier/equality.js +1 -1
  120. package/src/unifier/metaLevel.js +8 -10
  121. package/src/unifier/metavariable.js +5 -5
  122. package/src/unifier/statementWithCombinator.js +5 -5
  123. package/src/utilities/brackets.js +2 -2
  124. package/src/utilities/node.js +1 -10
  125. package/src/utilities/nominal.js +14 -0
  126. package/src/utilities/subproof.js +2 -2
  127. package/src/utilities/tokens.js +2 -9
  128. package/src/variable.js +4 -4
  129. package/src/verifier/statementAsCombinator.js +4 -18
  130. package/src/verifier/termAsConstructor.js +4 -4
  131. package/src/verifier/topLevel.js +15 -14
  132. package/lib/assignment/metavariable.js +0 -62
  133. package/lib/unifier/intrinsicLevel.js +0 -144
  134. package/lib/utilities/unify.js +0 -24
  135. package/lib/verifier/intrinsicLevel.js +0 -140
  136. package/lib/verifier/metaLevel.js +0 -147
  137. package/src/assignment/metavariable.js +0 -30
  138. package/src/unifier/intrinsicLevel.js +0 -54
  139. package/src/utilities/unify.js +0 -23
  140. package/src/verifier/intrinsicLevel.js +0 -42
  141. package/src/verifier/metaLevel.js +0 -54
@@ -2,11 +2,11 @@
2
2
 
3
3
  import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
- import metavariableUnifier from "./unifier/metavariable";
6
5
  import FrameForMetavariableSubstitution from "./substitution/frameForMetavariable";
7
6
  import StatementForMetavariableSubstitution from "./substitution/statementForMetavariable";
8
7
 
9
8
  import { nodeQuery } from "./utilities/query";
9
+ import { EMPTY_STRING } from "./constants";
10
10
  import { metavariableNodeFromMetavariableString } from "./utilities/node";
11
11
  import { metaTypeFromJSON, metaTypeToMetaTypeJSON } from "./utilities/json";
12
12
  import { typeNameFromTypeNode, metavariableNameFromMetavariableNode } from "./utilities/name";
@@ -80,11 +80,11 @@ class Metavariable {
80
80
 
81
81
  localContext.trace(`Unifying the '${frameString}' frame with the '${metavariableString}' metavariable...`);
82
82
 
83
- const metavariableName = this.name, ///
84
- simpleSubstitutionPresent = substitutions.isSimpleSubstitutionPresentByMetavariableName(metavariableName);
83
+ const metavariableNode = this.node, ///
84
+ simpleSubstitutionPresent = substitutions.isSimpleSubstitutionPresentByMetavariableNode(metavariableNode);
85
85
 
86
86
  if (simpleSubstitutionPresent) {
87
- const simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariableName(metavariableName),
87
+ const simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariableNode(metavariableNode),
88
88
  substitution = simpleSubstitution, ///
89
89
  frameNodeMatches = substitution.matchFrameNode(frameNode);
90
90
 
@@ -123,22 +123,19 @@ class Metavariable {
123
123
  metavariableString = this.string, ///
124
124
  substitutionString = (substitution !== null) ?
125
125
  substitution.getString() :
126
- null;
126
+ EMPTY_STRING;
127
127
 
128
- (substitutionString !== null) ?
129
- localContext.trace(`Unifying the '${statementString}' statement with the '${metavariableString}' metavariable given the ${substitutionString} substitution...`) :
130
- localContext.trace(`Unifying the '${statementString}' statement with the '${metavariableString}' metavariable...`);
128
+ localContext.trace(`Unifying the '${statementString}' statement with the '${metavariableString}${substitutionString}' metavariable...`);
131
129
 
132
130
  const statementNode = statement.getNode(),
133
131
  metavariableNode = this.node, ///
134
- metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
135
132
  substitutionNode = (substitution !== null) ?
136
133
  substitution.getSubstitutionNode() :
137
134
  null,
138
- substitutionPresent = substitutions.isSubstitutionPresentByMetavariableNameAndSubstitutionNode(metavariableName, substitutionNode);
135
+ substitutionPresent = substitutions.isSubstitutionPresentByMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode);
139
136
 
140
137
  if (substitutionPresent) {
141
- const substitution = substitutions.findSubstitutionByMetavariableNameAndSubstitutionNode(metavariableName, substitutionNode),
138
+ const substitution = substitutions.findSubstitutionByMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode),
142
139
  statementNodeMatches = substitution.matchStatementNode(statementNode);
143
140
 
144
141
  if (statementNodeMatches) {
@@ -149,7 +146,7 @@ class Metavariable {
149
146
  metavariable = metavariableFromMetavariableNode(metavariableNode, localContext),
150
147
  statementMetavariable = statementMetavariableFromStatementNode(statementNode, localContext);
151
148
 
152
- if (metavariable === statementMetavariable) {
149
+ if ((metavariable !== null) && (metavariable === statementMetavariable)) {
153
150
  statementUnified = true;
154
151
  } else {
155
152
  const metavariable = this, ///
@@ -164,9 +161,7 @@ class Metavariable {
164
161
  }
165
162
 
166
163
  if (statementUnified) {
167
- (substitutionString !== null) ?
168
- localContext.debug(`...unified the '${statementString}' statement with the '${metavariableString}' metavariable given the ${substitutionString} substitution.`) :
169
- localContext.debug(`...unified the '${statementString}' statement with the '${metavariableString}' metavariable.`);
164
+ localContext.debug(`...unified the '${statementString}' statement with the '${metavariableString}${substitutionString}' metavariable.`);
170
165
  }
171
166
 
172
167
  return statementUnified;
@@ -180,8 +175,8 @@ class Metavariable {
180
175
 
181
176
  localContext.trace(`Unifying the '${substitutionString}' substitution with the '${metavariableString}' metavariable...`);
182
177
 
183
- const metavariableName = this.name, ///
184
- judgement = localContext.findJudgementByMetavariableName(metavariableName);
178
+ const metavariableNode = this.node, ///
179
+ judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
185
180
 
186
181
  if (judgement !== null){
187
182
  const declaration = judgement.getDeclaration();
@@ -203,18 +198,10 @@ class Metavariable {
203
198
 
204
199
  localContext.trace(`Verifying the '${metavariableString}' metavariable...`);
205
200
 
206
- const metavariableName = this.name,
207
- metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
208
-
209
- if (metavariable !== null) {
210
- const metavariableA = metavariable, ///
211
- metavariableB = this,
212
- metavariableNodeA = metavariableA.getNode(), ///
213
- metavariableNodeB = metavariableB.getNode(),
214
- metavariableUnified = metavariableUnifier.unify(metavariableNodeA, metavariableNodeB, localContext);
201
+ const metavariableNode = this.node,
202
+ metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode, localContext);
215
203
 
216
- verified = metavariableUnified; ///
217
- }
204
+ verified = metavariablePresent; ///
218
205
 
219
206
  if (verified) {
220
207
  localContext.debug(`...verified the '${metavariableString}' metavariable.`);
@@ -223,12 +210,12 @@ class Metavariable {
223
210
  return verified;
224
211
  }
225
212
 
226
- verifyAtTopLevel(fileContext) {
213
+ verifyWhenDeclared(fileContext) {
227
214
  let verifiedAtTopLevel = false;
228
215
 
229
216
  const metavariableString = this.string; ///
230
217
 
231
- fileContext.trace(`Verifying the '${metavariableString}' metavariable at top level...`);
218
+ fileContext.trace(`Verifying the '${metavariableString}' metavariable when declared...`);
232
219
 
233
220
  const metavariableNode = this.node, ///
234
221
  metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
@@ -262,7 +249,7 @@ class Metavariable {
262
249
  }
263
250
 
264
251
  if (verifiedAtTopLevel) {
265
- fileContext.debug(`...verified the '${metavariableString}' metavariable at top level.`);
252
+ fileContext.debug(`...verified the '${metavariableString}' metavariable when declared.`);
266
253
  }
267
254
 
268
255
  return verifiedAtTopLevel;
@@ -276,9 +263,8 @@ class Metavariable {
276
263
 
277
264
  localContext.trace(`Verifying the '${metavariableString}' metavariable given the '${metaTypeString}' meta-type...`);
278
265
 
279
- const name = this.getName(),
280
- metavariableName = name, ///
281
- metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
266
+ const metavariableNode = this.node, ///
267
+ metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
282
268
 
283
269
  if (metavariable !== null) {
284
270
  const metaTypeMatches = metavariable.matchMetaType(metaType);
@@ -360,8 +346,7 @@ Object.assign(shim, {
360
346
  export default Metavariable;
361
347
 
362
348
  function metavariableFromMetavariableNode(metavariableNode, localContext) {
363
- const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
364
- metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
349
+ const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
365
350
 
366
351
  return metavariable;
367
352
  }
@@ -372,9 +357,7 @@ function frameMetavariableFromStatementNode(frameNode, localContext) {
372
357
  const frameMetavariableNode = frameMetavariableNodeQuery(frameNode);
373
358
 
374
359
  if (frameMetavariableNode !== null) {
375
- const frameMetavariableName = metavariableNameFromMetavariableNode(frameMetavariableNode);
376
-
377
- frameMetavariable = localContext.findMetavariableByMetavariableName(frameMetavariableName);
360
+ frameMetavariable = localContext.findMetavariableByMetavariableNode(frameMetavariableNode, localContext);
378
361
  }
379
362
 
380
363
  return frameMetavariable;
@@ -386,9 +369,7 @@ function statementMetavariableFromStatementNode(statementNode, localContext) {
386
369
  const statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
387
370
 
388
371
  if (statementMetavariableNode !== null) {
389
- const statementMetavariableName = metavariableNameFromMetavariableNode(statementMetavariableNode);
390
-
391
- statementMetavariable = localContext.findMetavariableByMetavariableName(statementMetavariableName);
372
+ statementMetavariable = localContext.findMetavariableByMetavariableNode(statementMetavariableNode, localContext);
392
373
  }
393
374
 
394
375
  return statementMetavariable;
@@ -135,8 +135,7 @@ function unifyAWithReference(qualifiedStatement, substitutions, localContext) {
135
135
 
136
136
  const reference = qualifiedStatement.getReference(),
137
137
  metavariableNode = reference.getMetavariableNode(),
138
- metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
139
- metavariablePresent = localContext.isMetavariablePresentByMetavariableName(metavariableName);
138
+ metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode, localContext);
140
139
 
141
140
  if (metavariablePresent) {
142
141
  const statement = qualifiedStatement.getStatement(),
@@ -28,10 +28,10 @@ function unifyWithCombinators(statement, assignments, stated, localContext) {
28
28
 
29
29
  const combinators = localContext.getCombinators();
30
30
 
31
- assignments = null; ///
32
-
33
31
  stated = true; ///
34
32
 
33
+ assignments = null; ///
34
+
35
35
  unifiedWithCombinators = combinators.some((combinator) => {
36
36
  const unifiedWithCombinator = unifyStatementWithCombinator(statement, combinator, assignments, stated, localContext);
37
37
 
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import Frame from "../../frame";
4
- import Equality from "../../equality";
5
- import Judgement from "../../judgement";
6
- import Declaration from "../../declaration";
7
- import Metavariable from "../../metavariable";
3
+ import shim from "../../shim";
8
4
  import TypeAssertion from "../../assertion/type";
9
5
  import DefinedAssertion from "../../assertion/defined";
10
6
  import SubproofAssertion from "../../assertion/subproof";
@@ -12,20 +8,19 @@ import ContainedAssertion from "../../assertion/contained";
12
8
 
13
9
  import { nodeQuery } from "../../utilities/query";
14
10
 
15
- const frameNodeQuery = nodeQuery("/statement/frame!"),
16
- equalityNodeQuery = nodeQuery("/statement/equality!"),
17
- judgementNodeQuery = nodeQuery("/statement/judgement!"),
18
- declarationNodeQuery = nodeQuery("/statement/declaration!"),
11
+ const equalityNodeQuery = nodeQuery("/statement/equality"),
12
+ judgementNodeQuery = nodeQuery("/statement/judgement"),
19
13
  metavariableNodeQuery = nodeQuery("/statement/metavariable!"),
20
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
21
- definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
22
- subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
23
- containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
14
+ typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion"),
15
+ definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion"),
16
+ subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion"),
17
+ containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion");
24
18
 
25
19
  function verifyAsMetavariable(statement, assignments, stated, localContext) {
26
20
  let verifiedAsMetavariable = false;
27
21
 
28
- const statementNode = statement.getNode(),
22
+ const { Metavariable } = shim,
23
+ statementNode = statement.getNode(),
29
24
  metavariableNode = metavariableNodeQuery(statementNode),
30
25
  metavariable = Metavariable.fromMetavariableNode(metavariableNode, localContext);
31
26
 
@@ -49,7 +44,8 @@ function verifyAsMetavariable(statement, assignments, stated, localContext) {
49
44
  function verifyAsEquality(statement, assignments, stated, localContext) {
50
45
  let verifiedAsEquality = false;
51
46
 
52
- const statementNode = statement.getNode(),
47
+ const { Equality } = shim,
48
+ statementNode = statement.getNode(),
53
49
  equalityNode = equalityNodeQuery(statementNode),
54
50
  equality = Equality.fromEqualityNode(equalityNode, localContext);
55
51
 
@@ -70,34 +66,11 @@ function verifyAsEquality(statement, assignments, stated, localContext) {
70
66
  return verifiedAsEquality;
71
67
  }
72
68
 
73
- function verifyAsFrame(statement, assignments, stated, localContext) {
74
- let verifiedAsFrame = false;
75
-
76
- const statementNode = statement.getNode(),
77
- frameNode = frameNodeQuery(statementNode),
78
- frame = Frame.fromFrameNode(frameNode, localContext);
79
-
80
- if (frame !== null) {
81
- const statementString = statement.getString();
82
-
83
- localContext.trace(`Verifying the '${statementString}' statement as a frame...`);
84
-
85
- const frameVerified = frame.verify(assignments, stated, localContext);
86
-
87
- verifiedAsFrame = frameVerified; ///
88
-
89
- if (verifiedAsFrame) {
90
- localContext.debug(`...verified the '${statementString}' statement as a frame.`);
91
- }
92
- }
93
-
94
- return verifiedAsFrame;
95
- }
96
-
97
69
  function verifyAsJudgement(statement, assignments, stated, localContext) {
98
70
  let verifiedAsJudgement = false;
99
71
 
100
- const statementNode = statement.getNode(),
72
+ const { Judgement } = shim,
73
+ statementNode = statement.getNode(),
101
74
  judgementNode = judgementNodeQuery(statementNode),
102
75
  judgement = Judgement.fromJudgementNode(judgementNode, localContext);
103
76
 
@@ -118,30 +91,6 @@ function verifyAsJudgement(statement, assignments, stated, localContext) {
118
91
  return verifiedAsJudgement;
119
92
  }
120
93
 
121
- function verifyAsDeclaration(statement, assignments, stated, localContext) {
122
- let verifiedAsDeclaration = false;
123
-
124
- const statementNode = statement.getNode(),
125
- declarationNode = declarationNodeQuery(statementNode),
126
- declaration = Declaration.fromDeclarationNode(declarationNode, localContext);
127
-
128
- if (declaration !== null) {
129
- const statementString = statement.getString();
130
-
131
- localContext.trace(`Verifying the '${statementString}' statement as a declaration...`);
132
-
133
- const declarationVerified = declaration.verify(assignments, stated, localContext);
134
-
135
- verifiedAsDeclaration = declarationVerified; ///
136
-
137
- if (verifiedAsDeclaration) {
138
- localContext.debug(`...verified the '${statementString}' statement as a declaration.`);
139
- }
140
- }
141
-
142
- return verifiedAsDeclaration;
143
- }
144
-
145
94
  function verifyAsTypeAssertion(statement, assignments, stated, localContext) {
146
95
  let verifiedAsTypeAssertion = false;
147
96
 
@@ -190,60 +139,58 @@ function verifyAsDefinedAssertion(statement, assignments, stated, localContext)
190
139
  return verifiedAsDefinedAssertion;
191
140
  }
192
141
 
193
- function verifyAsSubproofAssertion(statement, assignments, stated, localContext) {
194
- let verifiedAsSubproofAssertion = false;
142
+ function verifyAsContainedAssertion(statement, assignments, stated, localContext) {
143
+ let verifiedAsContainedAssertion = false;
195
144
 
196
145
  const statementNode = statement.getNode(),
197
- subproofAssertionNode = subproofAssertionNodeQuery(statementNode),
198
- subproofAssertion = SubproofAssertion.fromSubproofAssertionNode(subproofAssertionNode, localContext);
146
+ containedAssertionNode = containedAssertionNodeQuery(statementNode),
147
+ containedAssertion = ContainedAssertion.fromContainedAssertionNode(containedAssertionNode, localContext);
199
148
 
200
- if (subproofAssertionNode !== null) {
149
+ if (containedAssertion !== null) {
201
150
  const statementString = statement.getString();
202
151
 
203
- localContext.trace(`Verifying the '${statementString}' statement as a subproof assertion...`);
152
+ localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`);
204
153
 
205
- const subproofAssertionVerified = subproofAssertion.verify(assignments, stated, localContext);
154
+ const containedAssertionVerified = containedAssertion.verify(assignments, stated, localContext);
206
155
 
207
- verifiedAsSubproofAssertion = subproofAssertionVerified; ///
156
+ verifiedAsContainedAssertion = containedAssertionVerified; ///
208
157
 
209
- if (verifiedAsSubproofAssertion) {
210
- localContext.debug(`...verified the '${statementString}' statement as a subproof assertion.`);
158
+ if (verifiedAsContainedAssertion) {
159
+ localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`);
211
160
  }
212
161
  }
213
162
 
214
- return verifiedAsSubproofAssertion;
163
+ return verifiedAsContainedAssertion;
215
164
  }
216
165
 
217
- function verifyAsContainedAssertion(statement, assignments, stated, localContext) {
218
- let verifiedAsContainedAssertion = false;
166
+ function verifyAsSubproofAssertion(statement, assignments, stated, localContext) {
167
+ let verifiedAsSubproofAssertion = false;
219
168
 
220
169
  const statementNode = statement.getNode(),
221
- containedAssertionNode = containedAssertionNodeQuery(statementNode),
222
- containedAssertion = ContainedAssertion.fromContainedAssertionNode(containedAssertionNode, localContext);
170
+ subproofAssertionNode = subproofAssertionNodeQuery(statementNode),
171
+ subproofAssertion = SubproofAssertion.fromSubproofAssertionNode(subproofAssertionNode, localContext);
223
172
 
224
- if (containedAssertion !== null) {
173
+ if (subproofAssertionNode !== null) {
225
174
  const statementString = statement.getString();
226
175
 
227
- localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`);
176
+ localContext.trace(`Verifying the '${statementString}' statement as a subproof assertion...`);
228
177
 
229
- const containedAssertionVerified = containedAssertion.verify(assignments, stated, localContext);
178
+ const subproofAssertionVerified = subproofAssertion.verify(assignments, stated, localContext);
230
179
 
231
- verifiedAsContainedAssertion = containedAssertionVerified; ///
180
+ verifiedAsSubproofAssertion = subproofAssertionVerified; ///
232
181
 
233
- if (verifiedAsContainedAssertion) {
234
- localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`);
182
+ if (verifiedAsSubproofAssertion) {
183
+ localContext.debug(`...verified the '${statementString}' statement as a subproof assertion.`);
235
184
  }
236
185
  }
237
186
 
238
- return verifiedAsContainedAssertion;
187
+ return verifiedAsSubproofAssertion;
239
188
  }
240
189
 
241
190
  const verifyMixins = [
242
191
  verifyAsMetavariable,
243
192
  verifyAsEquality,
244
- verifyAsFrame,
245
193
  verifyAsJudgement,
246
- verifyAsDeclaration,
247
194
  verifyAsTypeAssertion,
248
195
  verifyAsDefinedAssertion,
249
196
  verifyAsSubproofAssertion,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import Variable from "../../variable";
3
+ import shim from "../../shim";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
6
 
@@ -9,7 +9,8 @@ const variableNodeQuery = nodeQuery("/term/variable!");
9
9
  function verifyTermAsVariable(term, localContext, verifyAhead) {
10
10
  let termVerifiedAsVariable = false;
11
11
 
12
- const termNode = term.getNode(),
12
+ const { Variable } = shim,
13
+ termNode = term.getNode(),
13
14
  variableNode = variableNodeQuery(termNode),
14
15
  variable = Variable.fromVariableNode(variableNode, localContext);
15
16
 
package/src/premise.js CHANGED
@@ -3,7 +3,6 @@
3
3
  import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
5
  import SubproofAssertion from "./assertion/subproof";
6
- import UnqualifiedStatement from "./statement/unqualified";
7
6
 
8
7
  import { nodeQuery } from "./utilities/query";
9
8
  import { assignAssignments } from "./utilities/assignments";
@@ -29,37 +28,6 @@ class Premise {
29
28
 
30
29
  getStatement() { return this.unqualifiedStatement.getStatement(); }
31
30
 
32
- unifySubproof(subproof, substitutions, localContext) {
33
- let subproofUnified = false;
34
-
35
- const premise = this, ///
36
- subproofString = subproof.getString(),
37
- premiseStatement = premise.getStatement(),
38
- premiseStatementString = premiseStatement.getString();
39
-
40
- localContext.trace(`Unifying the '${subproofString}' subproof with the premise's '${premiseStatementString}' statement...`);
41
-
42
- const statement = this.unqualifiedStatement.getStatement(),
43
- statementNode = statement.getNode(),
44
- statementTokens = statement.getTokens(),
45
- context = this.fileContext, ///
46
- tokens = statementTokens; ///
47
-
48
- localContext = LocalContext.fromContextAndTokens(context, tokens); ///
49
-
50
- const subproofAssertion = SubproofAssertion.fromStatementNode(statementNode, localContext);
51
-
52
- if (subproofAssertion !== null) {
53
- subproofUnified = subproofAssertion.unifySubproof(subproof, substitutions, this.fileContext, localContext);
54
- }
55
-
56
- if (subproofUnified) {
57
- localContext.debug(`...unified the '${subproofString}' subproof with the premise's '${premiseStatementString}' statement.`);
58
- }
59
-
60
- return subproofUnified;
61
- }
62
-
63
31
  unifyProofStep(proofStep, substitutions, localContext) {
64
32
  let proofStepUnified = false;
65
33
 
@@ -80,6 +48,14 @@ class Premise {
80
48
  }
81
49
 
82
50
  if (subproofUnified || statementUnified) {
51
+ const localContextB = localContext; ///
52
+
53
+ localContext = LocalContext.fromFileContext(this.fileContext);
54
+
55
+ const localContextA = localContext; ///
56
+
57
+ substitutions.resolve(localContextA, localContextB);
58
+
83
59
  proofStepUnified = true;
84
60
  }
85
61
 
@@ -113,6 +89,37 @@ class Premise {
113
89
  return statementUnified;
114
90
  }
115
91
 
92
+ unifySubproof(subproof, substitutions, localContext) {
93
+ let subproofUnified = false;
94
+
95
+ const premise = this, ///
96
+ subproofString = subproof.getString(),
97
+ premiseStatement = premise.getStatement(),
98
+ premiseStatementString = premiseStatement.getString();
99
+
100
+ localContext.trace(`Unifying the '${subproofString}' subproof with the premise's '${premiseStatementString}' statement...`);
101
+
102
+ const statement = this.unqualifiedStatement.getStatement(),
103
+ statementNode = statement.getNode(),
104
+ statementTokens = statement.getTokens(),
105
+ context = this.fileContext, ///
106
+ tokens = statementTokens; ///
107
+
108
+ localContext = LocalContext.fromContextAndTokens(context, tokens); ///
109
+
110
+ const subproofAssertion = SubproofAssertion.fromStatementNode(statementNode, localContext);
111
+
112
+ if (subproofAssertion !== null) {
113
+ subproofUnified = subproofAssertion.unifySubproof(subproof, substitutions, this.fileContext, localContext);
114
+ }
115
+
116
+ if (subproofUnified) {
117
+ localContext.debug(`...unified the '${subproofString}' subproof with the premise's '${premiseStatementString}' statement.`);
118
+ }
119
+
120
+ return subproofUnified;
121
+ }
122
+
116
123
  verify(localContext) {
117
124
  let verified = false;
118
125
 
@@ -162,7 +169,8 @@ class Premise {
162
169
  }
163
170
 
164
171
  static fromPremiseNode(suppositionNode, fileContext) {
165
- const unqualifiedStatementNode = unqualifiedStatementNodeQuery(suppositionNode),
172
+ const { UnqualifiedStatement } = shim,
173
+ unqualifiedStatementNode = unqualifiedStatementNodeQuery(suppositionNode),
166
174
  unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext),
167
175
  premise = new Premise(fileContext, unqualifiedStatement);
168
176
 
package/src/proof.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import Derivation from "./derivation";
3
+ import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
5
 
6
6
  import { nodeQuery } from "./utilities/query";
7
7
 
8
8
  const derivationNodeQuery = nodeQuery("/proof/derivation");
9
9
 
10
- export default class Proof {
10
+ class Proof {
11
11
  constructor(derivation) {
12
12
  this.derivation = derivation;
13
13
  }
@@ -47,7 +47,8 @@ export default class Proof {
47
47
  let proof = null;
48
48
 
49
49
  if (proofNode !== null) {
50
- const derivationNode = derivationNodeQuery(proofNode),
50
+ const { Derivation } = shim,
51
+ derivationNode = derivationNodeQuery(proofNode),
51
52
  derivation = Derivation.fromDerivationNode(derivationNode, fileContext);
52
53
 
53
54
  proof = new Proof(derivation);
@@ -56,3 +57,9 @@ export default class Proof {
56
57
  return proof;
57
58
  }
58
59
  }
60
+
61
+ Object.assign(shim, {
62
+ Proof
63
+ });
64
+
65
+ export default Proof;