occam-verify-cli 0.0.905 → 0.0.907

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 (35) hide show
  1. package/lib/conclusion.js +7 -7
  2. package/lib/context/local.js +8 -26
  3. package/lib/context/localMeta.js +91 -72
  4. package/lib/metaConsequent.js +7 -7
  5. package/lib/metaSupposition.js +7 -7
  6. package/lib/metavariable.js +2 -3
  7. package/lib/premise.js +7 -7
  8. package/lib/utilities/assignments.js +3 -3
  9. package/lib/verifier/node/metastatement.js +3 -4
  10. package/lib/verifier/nodes/intrinsicLevel.js +2 -2
  11. package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +4 -5
  12. package/lib/verify/metaProofStep.js +3 -3
  13. package/lib/verify/metaSupposition.js +2 -2
  14. package/lib/verify/metavariableAgainstStatement.js +10 -9
  15. package/lib/verify/premise.js +26 -8
  16. package/lib/verify/ruleProofStep.js +6 -8
  17. package/lib/verify/variableAgainstTerm.js +8 -8
  18. package/package.json +1 -1
  19. package/src/conclusion.js +4 -4
  20. package/src/context/local.js +8 -14
  21. package/src/context/localMeta.js +23 -55
  22. package/src/metaConsequent.js +4 -4
  23. package/src/metaSupposition.js +4 -4
  24. package/src/metavariable.js +1 -2
  25. package/src/premise.js +10 -10
  26. package/src/utilities/assignments.js +2 -2
  27. package/src/verifier/node/metastatement.js +2 -3
  28. package/src/verifier/nodes/intrinsicLevel.js +2 -3
  29. package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +8 -11
  30. package/src/verify/metaProofStep.js +4 -2
  31. package/src/verify/metaSupposition.js +2 -1
  32. package/src/verify/metavariableAgainstStatement.js +15 -12
  33. package/src/verify/premise.js +39 -6
  34. package/src/verify/ruleProofStep.js +5 -5
  35. package/src/verify/variableAgainstTerm.js +9 -7
@@ -1,21 +1,18 @@
1
1
  "use strict";
2
2
 
3
- import contextMixins from "../mixins/context";
3
+ import LocalContext from "../context/local";
4
4
 
5
5
  import { last } from "../utilities/array";
6
6
 
