occam-verify-cli 0.0.844 → 0.0.846

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 (79) 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/substitution/statementForMetavariable.js +29 -9
  11. package/lib/substitution/termForVariable.js +8 -1
  12. package/lib/term.js +9 -9
  13. package/lib/utilities/array.js +1 -11
  14. package/lib/utilities/equivalences.js +14 -14
  15. package/lib/verifier/node/metastatement.js +5 -4
  16. package/lib/verifier/node/statementAsCombinator.js +6 -6
  17. package/lib/verifier/node/termAsConstructor.js +5 -5
  18. package/lib/verifier/nodes/metaLevel.js +7 -7
  19. package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +30 -31
  20. package/lib/verifier/nodes/statementAgainstCombinator.js +11 -11
  21. package/lib/verifier/nodes/substitution.js +223 -0
  22. package/lib/verifier/nodes/termAgainstConstructor.js +10 -10
  23. package/lib/verify/containment.js +29 -10
  24. package/lib/verify/defining.js +6 -6
  25. package/lib/verify/equality.js +17 -17
  26. package/lib/verify/givenType.js +6 -6
  27. package/lib/verify/givenVariable.js +6 -6
  28. package/lib/verify/metavariable.js +6 -6
  29. package/lib/verify/statement/qualified.js +13 -13
  30. package/lib/verify/statement/unqualified.js +2 -2
  31. package/lib/verify/statement.js +40 -40
  32. package/lib/verify/statementAsCombinator.js +2 -1
  33. package/lib/verify/term.js +30 -30
  34. package/lib/verify/termAndGivenType.js +7 -7
  35. package/lib/verify/termAsConstructor.js +3 -2
  36. package/lib/verify/terms.js +7 -7
  37. package/lib/verify/type.js +7 -7
  38. package/lib/verify/typeAssertion.js +19 -19
  39. package/lib/verify/variable.js +6 -6
  40. package/package.json +1 -1
  41. package/src/assignment/equality.js +5 -5
  42. package/src/assignment/variable.js +5 -5
  43. package/src/conclusion.js +6 -6
  44. package/src/context/local.js +12 -0
  45. package/src/equality.js +6 -4
  46. package/src/equivalence.js +16 -16
  47. package/src/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  48. package/src/mixins/nodesVerifier/metaLevel.js +1 -1
  49. package/src/premise.js +9 -4
  50. package/src/substitution/statementForMetavariable.js +44 -12
  51. package/src/substitution/termForVariable.js +10 -0
  52. package/src/term.js +8 -8
  53. package/src/utilities/array.js +0 -6
  54. package/src/utilities/equivalences.js +13 -13
  55. package/src/verifier/node/metastatement.js +8 -9
  56. package/src/verifier/node/statementAsCombinator.js +8 -11
  57. package/src/verifier/node/termAsConstructor.js +6 -8
  58. package/src/verifier/nodes/metaLevel.js +6 -6
  59. package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +37 -41
  60. package/src/verifier/nodes/statementAgainstCombinator.js +10 -10
  61. package/src/verifier/nodes/substitution.js +125 -0
  62. package/src/verifier/nodes/termAgainstConstructor.js +9 -9
  63. package/src/verify/containment.js +38 -12
  64. package/src/verify/defining.js +5 -5
  65. package/src/verify/equality.js +16 -16
  66. package/src/verify/givenType.js +5 -5
  67. package/src/verify/givenVariable.js +5 -5
  68. package/src/verify/metavariable.js +5 -5
  69. package/src/verify/statement/qualified.js +12 -13
  70. package/src/verify/statement/unqualified.js +1 -2
  71. package/src/verify/statement.js +39 -39
  72. package/src/verify/statementAsCombinator.js +1 -0
  73. package/src/verify/term.js +29 -29
  74. package/src/verify/termAndGivenType.js +7 -7
  75. package/src/verify/termAsConstructor.js +3 -1
  76. package/src/verify/terms.js +7 -7
  77. package/src/verify/type.js +6 -6
  78. package/src/verify/typeAssertion.js +18 -18
  79. package/src/verify/variable.js +5 -5
@@ -12,7 +12,7 @@ const metaTypeNodeQuery = nodeQuery("/metaArgument/metaType!"),
12
12
  metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type");
13
13
 
