occam-verify-cli 0.0.845 → 0.0.847

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 (73) hide show
  1. package/lib/assignment/equality.js +4 -4
  2. package/lib/assignment/variable.js +4 -4
  3. package/lib/conclusion.js +5 -5
  4. package/lib/context/local.js +14 -1
  5. package/lib/equality.js +5 -3
  6. package/lib/equivalence.js +17 -17
  7. package/lib/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  8. package/lib/mixins/nodesVerifier/metaLevel.js +2 -2
  9. package/lib/premise.js +6 -5
  10. package/lib/term.js +9 -9
  11. package/lib/utilities/equivalences.js +14 -14
  12. package/lib/verifier/node/metastatement.js +5 -4
  13. package/lib/verifier/node/statementAsCombinator.js +6 -6
  14. package/lib/verifier/node/termAsConstructor.js +5 -5
  15. package/lib/verifier/nodes/metaLevel.js +7 -7
  16. package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +18 -19
  17. package/lib/verifier/nodes/statementAgainstCombinator.js +11 -11
  18. package/lib/verifier/nodes/substitution.js +13 -11
  19. package/lib/verifier/nodes/termAgainstConstructor.js +10 -10
  20. package/lib/verify/containment.js +2 -2
  21. package/lib/verify/defining.js +6 -6
  22. package/lib/verify/equality.js +17 -17
  23. package/lib/verify/givenType.js +6 -6
  24. package/lib/verify/givenVariable.js +6 -6
  25. package/lib/verify/metavariable.js +6 -6
  26. package/lib/verify/statement/qualified.js +13 -13
  27. package/lib/verify/statement/unqualified.js +2 -2
  28. package/lib/verify/statement.js +40 -40
  29. package/lib/verify/statementAsCombinator.js +2 -1
  30. package/lib/verify/term.js +30 -30
  31. package/lib/verify/termAndGivenType.js +7 -7
  32. package/lib/verify/termAsConstructor.js +3 -2
  33. package/lib/verify/terms.js +7 -7
  34. package/lib/verify/type.js +7 -7
  35. package/lib/verify/typeAssertion.js +19 -19
  36. package/lib/verify/variable.js +6 -6
  37. package/package.json +2 -2
  38. package/src/assignment/equality.js +5 -5
  39. package/src/assignment/variable.js +5 -5
  40. package/src/conclusion.js +6 -6
  41. package/src/context/local.js +12 -0
  42. package/src/equality.js +6 -4
  43. package/src/equivalence.js +16 -16
  44. package/src/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  45. package/src/mixins/nodesVerifier/metaLevel.js +1 -1
  46. package/src/premise.js +9 -4
  47. package/src/term.js +8 -8
  48. package/src/utilities/equivalences.js +13 -13
  49. package/src/verifier/node/metastatement.js +8 -9
  50. package/src/verifier/node/statementAsCombinator.js +8 -11
  51. package/src/verifier/node/termAsConstructor.js +6 -8
  52. package/src/verifier/nodes/metaLevel.js +6 -6
  53. package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +15 -19
  54. package/src/verifier/nodes/statementAgainstCombinator.js +10 -10
  55. package/src/verifier/nodes/substitution.js +18 -15
  56. package/src/verifier/nodes/termAgainstConstructor.js +9 -9
  57. package/src/verify/containment.js +1 -1
  58. package/src/verify/defining.js +5 -5
  59. package/src/verify/equality.js +16 -16
  60. package/src/verify/givenType.js +5 -5
  61. package/src/verify/givenVariable.js +5 -5
  62. package/src/verify/metavariable.js +5 -5
  63. package/src/verify/statement/qualified.js +12 -13
  64. package/src/verify/statement/unqualified.js +1 -2
  65. package/src/verify/statement.js +39 -39
  66. package/src/verify/statementAsCombinator.js +1 -0
  67. package/src/verify/term.js +29 -29
  68. package/src/verify/termAndGivenType.js +7 -7
  69. package/src/verify/termAsConstructor.js +3 -1
  70. package/src/verify/terms.js +7 -7
  71. package/src/verify/type.js +6 -6
  72. package/src/verify/typeAssertion.js +18 -18
  73. package/src/verify/variable.js +5 -5
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "0.0.845",
4
+ "version": "0.0.847",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "argumentative": "^2.0.28",
14
14
  "necessary": "^14.0.1",