7
- class LocalMetaContext {
8
- constructor(context, metavariables, metaproofSteps, frameAssertions) {
9
- this.context = context;
7
+ class LocalMetaContext extends LocalContext {
8
+ constructor(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions) {
9
+ super(context, variables, proofSteps, equivalences);
10
+
10
11
  this.metavariables = metavariables;
11
12
  this.metaproofSteps = metaproofSteps;
12
13
  this.frameAssertions = frameAssertions;
13
14
  }
14
15
 
15
- getContext() {
16
- return this.context;
17
- }
18
-
19
16
  getMetavariables() {
20
17
  let metavariables = this.context.getMetavariables();
21
18
 
@@ -49,18 +46,6 @@ class LocalMetaContext {
49
46
  return frameAssertions;
50
47
  }
51
48
 
52
- getVariables() { return this.context.getVariables(); }
53
-
54
- getProofSteps() { return this.context.getProofSteps(); }
55
-
56
- getEquivalences() { return this.context.getEquivalences(); }
57
-
58
- getTermType(term) {
59
- const termType = term.getType();
60
-
61
- return termType;
62
- }
63
-
64
49
  getLastMetaproofStep() {
65
50
  let lastMetaproofStep = null;
66
51
 
@@ -135,18 +120,18 @@ class LocalMetaContext {
135
120
  return metastatementMatches;
136
121
  }
137
122
 
138
- findVariableByVariableNode(variableNode) {
139
- const node = variableNode, ///
140
- variables = this.getVariables(),
141
- variable = variables.find((variable) => {
142
- const matches = variable.matchNode(node);
123
+ findMetavariableByMetavariableNode(metavariableNode, localMetaContext) {
124
+ const node = metavariableNode, ///
125
+ metavariables = this.getMetavariables(),
126
+ metavariable = metavariables.find((metavariable) => {
127
+ const matches = metavariable.matchNode(node, localMetaContext);
143
128
 
144
129
  if (matches) {
145
130
  return true;
146
131
  }
147
132
  }) || null;
148
133
 
149
- return variable;
134
+ return metavariable;
150
135
  }
151
136
 
152
137
  findFrameAssertionByMetavariableNode(metavariableNode) {
@@ -162,11 +147,11 @@ class LocalMetaContext {
162
147
  return frameAssertion;
163
148
  }
164
149
 
165
- isVariablePresentByVariableNode(variableNode) {
166
- const variable = this.findVariableByVariableNode(variableNode),
167
- variablePresent = (variable !== null);
150
+ isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext) {
151
+ const metavariable = this.findMetavariableByMetavariableNode(metavariableNode, localMetaContext),
152
+ metavariablePresent = (metavariable !== null);
168
153
 
169
- return variablePresent;
154
+ return metavariablePresent;
170
155
  }
171
156
 
172
157
  isFrameAssertionPresentByMetavariableNode(metavariableNode) {
@@ -176,49 +161,32 @@ class LocalMetaContext {
176
161
  return frameAssertionPresent;
177
162
  }
178
163
 
179
- findMetavariableByMetavariableNode(metavariableNode, localMetaContext) {
180
- const node = metavariableNode, ///
181
- metavariables = this.getMetavariables(),
182
- metavariable = metavariables.find((metavariable) => {
183
- const matches = metavariable.matchNode(node, localMetaContext);
184
-
185
- if (matches) {
186
- return true;
187
- }
188
- }) || null;
189
-
190
- return metavariable;
191
- }
192
-
193
- isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext) {
194
- const metavariable = this.findMetavariableByMetavariableNode(metavariableNode, localMetaContext),
195
- metavariablePresent = (metavariable !== null);
196
-
197
- return metavariablePresent;
198
- }
199
-
200
164
  static fromFileContext(fileContext) {
201
165
  const context = fileContext, ///
166
+ variables = [],
167
+ proofSteps = [],
168
+ equivalences = [],
202
169
  metavariables = [],
203
170
  metaproofSteps = [],
204
171
  frameAssertions = [],
205
- localMetaContext = new LocalMetaContext(context, metavariables, metaproofSteps, frameAssertions);
172
+ localMetaContext = new LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions);
206
173
 
207
174
  return localMetaContext;
208
175
  }
209
176
 
210
177
  static fromLocalMetaContext(localMetaContext) {
211
178
  const context = localMetaContext, ///
179
+ variables = [],
180
+ proofSteps = [],
181
+ equivalences = [],
212
182
  metavariables = [],
213
183
  metaproofSteps = [],
214
184
  frameAssertions = [];
215
185
 
216
- localMetaContext = new LocalMetaContext(context, metavariables, metaproofSteps, frameAssertions); ///
186
+ localMetaContext = new LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions); ///
217
187
 
218
188
  return localMetaContext;
219
189
  }
220
190
  }
221
191
 
222
- Object.assign(LocalMetaContext.prototype, contextMixins);
223
-
224
192
  export default LocalMetaContext;
@@ -54,15 +54,15 @@ export default class MetaConsequent {
54
54
  return json;
55
55
  }
56
56
 
57
- static fromMetastatementNode(metastatementNode) {
58
- const statementNode = null,
57
+ static fromStatementNode(statementNode) {
58
+ const metastatementNode = null,
59
59
  metaConsequent = new MetaConsequent(metastatementNode, statementNode);
60
60
 
61
61
  return metaConsequent;
62
62
  }
63
63
 
64
- static fromStatementNode(statementNode) {
65
- const metastatementNode = null,
64
+ static fromMetastatementNode(metastatementNode) {
65
+ const statementNode = null,
66
66
  metaConsequent = new MetaConsequent(metastatementNode, statementNode);
67
67
 
68
68
  return metaConsequent;
@@ -98,15 +98,15 @@ export default class MetaSupposition {
98
98
  return json;
99
99
  }
100
100
 
101
- static fromMetastatementNode(metastatementNode) {
102
- const statementNode = null,
101
+ static fromStatementNode(statementNode) {
102
+ const metastatementNode = null,
103
103
  metaSupposition = new MetaSupposition(metastatementNode, statementNode);
104
104
 
105
105
  return metaSupposition;
106
106
  }
107
107
 
108
- static fromStatementNode(statementNode) {
109
- const metastatementNode = null,
108
+ static fromMetastatementNode(metastatementNode) {
109
+ const statementNode = null,
110
110
  metaSupposition = new MetaSupposition(metastatementNode, statementNode);
111
111
 
112
112
  return metaSupposition;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyTerm from "./verify/term";
4
- import LocalContext from "./context/local";
5
4
 
6
5
  import { first } from "./utilities/array";
7
6
  import { nodeQuery } from "./utilities/query";
@@ -128,7 +127,7 @@ function verifyTermAgainstTermType(termNode, termType, localMetaContext) {
128
127
 
129
128
  const type = termType, ///
130
129
  terms = [],
131
- localContext = LocalContext.fromLocalMetaContext(localMetaContext);
130
+ localContext = localMetaContext; ///
132
131
 
133
132
  termVerifiedAgainstTermType = verifyTerm(termNode, terms, localContext, () => {
134
133
  let verifiedAhead = false;
package/src/premise.js CHANGED
@@ -199,14 +199,8 @@ export default class Premise {
199
199
  return json;
200
200
  }
201
201
 
202
- static fromJSONAndFileContext(json, fileContext) {
203
- const { metastatement, statement } = json,
204
- metastatementString = metastatement, ///
205
- statementString = statement, ///
206
- lexer = fileContext.getLexer(),
207
- parser = fileContext.getParser(),
208
- metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
209
- statementNode = statementNodeFromStatementString(statementString, lexer, parser),
202
+ static fromStatementNode(statementNode) {
203
+ const metastatementNode = null,
210
204
  premise = new Premise(metastatementNode, statementNode);
211
205
 
212
206
  return premise;
@@ -219,8 +213,14 @@ export default class Premise {
219
213
  return premise;
220
214
  }
221
215
 
222
- static fromStatementNode(statementNode) {
223
- const metastatementNode = null,
216
+ static fromJSONAndFileContext(json, fileContext) {
217
+ const { metastatement, statement } = json,
218
+ metastatementString = metastatement, ///
219
+ statementString = statement, ///
220
+ lexer = fileContext.getLexer(),
221
+ parser = fileContext.getParser(),
222
+ metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
223
+ statementNode = statementNodeFromStatementString(statementString, lexer, parser),
224
224
  premise = new Premise(metastatementNode, statementNode);
225
225
 
226
226
  return premise;
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { first } from "../utilities/array";
4
4
 
5
- export function assignAssignment(assignments, localContextOrLocalMetaContext) {
5
+ export function assignAssignment(assignments, localContext) {
6
6
  let assignmentAssigned = true;
7
7
 
8
8
  const assignmentsLength = assignments.length;
@@ -11,7 +11,7 @@ export function assignAssignment(assignments, localContextOrLocalMetaContext) {
11
11
  const firstAssignment = first(assignments),
12
12
  assignment = firstAssignment;
13
13
 
14
- assignmentAssigned = assignment.assign(localContextOrLocalMetaContext);
14
+ assignmentAssigned = assignment.assign(localContext);
15
15
  }
16
16
 
17
17
  return assignmentAssigned;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import LocalContext from "../../context/local";
4
3
  import NodeVerifier from "../../verifier/node";
5
4
 
6
5
  import { nodeQuery } from "../../utilities/query";
@@ -89,7 +88,7 @@ class MetastatementNodeVerifier extends NodeVerifier {
89
88
  }
90
89
 
91
90
  verifyVariableNode(variableNode, localMetaContext, verifyAhead) {
92
- const localContext = LocalContext.fromLocalMetaContext(localMetaContext),
91
+ const localContext = localMetaContext, ///
93
92
  standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
94
93
  variableNodeVerified = standaloneVariableVerified; ///
95
94
 
@@ -97,7 +96,7 @@ class MetastatementNodeVerifier extends NodeVerifier {
97
96
  }
98
97
 
99
98
  verifyTermNode(termNode, localMetaContext, verifyAhead) {
100
- const localContext = LocalContext.fromLocalMetaContext(localMetaContext),
99
+ const localContext = localMetaContext, ///
101
100
  standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
102
101
  termNodeVerified = standaloneTermVerified; ///
103
102
 
@@ -60,9 +60,8 @@ class IntrinsicLevelNodesVerifier extends NodesVerifier {
60
60
  verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
61
61
  let termVariableNodeVerifiedAgainstTermNode;
62
62
 
63
- const termNode = termNodeB, ///
64
- variableNode = termVariableNodeA, ///
65
- termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNode, termNode, substitutions, localContextA, localContextB, verifyAhead);
63
+ const variableNodeA = termVariableNodeA, ///
64
+ termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
66
65
 
67
66
  termVariableNodeVerifiedAgainstTermNode = termVerifiedAgainstVariable; ///
68
67
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  import NodesVerifier from "../../verifier/nodes";
4
4
  import verifyVariableAgainstTerm from "../../verify/variableAgainstTerm";
5
- import intrinsicLevelNodesVerifier from "../../verifier/nodes/intrinsicLevel";
6
5
  import verifyMetavariableAgainstStatement from "../../verify/metavariableAgainstStatement";
7
6
 
8
7
  import { nodeQuery } from "../../utilities/query";
@@ -120,10 +119,10 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
120
119
  verifyMetastatementMetavariableNodeAgainstMetaArgumentStatementNode(metastatementMetavariableNodeA, metaArgumentStatementNodeB, metastatementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
121
120
  let metastatementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode;
122
121
 
123
- const statementNode = metaArgumentStatementNodeB, ///
124
- metavariableNode = metastatementMetavariableNodeA, ///
122
+ const statementNodeB = metaArgumentStatementNodeB, ///
125
123
  substitutionNode = metastatementSubstitutionNodeA, ///
126
- metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
124
+ metavariableNodeA = metastatementMetavariableNodeA, ///
125
+ metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
127
126
 
128
127
  metastatementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode = metavariableVerifiedAgainstStatement; ///
129
128
 
@@ -133,10 +132,9 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
133
132
  verifyMetastatementMetavariableNodeAgainstStatementNode(metastatementMetavariableNodeA, statementNodeB, metastatementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
134
133
  let metastatementMetavariableNodeVerifiedAgainstStatementNode;
135
134
 
136
- const statementNode = statementNodeB, ///
137
- metavariableNode = metastatementMetavariableNodeA, ///
138
- substitutionNode = metastatementSubstitutionNodeA, ///
139
- metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
135
+ const substitutionNode = metastatementSubstitutionNodeA, ///
136
+ metavariableNodeA = metastatementMetavariableNodeA, ///
137
+ metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
140
138
 
141
139
  metastatementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
142
140
 
@@ -162,9 +160,8 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
162
160
  verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
163
161
  let termVariableNodeVerifiedAgainstTermNode;
164
162
 
165
- const termNode = termNodeB, ///
166
- variableNode = termVariableNodeA, ///
167
- termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNode, termNode, substitutions, localContextA, localContextB, verifyAhead);
163
+ const variableNodeA = termVariableNodeA, ///
164
+ termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
168
165
 
169
166
  termVariableNodeVerifiedAgainstTermNode = termVerifiedAgainstVariable; ///
170
167
 
@@ -53,7 +53,8 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
53
53
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localMetaContext);
54
54
 
55
55
  if (qualifiedMetastatementVerified) {
56
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
56
+ const localContext = localMetaContext, ///
57
+ assignmentAssigned = assignAssignment(assignments, localContext);
57
58
 
58
59
  qualifiedMetastatementVerified = assignmentAssigned; ///
59
60
  }
@@ -75,7 +76,8 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
75
76
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
76
77
 
77
78
  if (unqualifiedMetastatementVerified) {
78
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
79
+ const localContext = localMetaContext, ///
80
+ assignmentAssigned = assignAssignment(assignments, localContext);
79
81
 
80
82
  unqualifiedMetastatementVerified = assignmentAssigned; ///
81
83
  }
@@ -23,7 +23,8 @@ export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositi
23
23
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
24
24
 
25
25
  if (unqualifiedMetastatementVerified) {
26
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
26
+ const localContext = localMetaContext, ///
27
+ assignmentAssigned = assignAssignment(assignments, localContext);
27
28
 
28
29
  metaSuppositionVerified = assignmentAssigned; ///
29
30
  }
@@ -4,11 +4,11 @@ import TermForVariableSubstitution from "../substitution/termForVariable";
4
4
  import verifyStatementAgainstStatement from "../verify/statementAtainstStatement";
5
5
  import StatementForMetavariableSubstitution from "../substitution/statementForMetavariable";
6
6
 
7
- export default function verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutionNode, substitutions, localContextA, localContextB, verifyAhead) {
7
+ export default function verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead) {
8
8
  let metavariableVerifiedAgainstStatement = false;
9
9
 
10
10
  const substitution = substitutions.find((substitution) => {
11
- const substitutionMatchesMetavariableNodeA = substitution.matchMetavariableNode(metavariableNode);
11
+ const substitutionMatchesMetavariableNodeA = substitution.matchMetavariableNode(metavariableNodeA);
12
12
 
13
13
  if (substitutionMatchesMetavariableNodeA) {
14
14
  return true;
@@ -20,10 +20,10 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
20
20
 
21
21
  if (substitutionNode !== null) {
22
22
  const termForVariableSubstitution = TermForVariableSubstitution.fromSubstitutionNode(substitutionNode),
23
+ localContext = localContextB, ///
23
24
  substitution = termForVariableSubstitution, ///
24
25
  statementNodeA = substitutionStatementNode, ///
25
- statementNodeB = statementNode, ///
26
- statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB);
26
+ statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
27
27
 
28
28
  if (statementVerifiedAgainstStatement) {
29
29
  const verifiedAhead = verifyAhead();
@@ -34,12 +34,13 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
34
34
  const substitutionSubstitution = substitution.getSubstitution();
35
35
 
36
36
  if (substitutionSubstitution !== null) {
37
- localContextA = localContextB; ///
37
+ const statementNodeA = statementNodeB; ///
38
38
 
39
- const substitution = substitutionSubstitution,
40
- statementNodeA = statementNode, ///
41
- statementNodeB = substitutionStatementNode, ///
42
- statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB);
39
+ statementNodeB = substitutionStatementNode; ///
40
+
41
+ const localContext = localContextB, ///
42
+ substitution = substitutionSubstitution,
43
+ statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
43
44
 
44
45
  if (statementVerifiedAgainstStatement) {
45
46
  const verifiedAhead = verifyAhead();
@@ -47,9 +48,9 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
47
48
  metavariableVerifiedAgainstStatement = verifiedAhead; ///
48
49
  }
49
50
  } else {
50
- const statementNodeMatches = substitution.matchStatementNode(statementNode);
51
+ const substitutionMatchesStatementNodeB = substitution.matchStatementNode(statementNodeB);
51
52
 
52
- if (statementNodeMatches) {
53
+ if (substitutionMatchesStatementNodeB) {
53
54
  const verifiedAhead = verifyAhead();
54
55
 
55
56
  metavariableVerifiedAgainstStatement = verifiedAhead; ///
@@ -59,7 +60,9 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
59
60
  } else {
60
61
  let verifiedAhead;
61
62
 
62
- const statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromMetavariableNodeStatementNodeAndSubstitutionNode(metavariableNode, statementNode, substitutionNode),
63
+ const statementNode = statementNodeB, ///
64
+ metavariableNode = metavariableNodeA, ///
65
+ statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromMetavariableNodeStatementNodeAndSubstitutionNode(metavariableNode, statementNode, substitutionNode),
63
66
  substitution = statementForMetavariableSubstitution; ///
64
67
 
65
68
  substitutions.push(substitution);
@@ -2,12 +2,15 @@
2
2
 
3
3
  import Premise from "../premise";
4
4
  import MetaproofStep from "../step/metaproof";
5
+ import verifyUnqualifiedStatement from "../verify/statement/unqualified";
5
6
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
6
7
 
7
8
  import { nodeQuery } from "../utilities/query";
8
9
  import { assignAssignment } from "../utilities/assignments";
9
10
 
10
- const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
11
+ const statementNodeQuery = nodeQuery("/unqualifiedMetastatement/statement!"),
12
+ metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
13
+ unqualifiedStatementNodeQuery = nodeQuery("/premise/unqualifiedStatement!"),
11
14
  unqualifiedMetastatementNodeQuery = nodeQuery("/premise/unqualifiedMetastatement!");
12
15
 
13
16
  export default function verifyPremise(premiseNode, premises, localMetaContext) {
@@ -17,7 +20,21 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
17
20
 
18
21
  localMetaContext.trace(`Verifying the '${premiseString}' premise...`, premiseNode);
19
22
 
20
- const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode);
23
+ const unqualifiedStatementNode = unqualifiedStatementNodeQuery(premiseNode),
24
+ unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode);
25
+
26
+ if (unqualifiedStatementNode !== null) {
27
+ const derived = false,
28
+ assignments = [],
29
+ localContext = localMetaContext, ///
30
+ unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
31
+
32
+ if (unqualifiedStatementVerified) {
33
+ const assignmentAssigned = assignAssignment(assignments, localContext);
34
+
35
+ premiseVerified = assignmentAssigned; ///
36
+ }
37
+ }
21
38
 
22
39
  if (unqualifiedMetastatementNode !== null) {
23
40
  const derived = false,
@@ -25,16 +42,32 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
25
42
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
26
43
 
27
44
  if (unqualifiedMetastatementVerified) {
28
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
45
+ const localContext = localMetaContext, ///
46
+ assignmentAssigned = assignAssignment(assignments, localContext);
29
47
 
30
48
  premiseVerified = assignmentAssigned; ///
31
49
  }
32
50
  }
33
51
 
34
52
  if (premiseVerified) {
35
- const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
36
- metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode),
37
- premise = Premise.fromMetastatementNode(metastatementNode);
53
+ let premise,
54
+ metaproofStep;
55
+
56
+ if (unqualifiedStatementNode !== null) {
57
+ const statementNode = statementNodeQuery(unqualifiedStatementNode);
58
+
59
+ metaproofStep = MetaproofStep.fromMetastatementNode(statementNode);
60
+
61
+ premise = Premise.fromStatementNode(statementNode);
62
+ }
63
+
64
+ if (unqualifiedMetastatementNode !== null) {
65
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
66
+
67
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
68
+
69
+ premise = Premise.fromMetastatementNode(metastatementNode);
70
+ }
38
71
 
39
72
  premises.push(premise);
40
73
 
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import LocalContext from "../context/local";
4
3
  import MetaproofStep from "../step/metaproof";
5
4
  import verifyRuleSubproof from "../verify/ruleSubproof";
6
5
  import verifyRuleSubDerivation from "../verify/ruleSubDerivation";
7
6
  import verifyQualifiedStatement from "../verify/statement/qualified";
8
- import verifyUnqualifiedStatement from "../verify/statement/unqualified";
9
7
  import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
10
8
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
11
9
 
@@ -47,7 +45,7 @@ export default function verifyRuleProofStep(ruleProofStepNode, localMetaContext)
47
45
  let qualifiedStatementVerified;
48
46
 
49
47
  const assignments = [],
50
- localContext = LocalContext.fromLocalMetaContext(localMetaContext);
48
+ localContext = localMetaContext; ///
51
49
 
52
50
  qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assignments, localContext);
53
51
 
@@ -76,7 +74,8 @@ export default function verifyRuleProofStep(ruleProofStepNode, localMetaContext)
76
74
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localMetaContext);
77
75
 
78
76
  if (qualifiedMetastatementVerified) {
79
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
77
+ const localContext = localMetaContext, ///
78
+ assignmentAssigned = assignAssignment(assignments, localContext);
80
79
 
81
80
  qualifiedMetastatementVerified = assignmentAssigned; ///
82
81
  }
@@ -98,7 +97,8 @@ export default function verifyRuleProofStep(ruleProofStepNode, localMetaContext)
98
97
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
99
98
 
100
99
  if (unqualifiedMetastatementVerified) {
101
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
100
+ const localContext = localMetaContext, ///
101
+ assignmentAssigned = assignAssignment(assignments, localContext);
102
102
 
103
103
  unqualifiedMetastatementVerified = assignmentAssigned; ///
104
104
  }
@@ -8,11 +8,11 @@ import { nodeQuery } from "../utilities/query";
8
8
 
9
9
  const variableNodeQuery = nodeQuery("/term/variable");
10
10
 
11
- export default function verifyVariableAgainstTerm(variableNode, termNode, substitutions, localContextA, localContextB, verifyAhead) {
11
+ export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
12
12
  let variableVerifiedAgainstTerm = false;
13
13
 
14
14
  const substitution = substitutions.find((substitution) => {
15
- const substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNode);
15
+ const substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNodeA);
16
16
 
17
17
  if (substitutionMatchesVariableNodeA) {
18
18
  return true;
@@ -20,19 +20,19 @@ export default function verifyVariableAgainstTerm(variableNode, termNode, substi
20
20
  }) || null;
21
21
 
22
22
  if (substitution !== null) {
23
- const termNodeMatches = substitution.matchTermNode(termNode);
23
+ const substitutionMatchesTermNodeB = substitution.matchTermNode(termNodeB);
24
24
 
25
- if (termNodeMatches) {
25
+ if (substitutionMatchesTermNodeB) {
26
26
  const verifiedAhead = verifyAhead();
27
27
 
28
28
  variableVerifiedAgainstTerm = verifiedAhead; ///
29
29
  }
30
30
  } else {
31
- const variableA = localContextA.findVariableByVariableNode(variableNode);
31
+ const variableA = localContextA.findVariableByVariableNode(variableNodeA);
32
32
 
33
33
  if (variableA !== null) {
34
34
  const terms = [],
35
- termVerified = verifyTerm(termNode, terms, localContextB, () => {
35
+ termVerified = verifyTerm(termNodeB, terms, localContextB, () => {
36
36
  let verifiedAhead = false;
37
37
 
38
38
  const firstTerm = first(terms),
@@ -49,7 +49,9 @@ export default function verifyVariableAgainstTerm(variableNode, termNode, substi
49
49
  variableTypeEqualToOrSuperTypeOfTermType = variableType.isEqualToOrSuperTypeOf(termType);
50
50
 
51
51
  if (variableTypeEqualToOrSuperTypeOfTermType) {
52
- const termForVariableSubstitution = TermForVariableSubstitution.fromVariableNodeAndTermNode(variableNode, termNode),
52
+ const termNode = termNodeB, ///
53
+ variableNode = variableNodeA, ///
54
+ termForVariableSubstitution = TermForVariableSubstitution.fromVariableNodeAndTermNode(variableNode, termNode),
53
55
  substitution = termForVariableSubstitution; ///
54
56
 
55
57
  substitutions.push(substitution);