14
14
  class StatementAgainstCombinatorNodesVerifier extends NodesVerifier {
15
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context, verifyAhead) {
15
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead) {
16
16
  let nonTerminalNodeVerified = false;
17
17
 
18
18
  const nonTerminalNode = nonTerminalNodeA, ///
@@ -25,7 +25,7 @@ class StatementAgainstCombinatorNodesVerifier extends NodesVerifier {
25
25
  case META_ARGUMENT_RULE_NAME: {
26
26
  const metaArgumentNode = nonTerminalNode, ///
27
27
  combinatorMetaargumentNode = combinatorNonTerminalNode, ///
28
- metaArgumentNodeVerified = this.verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context, verifyAhead);
28
+ metaArgumentNodeVerified = this.verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, localContext, verifyAhead);
29
29
 
30
30
  nonTerminalNodeVerified = metaArgumentNodeVerified; ///
31
31
 
@@ -35,7 +35,7 @@ class StatementAgainstCombinatorNodesVerifier extends NodesVerifier {
35
35
  case ARGUMENT_RULE_NAME: {
36
36
  const argumentNode = nonTerminalNode, ///
37
37
  constructorArgumentNode = combinatorNonTerminalNode, ///
38
- argumentNodeVerified = termAgainstConstructorNodesVerifier.verifyArgumentNode(argumentNode, constructorArgumentNode, context, verifyAhead);
38
+ argumentNodeVerified = termAgainstConstructorNodesVerifier.verifyArgumentNode(argumentNode, constructorArgumentNode, localContext, verifyAhead);
39
39
 
40
40
  nonTerminalNodeVerified = argumentNodeVerified; ///
41
41
 
@@ -43,7 +43,7 @@ class StatementAgainstCombinatorNodesVerifier extends NodesVerifier {
43
43
  }
44
44
 
45
45
  default: {
46
- nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context, verifyAhead);
46
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
47
47
 
48
48
  break;
49
49
  }
@@ -53,28 +53,28 @@ class StatementAgainstCombinatorNodesVerifier extends NodesVerifier {
53
53
  return nonTerminalNodeVerified;
54
54
  }
55
55
 
56
- verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context, verifyAhead) {
56
+ verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, localContext, verifyAhead) {
57
57
  let metaArgumentNodeVerified = false;
58
58
 
59
- const metaArgumentString = context.nodeAsString(metaArgumentNode);
59
+ const metaArgumentString = localContext.nodeAsString(metaArgumentNode);
60
60
 
61
61
  const statementNode = statementNodeQuery(metaArgumentNode),
62
62
  combinatorMetaTYpeNode = metaTypeNodeQuery(combinatorMetaargumentNode);
63
63
 
64
64
  if (statementNode === null) {
65
- context.debug(`Expected a statement but got a '${metaArgumentString}' meta-type.`, metaArgumentNode);
65
+ localContext.debug(`Expected a statement but got a '${metaArgumentString}' meta-type.`, metaArgumentNode);
66
66
  } else {
67
67
  if (combinatorMetaTYpeNode === null) {
68
- const combinatorMetaargumentString = context.nodeAsString(combinatorMetaargumentNode);
68
+ const combinatorMetaargumentString = localContext.nodeAsString(combinatorMetaargumentNode);
69
69
 
70
- context.debug(`Expected a meta-type but got a '${combinatorMetaargumentString}' statement.`, metaArgumentNode);
70
+ localContext.debug(`Expected a meta-type but got a '${combinatorMetaargumentString}' statement.`, metaArgumentNode);
71
71
  } else {
72
72
  const combinatorMetaTypeTerminalNode = metaTypeTerminalNodeQuery(combinatorMetaTYpeNode),
73
73
  content = combinatorMetaTypeTerminalNode.getContent(),
74
74
  contentStatementMetaType = (content === STATEMENT_META_TYPE);
75
75
 
76
76
  if (!contentStatementMetaType) {
77
- context.debug(`Expected the meta-type of the combinator to be '${STATEMENT_META_TYPE}' but got '${content}' instead.`, metaArgumentNode);
77
+ localContext.debug(`Expected the meta-type of the combinator to be '${STATEMENT_META_TYPE}' but got '${content}' instead.`, metaArgumentNode);
78
78
  } else {
79
79
  const verifiedAhead = verifyAhead();
80
80
 
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ import NodesVerifier from "../../verifier/nodes";
4
+
5
+ import TermForVariableSubstitution from "../../substitution/termForVariable";
6
+
7
+ import { nodeQuery } from "../../utilities/query";
8
+ import { TERM_RULE_NAME } from "../../ruleNames";
9
+
10
+ const variableNodeQuery = nodeQuery("/term/variable");
11
+
12
+ class SubstitutionNodesVerifier extends NodesVerifier {
13
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead) {
14
+ let nonTerminalNodeVerified = false;
15
+
16
+ const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
17
+ nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName();
18
+
19
+ if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
20
+ const ruleName = nonTerminalNodeARuleName; ///
21
+
22
+ switch (ruleName) {
23
+ case TERM_RULE_NAME: {
24
+ const termNodeA = nonTerminalNodeA, ///
25
+ termNodeB = nonTerminalNodeB, ///
26
+ termNodeVerified = this.verifyTermNode(termNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
27
+
28
+ nonTerminalNodeVerified = termNodeVerified; ///
29
+
30
+ break;
31
+ }
32
+
33
+ default: {
34
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
35
+
36
+ break;
37
+ }
38
+ }
39
+ }
40
+
41
+ return nonTerminalNodeVerified;
42
+ }
43
+
44
+ verifyTermNode(termNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
45
+ let termNodeVerified;
46
+
47
+ const variableNodeA = variableNodeQuery(termNodeA);
48
+
49
+ if (variableNodeA !== null) {
50
+ const variableNodeVerified = this.verifyVariableNode(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
51
+
52
+ termNodeVerified = variableNodeVerified; ///
53
+ } else {
54
+ const nonTerminalNodeA = termNodeA, ///
55
+ nonTerminalNodeB = termNodeB, ///
56
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
57
+
58
+ termNodeVerified = nonTerminalNodeVerified; ///
59
+ }
60
+
61
+ return termNodeVerified;
62
+ }
63
+
64
+ verifyVariableNode(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
65
+ let variableNodeVerified = false;
66
+
67
+ if (variableNodeVerified === false) {
68
+ const variableNodeB = variableNodeQuery(termNodeB);
69
+
70
+ if (variableNodeB !== null) {
71
+ const variableNodeAMatchedVariableNodeB = variableNodeA.match(variableNodeB);
72
+
73
+ if (variableNodeAMatchedVariableNodeB) {
74
+ const verifiedAhead = verifyAhead();
75
+
76
+ variableNodeVerified = verifiedAhead; ///
77
+ }
78
+ }
79
+ }
80
+
81
+ if (variableNodeVerified === false) {
82
+ const variableNode = variableNodeA,
83
+ substitution = substitutions.find((substitution) => {
84
+ const matches = substitution.matchVariableNode(variableNode);
85
+
86
+ if (matches) {
87
+ return true;
88
+ }
89
+ }) || null;
90
+
91
+ if (substitution !== null) {
92
+ const termNode = termNodeB, ///
93
+ termNodeMatches = substitution.matchTermNode(termNode);
94
+
95
+ if (termNodeMatches) {
96
+ const verifiedAhead = verifyAhead();
97
+
98
+ variableNodeVerified = verifiedAhead; ///
99
+ }
100
+ } else {
101
+ let verifiedAhead;
102
+
103
+ const termNode = termNodeB, ///
104
+ termForVariableSubstitution = TermForVariableSubstitution.fromVariableNodeAndTermNode(variableNode, termNode),
105
+ substitution = termForVariableSubstitution; ///
106
+
107
+ substitutions.push(substitution);
108
+
109
+ verifiedAhead = verifyAhead();
110
+
111
+ if (!verifiedAhead) {
112
+ substitutions.pop();
113
+ }
114
+
115
+ variableNodeVerified = verifiedAhead; ///
116
+ }
117
+ }
118
+
119
+ return variableNodeVerified;
120
+ }
121
+ }
122
+
123
+ const substitutionNodesVerifier = new SubstitutionNodesVerifier();
124
+
125
+ export default substitutionNodesVerifier;
@@ -10,7 +10,7 @@ const termNodeQuery = nodeQuery("/argument/term!"),
10
10
  typeNodeQuery = nodeQuery("/argument/type!");
11
11
 
12
12
  class TermAgainstConstructorNodesVerifier extends NodesVerifier {
13
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context, verifyAhead) {
13
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead) {
14
14
  let nonTerminalNodeVerified = false;
15
15
 
16
16
  const nonTerminalNode = nonTerminalNodeA, ///
@@ -23,7 +23,7 @@ class TermAgainstConstructorNodesVerifier extends NodesVerifier {
23
23
  case ARGUMENT_RULE_NAME: {
24
24
  const argumentNode = nonTerminalNode, ///
25
25
  constructorArgumentNode = constructorNonTerminalNode, ///
26
- argumentNodeVerified = this.verifyArgumentNode(argumentNode, constructorArgumentNode, context, verifyAhead);
26
+ argumentNodeVerified = this.verifyArgumentNode(argumentNode, constructorArgumentNode, localContext, verifyAhead);
27
27
 
28
28
  nonTerminalNodeVerified = argumentNodeVerified; ///
29
29
 
@@ -31,7 +31,7 @@ class TermAgainstConstructorNodesVerifier extends NodesVerifier {
31
31
  }
32
32
 
33
33
  default: {
34
- nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, context, verifyAhead);
34
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, localContext, verifyAhead);
35
35
 
36
36
  break;
37
37
  }
@@ -41,15 +41,15 @@ class TermAgainstConstructorNodesVerifier extends NodesVerifier {
41
41
  return nonTerminalNodeVerified;
42
42
  }
43
43
 
44
- verifyArgumentNode(argumentNode, constructorArgumentNode, context, verifyAhead) {
44
+ verifyArgumentNode(argumentNode, constructorArgumentNode, localContext, verifyAhead) {
45
45
  let argumentNodeVerified = false;
46
46
 
47
- const argumentString = context.nodeAsString(argumentNode);
47
+ const argumentString = localContext.nodeAsString(argumentNode);
48
48
 
49
49
  const typeNode = typeNodeQuery(argumentNode);
50
50
 
51
51
  if (typeNode !== null) {
52
- context.debug(`The '${argumentString}' argument should be a term, not a type.`, argumentNode);
52
+ localContext.debug(`The '${argumentString}' argument should be a term, not a type.`, argumentNode);
53
53
  } else {
54
54
  const termNode = termNodeQuery(argumentNode);
55
55
 
@@ -59,7 +59,7 @@ class TermAgainstConstructorNodesVerifier extends NodesVerifier {
59
59
  if (constructorTermNode !== null) {
60
60
  const node = termNode, ///
61
61
  constructorNode = constructorTermNode, ///
62
- nodeVerified = this.verifyNode(node, constructorNode, context, verifyAhead);
62
+ nodeVerified = this.verifyNode(node, constructorNode, localContext, verifyAhead);
63
63
 
64
64
  argumentNodeVerified = nodeVerified; ///
65
65
  }
@@ -71,14 +71,14 @@ class TermAgainstConstructorNodesVerifier extends NodesVerifier {
71
71
  if (constructorTypeNode !== null) {
72
72
  const { verifyTerm } = termAgainstConstructorNodesVerifier,
73
73
  terms = [],
74
- termVerified = verifyTerm(termNode, terms, context, () => {
74
+ termVerified = verifyTerm(termNode, terms, localContext, () => {
75
75
  let verifiedAhead = false;
76
76
 
77
77
  const constructorTypeName = typeNameFromTypeNode(constructorTypeNode),
78
78
  firstTerm = first(terms),
79
79
  term = firstTerm, ///
80
80
  termType = term.getType(),
81
- constructorType = context.findTypeByTypeName(constructorTypeName),
81
+ constructorType = localContext.findTypeByTypeName(constructorTypeName),
82
82
  termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(constructorType);
83
83
 
84
84
  if (termTypeEqualToOrSubTypeOfType) {
@@ -4,33 +4,59 @@ import { second } from "../utilities/array";
4
4
  import { CONTAINED } from "../constants";
5
5
  import { nodeQuery, nodesQuery } from "../utilities/query";
6
6
 
7
- const variableNodesQuery = nodesQuery("/metaArgument//variable"),
8
- containmentVariableNodeQuery = nodeQuery("/argument/term/variable!");
7
+ const termNodeQuery = nodeQuery("/argument/term!"),
8
+ variableNodeQuery = nodeQuery("/argument/term/variable!"),
9
+ metaArgumentTermNodesQuery = nodesQuery("/metaArgument//term"),
10
+ metaArgumentVariableNodesQuery = nodesQuery("/metaArgument//variable");
9
11
 
10
- export default function verifyContainment(argumentNode, containmentNode, metaArgumentNode, context) {
12
+ export default function verifyContainment(argumentNode, containmentNode, metaArgumentNode, localContext) {
11
13
  let containmentVerified = false;
12
14
 
13
- const containmentVariableNode = containmentVariableNodeQuery(argumentNode);
15
+ const contained = containedFromContainmentNode(containmentNode),
16
+ termNode = termNodeQuery(argumentNode),
17
+ variableNode = variableNodeQuery(argumentNode);
14
18
 
15
- if (containmentVariableNode !== null) {
16
- const contained = containedFromContainmentNode(containmentNode),
17
- variableNodes = variableNodesQuery(metaArgumentNode),
18
- containmentVariableNodeMatchesStatementVariableNode = variableNodes.some((statementVariableNode) => {
19
- const containmentVariableNodeMatchesStatementVariableNode = containmentVariableNode.match(statementVariableNode);
19
+ if (false) {
20
+ ///
21
+ } else if (variableNode !== null) {
22
+ const metaArgumentVariableNodes = metaArgumentVariableNodesQuery(metaArgumentNode),
23
+ variableNodeMatchesMetaArgumentVariableNode = metaArgumentVariableNodes.some((metaArgumentVariableNode) => {
24
+ const variableNodeMatchesMetaArgumentVariableNode = variableNode.match(metaArgumentVariableNode);
20
25
 
21
- if (containmentVariableNodeMatchesStatementVariableNode) {
26
+ if (variableNodeMatchesMetaArgumentVariableNode) {
22
27
  return true;
23
28
  }
24
29
  });
25
30
 
26
31
  if (contained) {
27
- if (containmentVariableNodeMatchesStatementVariableNode) {
32
+ if (variableNodeMatchesMetaArgumentVariableNode) {
28
33
  containmentVerified = true;
29
34
  }
30
35
  }
31
36
 
32
37
  if (!contained) {
33
- if (!containmentVariableNodeMatchesStatementVariableNode) {
38
+ if (!variableNodeMatchesMetaArgumentVariableNode) {
39
+ containmentVerified = true;
40
+ }
41
+ }
42
+ } else if (termNode !== null) {
43
+ const metaArgumentTermNodes = metaArgumentTermNodesQuery(metaArgumentNode),
44
+ termNodeMatchesMetaArgumentTermNode = metaArgumentTermNodes.some((metaArgumentTermNode) => {
45
+ const termNodeMatchesMetaArgumentTermNode = termNode.match(metaArgumentTermNode);
46
+
47
+ if (termNodeMatchesMetaArgumentTermNode) {
48
+ return true;
49
+ }
50
+ });
51
+
52
+ if (contained) {
53
+ if (termNodeMatchesMetaArgumentTermNode) {
54
+ containmentVerified = true;
55
+ }
56
+ }
57
+
58
+ if (!contained) {
59
+ if (!termNodeMatchesMetaArgumentTermNode) {
34
60
  containmentVerified = true;
35
61
  }
36
62
  }
@@ -9,7 +9,7 @@ import { first, second } from "../utilities/array";
9
9
  const termNodeQuery = nodeQuery("/argument/term!"),
10
10
  variableNodeQuery = nodeQuery("/argument/term/variable!");
11
11
 
12
- export default function verifyDefining(argumentNode, definingNode, context) {
12
+ export default function verifyDefining(argumentNode, definingNode, localContext) {
13
13
  let definingVerified = false;
14
14
 
15
15
  const defined = definedFromDefiningNode(definingNode),
@@ -19,10 +19,10 @@ export default function verifyDefining(argumentNode, definingNode, context) {
19
19
  if (false) {
20
20
  ///
21
21
  } else if (variableNode !== null) {
22
- const variable = context.findVariableByVariableNode(variableNode);
22
+ const variable = localContext.findVariableByVariableNode(variableNode);
23
23
 
24
24
  if (variable !== null) {
25
- const variableDefined = context.isVariableDefined(variable);
25
+ const variableDefined = localContext.isVariableDefined(variable);
26
26
 
27
27
  if (defined) {
28
28
  if (variableDefined) {
@@ -38,12 +38,12 @@ export default function verifyDefining(argumentNode, definingNode, context) {
38
38
  }
39
39
  } else if (termNode !== null) {
40
40
  const terms = [],
41
- termVerified = verifyTerm(termNode, terms, context, () => {
41
+ termVerified = verifyTerm(termNode, terms, localContext, () => {
42
42
  let verifiedAhead;
43
43
 
44
44
  const firstTerm = first(terms),
45
45
  term = firstTerm, ///
46
- termGrounded = context.isTermGrounded(term);
46
+ termGrounded = localContext.isTermGrounded(term);
47
47
 
48
48
  if (defined) {
49
49
  if (termGrounded) {
@@ -10,12 +10,12 @@ import { first, second } from "../utilities/array";
10
10
  const leftTermNodeQuery = nodeQuery("/equality/argument[0]/term!"),
11
11
  rightTermNodeQuery = nodeQuery("/equality/argument[1]/term!");
12
12
 
13
- export default function verifyEquality(equalityNode, assignments, derived, context, verifyAhead) {
13
+ export default function verifyEquality(equalityNode, assignments, derived, localContext, verifyAhead) {
14
14
  let equalityVerified;
15
15
 
16
- const equalityString = context.nodeAsString(equalityNode);
16
+ const equalityString = localContext.nodeAsString(equalityNode);
17
17
 
18
- context.trace(`Verifying the '${equalityString}' equality...`, equalityNode);
18
+ localContext.trace(`Verifying the '${equalityString}' equality...`, equalityNode);
19
19
 
20
20
  const verifyEqualityFunctions = [
21
21
  verifyDerivedEquality,
@@ -23,7 +23,7 @@ export default function verifyEquality(equalityNode, assignments, derived, conte
23
23
  ];
24
24
 
25
25
  equalityVerified = verifyEqualityFunctions.some((verifyEqualityFunction) => {
26
- const equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, context, verifyAhead);
26
+ const equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, localContext, verifyAhead);
27
27
 
28
28
  if (equalityVerified) {
29
29
  return true;
@@ -31,19 +31,19 @@ export default function verifyEquality(equalityNode, assignments, derived, conte
31
31
  });
32
32
 
33
33
  if (equalityVerified) {
34
- context.debug(`...verified the '${equalityString}' equality.`, equalityNode);
34
+ localContext.debug(`...verified the '${equalityString}' equality.`, equalityNode);
35
35
  }
36
36
 
37
37
  return equalityVerified;
38
38
  }
39
39
 
40
- function verifyDerivedEquality(equalityNode, assignments, derived, context, verifyAhead) {
40
+ function verifyDerivedEquality(equalityNode, assignments, derived, localContext, verifyAhead) {
41
41
  let derivedEqualityVerified = false;
42
42
 
43
43
  if (derived) {
44
- const equalityString = context.nodeAsString(equalityNode);
44
+ const equalityString = localContext.nodeAsString(equalityNode);
45
45
 
46
- context.trace(`Verifying the '${equalityString}' derived equality...`, equalityNode);
46
+ localContext.trace(`Verifying the '${equalityString}' derived equality...`, equalityNode);
47
47
 
48
48
  const terms = [],
49
49
  leftTermNode = leftTermNodeQuery(equalityNode),
@@ -52,7 +52,7 @@ function verifyDerivedEquality(equalityNode, assignments, derived, context, veri
52
52
  leftTermNode,
53
53
  rightTermNode
54
54
  ],
55
- termsVerified = verifyTerms(termNodes, terms, context, () => {
55
+ termsVerified = verifyTerms(termNodes, terms, localContext, () => {
56
56
  let verifiedAhead = false;
57
57
 
58
58
  const firstTerm = first(terms),
@@ -62,7 +62,7 @@ function verifyDerivedEquality(equalityNode, assignments, derived, context, veri
62
62
  equality = Equality.fromLeftTermRightTermAndEqualityNode(leftTerm, rightTerm, equalityNode);
63
63
 
64
64
  if (equality !== null) {
65
- const equalityEqual = equality.isEqual(context);
65
+ const equalityEqual = equality.isEqual(localContext);
66
66
 
67
67
  if (equalityEqual) {
68
68
  const equalityAssignment = EqualityAssignment.fromEquality(equality),
@@ -84,20 +84,20 @@ function verifyDerivedEquality(equalityNode, assignments, derived, context, veri
84
84
  derivedEqualityVerified = termsVerified; ///
85
85
 
86
86
  if (derivedEqualityVerified) {
87
- context.trace(`...verified the '${equalityString}' derived equality.`, equalityNode);
87
+ localContext.trace(`...verified the '${equalityString}' derived equality.`, equalityNode);
88
88
  }
89
89
  }
90
90
 
91
91
  return derivedEqualityVerified;
92
92
  }
93
93
 
94
- function verifyGivenEquality(equalityNode, assignments, derived, context, verifyAhead) {
94
+ function verifyGivenEquality(equalityNode, assignments, derived, localContext, verifyAhead) {
95
95
  let givenEqualityVerified = false;
96
96
 
97
97
  if (!derived) {
98
- const equalityString = context.nodeAsString(equalityNode);
98
+ const equalityString = localContext.nodeAsString(equalityNode);
99
99
 
100
- context.trace(`Verifying the '${equalityString}' given equality...`, equalityNode);
100
+ localContext.trace(`Verifying the '${equalityString}' given equality...`, equalityNode);
101
101
 
102
102
  const terms = [],
103
103
  leftTermNode = leftTermNodeQuery(equalityNode),
@@ -106,7 +106,7 @@ function verifyGivenEquality(equalityNode, assignments, derived, context, verify
106
106
  leftTermNode,
107
107
  rightTermNode
108
108
  ],
109
- termsVerified = verifyTerms(termNodes, terms, context, () => {
109
+ termsVerified = verifyTerms(termNodes, terms, localContext, () => {
110
110
  let verifiedAhead = false;
111
111
 
112
112
  const firstTerm = first(terms),
@@ -134,7 +134,7 @@ function verifyGivenEquality(equalityNode, assignments, derived, context, verify
134
134
  givenEqualityVerified = termsVerified; ///
135
135
 
136
136
  if (givenEqualityVerified) {
137
- context.trace(`...verified the '${equalityString}' given equality.`, equalityNode);
137
+ localContext.trace(`...verified the '${equalityString}' given equality.`, equalityNode);
138
138
  }
139
139
  }
140
140
 
@@ -2,15 +2,15 @@
2
2
 
3
3
  import { typeNameFromTypeNode } from "../utilities/query";
4
4
 
5
- export default function verifyGivenType(typeNode, types, context, verifyAhead) {
5
+ export default function verifyGivenType(typeNode, types, localContext, verifyAhead) {
6
6
  let givenTypeVerified = false;
7
7
 
8
- const typeString = context.nodeAsString(typeNode);
8
+ const typeString = localContext.nodeAsString(typeNode);
9
9
 
10
- context.trace(`Verifying the given '${typeString}' type...`, typeNode);
10
+ localContext.trace(`Verifying the given '${typeString}' type...`, typeNode);
11
11
 
12
12
  const typeName = typeNameFromTypeNode(typeNode),
13
- type = context.findTypeByTypeName(typeName);
13
+ type = localContext.findTypeByTypeName(typeName);
14
14
 
15
15
  if (type !== null) {
16
16
  let verifiedAhead;
@@ -27,7 +27,7 @@ export default function verifyGivenType(typeNode, types, context, verifyAhead) {
27
27
  }
28
28
 
29
29
  if (givenTypeVerified) {
30
- context.debug(`...verified the given '${typeString}' type.`, typeNode);
30
+ localContext.debug(`...verified the given '${typeString}' type.`, typeNode);
31
31
  }
32
32
 
33
33
  return givenTypeVerified;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- export default function verifyGivenVariable(variableNode, variables, context, verifyAhead) {
3
+ export default function verifyGivenVariable(variableNode, variables, localContext, verifyAhead) {
4
4
  let givenVariableVerified = false;
5
5
 
6
- const variableString = context.nodeAsString(variableNode);
6
+ const variableString = localContext.nodeAsString(variableNode);
7
7
 
8
- context.trace(`Verifying the '${variableString}' given variable...`, variableNode);
8
+ localContext.trace(`Verifying the '${variableString}' given variable...`, variableNode);
9
9
 
10
- const variable = context.findVariableByVariableNode(variableNode);
10
+ const variable = localContext.findVariableByVariableNode(variableNode);
11
11
 
12
12
  if (variable !== null) {
13
13
  let verifiedAhead;
@@ -24,7 +24,7 @@ export default function verifyGivenVariable(variableNode, variables, context, ve
24
24
  }
25
25
 
26
26
  if (givenVariableVerified) {
27
- context.debug(`...verified the '${variableString}' given variable.`, variableNode);
27
+ localContext.debug(`...verified the '${variableString}' given variable.`, variableNode);
28
28
  }
29
29
 
30
30
  return givenVariableVerified;
@@ -35,14 +35,14 @@ export default function verifyMetavariable(metavariableNode, metaTypeNode, fileC
35
35
  return metavariableVerified;
36
36
  }
37
37
 
38
- export function verifyStandaloneMetavariable(metavariableNode, contexct, verifyAhead) {
38
+ export function verifyStandaloneMetavariable(metavariableNode, localMetaContext, verifyAhead) {
39
39
  let standaloneMetavariableVerified = false;
40
40
 
41
- const metavariableString = contexct.nodeAsString(metavariableNode);
41
+ const metavariableString = localMetaContext.nodeAsString(metavariableNode);
42
42
 
43
- contexct.trace(`Verifying the '${metavariableString}' standalone metavariable...`, metavariableNode);
43
+ localMetaContext.trace(`Verifying the '${metavariableString}' standalone metavariable...`, metavariableNode);
44
44
 
45
- const metavariablePresent = contexct.isMetavariablePresentByMetavariableNode(metavariableNode);
45
+ const metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode);
46
46
 
47
47
  if (metavariablePresent) {
48
48
  const verifiedAhead = verifyAhead();
@@ -51,7 +51,7 @@ export function verifyStandaloneMetavariable(metavariableNode, contexct, verifyA
51
51
  }
52
52
 
53
53
  if (standaloneMetavariableVerified) {
54
- contexct.debug(`...verified the '${metavariableString}' standalone metavariable.`, metavariableNode);
54
+ localMetaContext.debug(`...verified the '${metavariableString}' standalone metavariable.`, metavariableNode);
55
55
  }
56
56
 
57
57
  return standaloneMetavariableVerified;
@@ -41,14 +41,13 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
41
41
  if (qualifiedStatementVerified) {
42
42
  derived = false; ///
43
43
 
44
- const context = localContext, ///
45
- verifyQualifiedStatementFunctions = [
44
+ const verifyQualifiedStatementFunctions = [
46
45
  verifyQualifiedStatementAsEquality,
47
46
  verifyQualifiedStatementAsTypeAssertion
48
47
  ];
49
48
 
50
49
  qualifiedStatementVerified = verifyQualifiedStatementFunctions.every((verifyQualifiedStatementFunction) => { ///
51
- const qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, assignments, derived, context, () => {
50
+ const qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, assignments, derived, localContext, () => {
52
51
  const verifiedAhead = true;
53
52
 
54
53
  return verifiedAhead;
@@ -188,44 +187,44 @@ function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, refe
188
187
  return qualifiedStatementVerifiedAgainstConjecture;
189
188
  }
190
189
 
191
- function verifyQualifiedStatementAsEquality(qualifiedStatementNode, assignments, derived, context, verifyAhead) {
190
+ function verifyQualifiedStatementAsEquality(qualifiedStatementNode, assignments, derived, localContext, verifyAhead) {
192
191
  let statementVerifiedAsEquality = true; ///
193
192
 
194
193
  const equalityNode = equalityNodeQuery(qualifiedStatementNode);
195
194
 
196
195
  if (equalityNode !== null) {
197
- const qualifiedStatementString = context.nodeAsString(qualifiedStatementNode);
196
+ const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
198
197
 
199
- context.trace(`Verifying the '${qualifiedStatementString}' qualified statement as an equality...`, qualifiedStatementNode);
198
+ localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement as an equality...`, qualifiedStatementNode);
200
199
 
201
- const equalityVerified = verifyEquality(equalityNode, assignments, derived, context, verifyAhead);
200
+ const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext, verifyAhead);
202
201
 
203
202
  statementVerifiedAsEquality = equalityVerified; ///
204
203
 
205
204
  if (statementVerifiedAsEquality) {
206
- context.debug(`...verified the '${qualifiedStatementString}' qualified statement as an equality.`, qualifiedStatementNode);
205
+ localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement as an equality.`, qualifiedStatementNode);
207
206
  }
208
207
  }
209
208
 
210
209
  return statementVerifiedAsEquality;
211
210
  }
212
211
 
213
- function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignments, derived, context, verifyAhead) {
212
+ function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignments, derived, localContext, verifyAhead) {
214
213
  let statementVerifiedAsTypeAssertion = true; ///
215
214
 
216
215
  const typeAssertionNode = typeAssertionNodeQuery(qualifiedStatementNode);
217
216
 
218
217
  if (typeAssertionNode !== null) {
219
- const qualifiedStatementString = context.nodeAsString(qualifiedStatementNode);
218
+ const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
220
219
 
221
- context.trace(`Verifying the '${qualifiedStatementString}' qualified statement as a type assertion...`, qualifiedStatementNode);
220
+ localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement as a type assertion...`, qualifiedStatementNode);
222
221
 
223
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead);
222
+ const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext, verifyAhead);
224
223
 
225
224
  statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
226
225
 
227
226
  if (statementVerifiedAsTypeAssertion) {
228
- context.debug(`...verified the '${qualifiedStatementString}' qualified statement as a type assertion.`, qualifiedStatementNode);
227
+ localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement as a type assertion.`, qualifiedStatementNode);
229
228
  }
230
229
  }
231
230
 
@@ -23,8 +23,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
23
23
  }
24
24
 
25
25
  if (!unqualifiedStatementVerified) {
26
- const context = localContext, ///
27
- statementVerified = verifyStatement(statementNode, assignments, derived, context, () => {
26
+ const statementVerified = verifyStatement(statementNode, assignments, derived, localContext, () => {
28
27
  const verifiedAhead = true;
29
28
 
30
29
  return verifiedAhead;