15
- "occam-custom-grammars": "^5.0.742",
15
+ "occam-custom-grammars": "^5.0.744",
16
16
  "occam-entities": "^1.0.125",
17
17
  "occam-file-system": "^6.0.167",
18
18
  "occam-grammar-utilities": "^8.0.201",
@@ -9,15 +9,15 @@ export default class EqualityAssignment {
9
9
  return this.equality;
10
10
  }
11
11
 
12
- assign(context) {
13
- const equalityAdded = context.addEquality(this.equality),
12
+ assign(localContext) {
13
+ const equalityAdded = localContext.addEquality(this.equality),
14
14
  equalityNode = this.equality.getNode(),
15
- equalityString = context.nodeAsString(equalityNode),
15
+ equalityString = localContext.nodeAsString(equalityNode),
16
16
  equalityAssigned = equalityAdded; ///
17
17
 
18
18
  equalityAssigned ?
19
- context.trace(`Assigned the '${equalityString}' equality.`, equalityNode) :
20
- context.debug(`Unable to assign the '${equalityString}' equality.`, equalityNode);
19
+ localContext.trace(`Assigned the '${equalityString}' equality.`, equalityNode) :
20
+ localContext.debug(`Unable to assign the '${equalityString}' equality.`, equalityNode);
21
21
 
22
22
  return equalityAssigned;
23
23
  }
@@ -9,17 +9,17 @@ export default class VariableAssignment {
9
9
  return this.variable;
10
10
  }
11
11
 
12
- assign(context) {
13
- const variableAdded = context.addVariable(this.variable),
12
+ assign(localContext) {
13
+ const variableAdded = localContext.addVariable(this.variable),
14
14
  variableNode = this.variable.getNode(),
15
15
  variableType = this.variable.getType(),
16
- variableString = context.nodeAsString(variableNode),
16
+ variableString = localContext.nodeAsString(variableNode),
17
17
  variableTypeName = variableType.getName(),
18
18
  variableAssigned = variableAdded; ///
19
19
 
20
20
  variableAssigned ?
21
- context.trace(`Assigned the '${variableString}' variable with type '${variableTypeName}'.`, variableNode) :
22
- context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeName}'.`, variableNode);
21
+ localContext.trace(`Assigned the '${variableString}' variable with type '${variableTypeName}'.`, variableNode) :
22
+ localContext.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeName}'.`, variableNode);
23
23
 
24
24
  return variableAssigned;
25
25
  }
package/src/conclusion.js CHANGED
@@ -15,12 +15,12 @@ export default class Conclusion {
15
15
  return this.metastatementNode;
16
16
  }
17
17
 
18
- matchStatementNode(statementNode, substitutions, fileContext, statementLocalContext) {
18
+ matchStatementNode(statementNode, substitutions, localContext, statementLocalContext) {
19
19
  const nonTerminalNodeA = this.metastatementNode, ///
20
20
  nonTerminalNodeB = statementNode, ///
21
- fileContextA = fileContext, ///
21
+ localContextA = localContext, ///
22
22
  localContextB = statementLocalContext, ///
23
- nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
23
+ nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
24
24
  const verifyAhead = true;
25
25
 
26
26
  return verifyAhead;
@@ -30,12 +30,12 @@ export default class Conclusion {
30
30
  return statementNodeMatches;
31
31
  }
32
32
 
33
- matchMetastatementNode(metastatementNode, substitutions, fileContext, metastatementLocalMetaContext) {
33
+ matchMetastatementNode(metastatementNode, substitutions, localContext, metastatementLocalMetaContext) {
34
34
  const nonTerminalNodeA = this.metastatementNode, ///
35
35
  nonTerminalNodeB = metastatementNode, ///
36
- fileContextA = fileContext, ///
36
+ localContextA = localContext, ///
37
37
  localMetaContextB = metastatementLocalMetaContext, ///
38
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
38
+ nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localMetaContextB, () => {
39
39
  const verifiedAhead = true;
40
40
 
41
41
  return verifiedAhead;
@@ -253,6 +253,8 @@ class LocalContext {
253
253
  return variable;
254
254
  }
255
255
 
256
+ findMetaTypeByMetaTypeName(metaTypeName) { return this.context.findMetaTypeByMetaTypeName(metaTypeName); }
257
+
256
258
  isVariablePresentByVariableNode(variableNode) {
257
259
  const variable = this.findVariableByVariableNode(variableNode),
258
260
  variablePresent = (variable !== null);
@@ -296,6 +298,16 @@ class LocalContext {
296
298
  return localContext;
297
299
  }
298
300
 
301
+ static fromLocalMetaContext(localMetaContext) {
302
+ const context = localMetaContext, ///
303
+ variables = [],
304
+ proofSteps = [],
305
+ equivalences = [],
306
+ localContext = new LocalContext(context, variables, proofSteps, equivalences);
307
+
308
+ return localContext;
309
+ }
310
+
299
311
  static fromJSONAndFileContext(json, fileContext) {
300
312
  let { variables } = json;
301
313
 
package/src/equality.js CHANGED
@@ -28,16 +28,18 @@ export default class Equality {
28
28
  return reflexive;
29
29
  }
30
30
 
31
- isEqual(context) {
31
+ isEqual(localContext) {
32
32
  const leftTerm = this.getLeftTerm(),
33
33
  rightTerm = this.getRightTerm(),
34
34
  leftTermNode = leftTerm.getNode(),
35
35
  rightTermNode = rightTerm.getNode(),
36
36
  nonTerminalNodeA = leftTermNode, ///
37
37
  nonTerminalNodeB = rightTermNode, ///
38
- equivalences = context.getEquivalences(),
39
- localContext = this, ///
40
- nonTerminalNodeVerified = equalityNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, equivalences, localContext, () => {
38
+ equivalences = localContext.getEquivalences();
39
+
40
+ localContext = this; ///
41
+
42
+ const nonTerminalNodeVerified = equalityNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, equivalences, localContext, () => {
41
43
  const verifiedAhead = true;
42
44
 
43
45
  return verifiedAhead;
@@ -21,9 +21,9 @@ export default class Equivalence {
21
21
  this.terms.push(term);
22
22
  }
23
23
 
24
- getType(context) {
24
+ getType(localContext) {
25
25
  const type = this.terms.reduce((type, term) => {
26
- const termType = termTypeFromTerm(term, context);
26
+ const termType = termTypeFromTerm(term, localContext);
27
27
 
28
28
  if (type === null) {
29
29
  type = termType; ///
@@ -41,10 +41,10 @@ export default class Equivalence {
41
41
  return type;
42
42
  }
43
43
 
44
- matchType(type, context) {
44
+ matchType(type, localContext) {
45
45
  const typeA = type; ///
46
46
 
47
- type = this.getType(context);
47
+ type = this.getType(localContext);
48
48
 
49
49
  const typeB = type; ///
50
50
 
@@ -107,9 +107,9 @@ export default class Equivalence {
107
107
  return termNodesMatch;
108
108
  }
109
109
 
110
- getGroundedTerms(definedVariables, groundedTerms, context) {
110
+ getGroundedTerms(definedVariables, groundedTerms, localContext) {
111
111
  this.terms.forEach((term) => {
112
- const termGrounded = term.isGrounded(definedVariables, context);
112
+ const termGrounded = term.isGrounded(definedVariables, localContext);
113
113
 
114
114
  if (termGrounded) {
115
115
  const termMatchesGroundedTerm = groundedTerms.some((groundedTerm) => {
@@ -129,25 +129,25 @@ export default class Equivalence {
129
129
  });
130
130
  }
131
131
 
132
- isInitiallyGrounded(context) {
133
- const initiallyGroundedTerms = this.getInitiallyGroundedTerms(context),
132
+ isInitiallyGrounded(localContext) {
133
+ const initiallyGroundedTerms = this.getInitiallyGroundedTerms(localContext),
134
134
  initiallyGroundedTermsLength = initiallyGroundedTerms.length,
135
135
  initiallyGrounded = (initiallyGroundedTermsLength > 0);
136
136
 
137
137
  return initiallyGrounded;
138
138
  }
139
139
 
140
- isImplicitlyGrounded(definedVariables, context) {
141
- const implicitlyGroundedTerms = this.getImplicitlyGroundedTerms(definedVariables, context),
140
+ isImplicitlyGrounded(definedVariables, localContext) {
141
+ const implicitlyGroundedTerms = this.getImplicitlyGroundedTerms(definedVariables, localContext),
142
142
  implicitlyGroundedTermsLength = implicitlyGroundedTerms.length,
143
143
  implicitlyGrounded = (implicitlyGroundedTermsLength > 0);
144
144
 
145
145
  return implicitlyGrounded;
146
146
  }
147
147
 
148
- getInitiallyGroundedTerms(context) {
148
+ getInitiallyGroundedTerms(localContext) {
149
149
  const initiallyGroundedTerms = this.terms.reduce((initiallyGroundedTerms, term) => {
150
- const termInitiallyGrounded = term.isInitiallyGrounded(context);
150
+ const termInitiallyGrounded = term.isInitiallyGrounded(localContext);
151
151
 
152
152
  if (termInitiallyGrounded) {
153
153
  const initiallyGroundedTerm = term; ///
@@ -161,9 +161,9 @@ export default class Equivalence {
161
161
  return initiallyGroundedTerms;
162
162
  }
163
163
 
164
- getImplicitlyGroundedTerms(definedVariables, context) {
164
+ getImplicitlyGroundedTerms(definedVariables, localContext) {
165
165
  const implicitlyGroundedTerms = this.terms.reduce((implicitlyGroundedTerms, term) => {
166
- const termImplicitlyGrounded = term.isImplicitlyGrounded(definedVariables, context);
166
+ const termImplicitlyGrounded = term.isImplicitlyGrounded(definedVariables, localContext);
167
167
 
168
168
  if (termImplicitlyGrounded) {
169
169
  const implicitlyGroundedTerm = term; ///
@@ -200,14 +200,14 @@ export default class Equivalence {
200
200
  }
201
201
  }
202
202
 
203
- function termTypeFromTerm(term, context) {
203
+ function termTypeFromTerm(term, localContext) {
204
204
  let termType;
205
205
 
206
206
  const termNode = term.getNode(),
207
207
  variableNode = variableNodeQuery(termNode);
208
208
 
209
209
  if (variableNode !== null) {
210
- const variable = context.findVariableByVariableNode(variableNode),
210
+ const variable = localContext.findVariableByVariableNode(variableNode),
211
211
  variableType = variable.getType();
212
212
 
213
213
  termType = variableType; ///
@@ -32,9 +32,9 @@ function verifyVariableNode(variableNodeA, termNodeB, substitutions, localContex
32
32
 
33
33
  if (variable !== null) {
34
34
  const terms = [],
35
- context = localContextB, ///
36
35
  termNode = termNodeB, ///
37
- termVerified = verifyTerm(termNode, terms, context, () => {
36
+ localContext = localContextB, ///
37
+ termVerified = verifyTerm(termNode, terms, localContext, () => {
38
38
  let verifiedAhead = false;
39
39
 
40
40
  const firstTerm = first(terms),
@@ -2,7 +2,7 @@
2
2
 
3
3
  import MetastatementForMetavariableSubstitution from "../../substitution/metastatementForMetavariable";
4
4
 
5
- function verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead) {
5
+ function verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, localContextA, localMetaContextB, verifyAhead) {
6
6
  let metavariableNodeVerified;
7
7
 
8
8
  const substitution = substitutions.find((substitution) => {
package/src/premise.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import LocalContext from "./context/local";
3
4
  import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
4
5
  import metaLevelToIntrinsicLevelNodesVerifier from "./verifier/nodes/metaLevelToIntrinsicLevel";
5
6
 
@@ -45,8 +46,9 @@ export default class Premise {
45
46
  const nonTerminalNodeA = ruleSubproofAssertionMetastatementNode, ///
46
47
  nonTerminalNodeB = subproofStatementNode, ///
47
48
  fileContextA = fileContext, ///
49
+ localContextA = LocalContext.fromFileContext(fileContextA),
48
50
  localContextB = statementLocalContext, ///
49
- nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
51
+ nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
50
52
  const verifiedAhead = true;
51
53
 
52
54
  return verifiedAhead;
@@ -66,8 +68,9 @@ export default class Premise {
66
68
  const nonTerminalNodeA = this.metastatementNode, ///
67
69
  nonTerminalNodeB = statementNode, ///
68
70
  fileContextA = fileContext, ///
71
+ localContextA = LocalContext.fromFileContext(fileContextA),
69
72
  localContextB = statementLocalContext, ///
70
- nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
73
+ nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
71
74
  const verifiedAhead = true;
72
75
 
73
76
  return verifiedAhead;
@@ -98,8 +101,9 @@ export default class Premise {
98
101
  const nonTerminalNodeA = ruleSubproofAssertionMetastatementNode, ///
99
102
  nonTerminalNodeB = ruleSubproofMetastatementNode, ///
100
103
  fileContextA = fileContext, ///
104
+ localContextA = LocalContext.fromFileContext(fileContextA),
101
105
  localMetaContextB = metastatementLocalMetaContext, ///
102
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
106
+ nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localMetaContextB, () => {
103
107
  const verifiedAhead = true;
104
108
 
105
109
  return verifiedAhead;
@@ -119,8 +123,9 @@ export default class Premise {
119
123
  const nonTerminalNodeA = this.metastatementNode, ///
120
124
  nonTerminalNodeB = metastatementNode, ///
121
125
  fileContextA = fileContext, ///
126
+ localContextA = LocalContext.fromFileContext(fileContextA),
122
127
  localMetaContextB = metastatementLocalMetaContext, ///
123
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
128
+ nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localMetaContextB, () => {
124
129
  const verifiedAhead = true;
125
130
 
126
131
  return verifiedAhead;
package/src/term.js CHANGED
@@ -26,12 +26,12 @@ export default class Term {
26
26
  return matches;
27
27
  }
28
28
 
29
- getVariables(context) {
29
+ getVariables(localContext) {
30
30
  const variables = [],
31
31
  variableNodes = variableNodesQuery(this.node);
32
32
 
33
33
  variableNodes.forEach((variableNode) => {
34
- const variable = context.findVariableByVariableNode(variableNode),
34
+ const variable = localContext.findVariableByVariableNode(variableNode),
35
35
  variablesIncludesVariable = variables.includes(variable);
36
36
 
37
37
  if (!variablesIncludesVariable) {
@@ -42,8 +42,8 @@ export default class Term {
42
42
  return variables;
43
43
  }
44
44
 
45
- isGrounded(definedVariables, context) {
46
- const variables = this.getVariables(context);
45
+ isGrounded(definedVariables, localContext) {
46
+ const variables = this.getVariables(localContext);
47
47
 
48
48
  filter(variables, (variable) => {
49
49
  const definedVariablesIncludesVariable = definedVariables.includes(variable);
@@ -60,16 +60,16 @@ export default class Term {
60
60
  return grounded;
61
61
  }
62
62
 
63
- isInitiallyGrounded(context) {
64
- const variables = this.getVariables(context),
63
+ isInitiallyGrounded(localContext) {
64
+ const variables = this.getVariables(localContext),
65
65
  variablesLength = variables.length,
66
66
  initiallyGrounded = (variablesLength === 0);
67
67
 
68
68
  return initiallyGrounded;
69
69
  }
70
70
 
71
- isImplicitlyGrounded(definedVariables, context) {
72
- const grounded = this.isGrounded(definedVariables, context),
71
+ isImplicitlyGrounded(definedVariables, localContext) {
72
+ const grounded = this.isGrounded(definedVariables, localContext),
73
73
  implicitlyGrounded = grounded; ///
74
74
 
75
75
  return implicitlyGrounded;
@@ -83,7 +83,7 @@ export function findEquivalenceByTerm(equivalences, term) {
83
83
  return equivalence;
84
84
  }
85
85
 
86
- export function groundedTermsAndDefinedVariablesFromFromEquivalences(equivalences, groundedTerms, definedVariables, context) {
86
+ export function groundedTermsAndDefinedVariablesFromFromEquivalences(equivalences, groundedTerms, definedVariables, localContext) {
87
87
  let groundedEquivalences,
88
88
  remainingEquivalences,
89
89
  initiallyGroundedEquivalences,
@@ -93,7 +93,7 @@ export function groundedTermsAndDefinedVariablesFromFromEquivalences(equivalence
93
93
 
94
94
  initiallyGroundedEquivalences = [];
95
95
 
96
- separateInitiallyGroundedEquivalences(equivalences, remainingEquivalences, initiallyGroundedEquivalences, context);
96
+ separateInitiallyGroundedEquivalences(equivalences, remainingEquivalences, initiallyGroundedEquivalences, localContext);
97
97
 
98
98
  const initiallyGroundedEquivalencesLength = initiallyGroundedEquivalences.length;
99
99
 
@@ -109,9 +109,9 @@ export function groundedTermsAndDefinedVariablesFromFromEquivalences(equivalence
109
109
  while (definedVariablesLength > previousDefinedVariablesLength) {
110
110
  previousDefinedVariablesLength = definedVariablesLength; ///
111
111
 
112
- groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquivalences, definedVariables, groundedTerms, context);
112
+ groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquivalences, definedVariables, groundedTerms, localContext);
113
113
 
114
- definedVariablesFromGroundedTerms(groundedTerms, definedVariables, context);
114
+ definedVariablesFromGroundedTerms(groundedTerms, definedVariables, localContext);
115
115
 
116
116
  definedVariablesLength = definedVariables.length;
117
117
  }
@@ -122,7 +122,7 @@ export function groundedTermsAndDefinedVariablesFromFromEquivalences(equivalence
122
122
 
123
123
  implicitlyGroundedEquivalences = [];
124
124
 
125
- separateImplicitlyGroundedEquivalences(equivalences, remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, context);
125
+ separateImplicitlyGroundedEquivalences(equivalences, remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, localContext);
126
126
 
127
127
  push(groundedEquivalences, implicitlyGroundedEquivalences);
128
128
 
@@ -153,12 +153,12 @@ function findEquivalenceByTermNodes(equivalences, termNodes) {
153
153
  return equivalence;
154
154
  }
155
155
 
156
- function definedVariablesFromGroundedTerms(groundedTerms, definedVariables, context) {
156
+ function definedVariablesFromGroundedTerms(groundedTerms, definedVariables, localContext) {
157
157
  const terms = groundedTerms, ///
158
158
  variables = definedVariables; ///
159
159
 
160
160
  terms.forEach((term) => {
161
- const termVariables = term.getVariables(context);
161
+ const termVariables = term.getVariables(localContext);
162
162
 
163
163
  termVariables.forEach((termVariable) => {
164
164
  const variablesIncludesTermVariable = variables.includes(termVariable);
@@ -172,9 +172,9 @@ function definedVariablesFromGroundedTerms(groundedTerms, definedVariables, cont
172
172
  });
173
173
  }
174
174
 
175
- function separateInitiallyGroundedEquivalences(equivalences, remainingEquivalences, initiallyGroundedEquivalences, context) {
175
+ function separateInitiallyGroundedEquivalences(equivalences, remainingEquivalences, initiallyGroundedEquivalences, localContext) {
176
176
  separate(equivalences, remainingEquivalences, initiallyGroundedEquivalences, (equivalence) => {
177
- const equivalenceInitiallyGrounded = equivalence.isInitiallyGrounded(context);
177
+ const equivalenceInitiallyGrounded = equivalence.isInitiallyGrounded(localContext);
178
178
 
179
179
  if (!equivalenceInitiallyGrounded) {
180
180
  return true;
@@ -182,9 +182,9 @@ function separateInitiallyGroundedEquivalences(equivalences, remainingEquivalenc
182
182
  });
183
183
  }
184
184
 
185
- function separateImplicitlyGroundedEquivalences(equivalences, remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, context) {
185
+ function separateImplicitlyGroundedEquivalences(equivalences, remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, localContext) {
186
186
  separate(equivalences, remainingEquivalences, implicitlyGroundedEquivalences, (equivalence) => {
187
- const equivalenceImplicitlyGrounded = equivalence.isImplicitlyGrounded(definedVariables, context);
187
+ const equivalenceImplicitlyGrounded = equivalence.isImplicitlyGrounded(definedVariables, localContext);
188
188
 
189
189
  if (!equivalenceImplicitlyGrounded) {
190
190
  return true;
@@ -192,8 +192,8 @@ function separateImplicitlyGroundedEquivalences(equivalences, remainingEquivalen
192
192
  });
193
193
  }
194
194
 
195
- function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquivalences, definedVariables, groundedTerms, context) {
195
+ function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquivalences, definedVariables, groundedTerms, localContext) {
196
196
  groundedEquivalences.forEach((groundedEquivalence) => {
197
- groundedEquivalence.getGroundedTerms(definedVariables, groundedTerms, context);
197
+ groundedEquivalence.getGroundedTerms(definedVariables, groundedTerms, localContext);
198
198
  });
199
199
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import LocalContext from "../../context/local";
3
4
  import NodeVerifier from "../../verifier/node";
4
5
 
5
6
  import { verifyStandaloneTerm } from "../../verify/term";
@@ -15,9 +16,8 @@ class MetastatementNodeVerifier extends NodeVerifier {
15
16
 
16
17
  switch (ruleName) {
17
18
  case METAVARIABLE_RULE_NAME: {
18
- const context = localMetaContext, ///
19
- metavariableNode = nonTerminalNode, ///
20
- standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, context, verifyAhead),
19
+ const metavariableNode = nonTerminalNode, ///
20
+ standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, localMetaContext, verifyAhead),
21
21
  metavariableNodeVerified = standaloneMetavariableVerified; ///
22
22
 
23
23
  nonTerminalNodeVerified = metavariableNodeVerified; ///
@@ -26,9 +26,8 @@ class MetastatementNodeVerifier extends NodeVerifier {
26
26
  }
27
27
 
28
28
  case VARIABLE_RULE_NAME: {
29
- const context = localMetaContext, ///
30
- variableNode = nonTerminalNode, ///
31
- standaloneVariableVerified = verifyStandaloneVariable(variableNode, context, verifyAhead),
29
+ const variableNode = nonTerminalNode, ///
30
+ standaloneVariableVerified = verifyStandaloneVariable(variableNode, localMetaContext, verifyAhead),
32
31
  variableNodeVerified = standaloneVariableVerified; ///
33
32
 
34
33
  nonTerminalNodeVerified = variableNodeVerified; ///
@@ -37,9 +36,9 @@ class MetastatementNodeVerifier extends NodeVerifier {
37
36
  }
38
37
 
39
38
  case TERM_RULE_NAME: {
40
- const context = localMetaContext, ///
41
- termNode = nonTerminalNode, ///
42
- standaloneTermVerified = verifyStandaloneTerm(termNode, context, verifyAhead),
39
+ const termNode = nonTerminalNode, ///
40
+ localContext = LocalContext.fromLocalMetaContext(localMetaContext),
41
+ standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
43
42
  termNodeVerified = standaloneTermVerified; ///
44
43
 
45
44
  nonTerminalNodeVerified = termNodeVerified; ///
@@ -8,16 +8,15 @@ import { verifyStandaloneStatement } from "../../verify/statement";
8
8
  import { TYPE_RULE_NAME, TERM_RULE_NAME, STATEMENT_RULE_NAME } from "../../ruleNames";
9
9
 
10
10
  class StatementAsCombinatorNodeVerifier extends NodeVerifier {
11
- verifyNonTerminalNode(nonTerminalNode, fileContext, verifyAhead) {
11
+ verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
12
12
  let nonTerminalNodeVerified;
13
13
 
14
14
  const ruleName = nonTerminalNode.getRuleName();
15
15
 
16
16
  switch (ruleName) {
17
17
  case STATEMENT_RULE_NAME: {
18
- const context = fileContext, ///
19
- statementNode = nonTerminalNode, ///
20
- standaloneStatementVerified = verifyStandaloneStatement(statementNode, context, verifyAhead),
18
+ const statementNode = nonTerminalNode, ///
19
+ standaloneStatementVerified = verifyStandaloneStatement(statementNode, localContext, verifyAhead),
21
20
  statementNodeVerified = standaloneStatementVerified; ///
22
21
 
23
22
  nonTerminalNodeVerified = statementNodeVerified; ///
@@ -26,9 +25,8 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
26
25
  }
27
26
 
28
27
  case TERM_RULE_NAME: {
29
- const context = fileContext, ///
30
- termNode = nonTerminalNode, ///
31
- standaloneTermVerified = verifyStandaloneTerm(termNode, context, verifyAhead),
28
+ const termNode = nonTerminalNode, ///
29
+ standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
32
30
  termNodeVerified = standaloneTermVerified; ///
33
31
 
34
32
  nonTerminalNodeVerified = termNodeVerified; ///
@@ -37,9 +35,8 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
37
35
  }
38
36
 
39
37
  case TYPE_RULE_NAME: {
40
- const context = fileContext, ///
41
- typeNode = nonTerminalNode, ///
42
- standaloneTypeVerified = verifyStandaloneType(typeNode, context, verifyAhead),
38
+ const typeNode = nonTerminalNode, ///
39
+ standaloneTypeVerified = verifyStandaloneType(typeNode, localContext, verifyAhead),
43
40
  typeNodeVerified = standaloneTypeVerified; ///
44
41
 
45
42
  nonTerminalNodeVerified = typeNodeVerified; ///
@@ -48,7 +45,7 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
48
45
  }
49
46
 
50
47
  default: {
51
- nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, fileContext, verifyAhead); ///
48
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead); ///
52
49
 
53
50
  break;
54
51
  }
@@ -7,16 +7,15 @@ import { verifyStandaloneTerm } from "../../verify/term";
7
7
  import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
8
8
 
9
9
  class TermAsConstructorNodeVerifier extends NodeVerifier {
10
- verifyNonTerminalNode(nonTerminalNode, fileContext, verifyAhead) {
10
+ verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
11
11
  let nonTerminalNodeVerified;
12
12
 
13
13
  const ruleName = nonTerminalNode.getRuleName();
14
14
 
15
15
  switch (ruleName) {
16
16
  case TERM_RULE_NAME: {
17
- const context = fileContext, ///
18
- termNode = nonTerminalNode, ///
19
- standaloneTermVerified = verifyStandaloneTerm(termNode, context, verifyAhead),
17
+ const termNode = nonTerminalNode, ///
18
+ standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
20
19
  termNodeVerified = standaloneTermVerified; ///
21
20
 
22
21
  nonTerminalNodeVerified = termNodeVerified; ///
@@ -25,9 +24,8 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
25
24
  }
26
25
 
27
26
  case TYPE_RULE_NAME: {
28
- const context = fileContext, ///
29
- typeNode = nonTerminalNode, ///
30
- standaloneTypeVerified = verifyStandaloneType(typeNode, context, verifyAhead),
27
+ const typeNode = nonTerminalNode, ///
28
+ standaloneTypeVerified = verifyStandaloneType(typeNode, localContext, verifyAhead),
31
29
  typeNodeVerified = standaloneTypeVerified; ///
32
30
 
33
31
  nonTerminalNodeVerified = typeNodeVerified; ///
@@ -36,7 +34,7 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
36
34
  }
37
35
 
38
36
  default: {
39
- nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, fileContext, verifyAhead);
37
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
40
38
 
41
39
  break;
42
40
  }
@@ -9,7 +9,7 @@ import { METASTATEMENT_RULE_NAME } from "../../ruleNames";
9
9
  const metavariableNodeQuery = nodeQuery("/metastatement/metavariable!");
10
10
 
11
11
  class MetaLevelNodesVerifier extends NodesVerifier {
12
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead) {
12
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localMetaContextB, verifyAhead) {
13
13
  let nonTerminalNodeVerified = false;
14
14
 
15
15
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
@@ -22,7 +22,7 @@ class MetaLevelNodesVerifier extends NodesVerifier {
22
22
  case METASTATEMENT_RULE_NAME: {
23
23
  const metastatementNodeA = nonTerminalNodeA, ///
24
24
  metastatementNodeB = nonTerminalNodeB, ///
25
- metastatementNodeVerified = this.verifyMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead);
25
+ metastatementNodeVerified = this.verifyMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions, localContextA, localMetaContextB, verifyAhead);
26
26
 
27
27
  nonTerminalNodeVerified = metastatementNodeVerified; ///
28
28
 
@@ -30,7 +30,7 @@ class MetaLevelNodesVerifier extends NodesVerifier {
30
30
  }
31
31
 
32
32
  default: {
33
- nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead);
33
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localMetaContextB, verifyAhead);
34
34
 
35
35
  break;
36
36
  }
@@ -40,19 +40,19 @@ class MetaLevelNodesVerifier extends NodesVerifier {
40
40
  return nonTerminalNodeVerified;
41
41
  }
42
42
 
43
- verifyMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead) {
43
+ verifyMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions, localContextA, localMetaContextB, verifyAhead) {
44
44
  let metastatementNodeVerified;
45
45
 
46
46
  const metavariableNodeA = metavariableNodeQuery(metastatementNodeA);
47
47
 
48
48
  if (metavariableNodeA !== null) {
49
- const metaVariableNodeVerified = this.verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead);
49
+ const metaVariableNodeVerified = this.verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, localContextA, localMetaContextB, verifyAhead);
50
50
 
51
51
  metastatementNodeVerified = metaVariableNodeVerified; ///
52
52
  } else {
53
53
  const nonTerminalNodeA = metastatementNodeA, ///
54
54
  nonTerminalNodeB = metastatementNodeB, ///
55
- nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead);
55
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localMetaContextB, verifyAhead);
56
56
 
57
57
  metastatementNodeVerified = nonTerminalNodeVerified; ///
58
58
  }