occam-verify-cli 0.0.932 → 0.0.934

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 (115) hide show
  1. package/lib/conclusion.js +4 -4
  2. package/lib/consequent.js +4 -4
  3. package/lib/context/local.js +188 -9
  4. package/lib/declaration.js +2 -2
  5. package/lib/equality.js +4 -4
  6. package/lib/equivalence.js +16 -1
  7. package/lib/metaLemma.js +4 -4
  8. package/lib/metatheorem.js +4 -4
  9. package/lib/premise.js +6 -6
  10. package/lib/proofStep.js +43 -6
  11. package/lib/shim.js +14 -0
  12. package/lib/substitution/statementForMetavariable.js +46 -2
  13. package/lib/substitution/termForVariable.js +15 -1
  14. package/lib/supposition.js +6 -6
  15. package/lib/unifier/equality.js +216 -0
  16. package/lib/unifier/metaLevel.js +235 -0
  17. package/lib/unifier/statementAgainstCombinator.js +232 -0
  18. package/lib/unifier/termAgainstConstructor.js +212 -0
  19. package/lib/unifier.js +201 -0
  20. package/lib/unify/argumentAgainstArgument.js +24 -0
  21. package/lib/unify/metavariableAgainstStatement.js +66 -0
  22. package/lib/unify/statementAgainstMetaType.js +28 -0
  23. package/lib/unify/statementAtainstStatement.js +52 -0
  24. package/lib/unify/termAgainstTerm.js +22 -0
  25. package/lib/unify/termAgainstType.js +26 -0
  26. package/lib/unify/variableAgainstTerm.js +70 -0
  27. package/lib/verifier/metaLevel.js +236 -0
  28. package/lib/verifier/statementAsCombinator.js +236 -0
  29. package/lib/verifier/termAsConstructor.js +219 -0
  30. package/lib/verifier.js +182 -0
  31. package/lib/verify/assertion/contained.js +2 -2
  32. package/lib/verify/assertion/defined.js +2 -2
  33. package/lib/verify/declaration.js +18 -18
  34. package/lib/verify/frame.js +9 -12
  35. package/lib/verify/proofStep.js +3 -3
  36. package/lib/verify/statement/qualified.js +61 -10
  37. package/lib/verify/statement/unqualified.js +62 -50
  38. package/lib/verify/statement.js +36 -41
  39. package/lib/verify/statementAsCombinator.js +2 -2
  40. package/lib/verify/subDerivation.js +8 -2
  41. package/lib/verify/term.js +8 -7
  42. package/lib/verify/termAsConstructor.js +2 -2
  43. package/package.json +2 -2
  44. package/src/conclusion.js +3 -3
  45. package/src/consequent.js +3 -3
  46. package/src/context/local.js +68 -8
  47. package/src/declaration.js +2 -2
  48. package/src/equality.js +3 -3
  49. package/src/equivalence.js +19 -0
  50. package/src/metaLemma.js +1 -1
  51. package/src/metatheorem.js +1 -1
  52. package/src/premise.js +5 -5
  53. package/src/proofStep.js +57 -4
  54. package/src/shim.js +5 -0
  55. package/src/substitution/statementForMetavariable.js +33 -2
  56. package/src/substitution/termForVariable.js +16 -0
  57. package/src/supposition.js +5 -5
  58. package/src/unifier/equality.js +84 -0
  59. package/src/unifier/metaLevel.js +114 -0
  60. package/src/unifier/statementAgainstCombinator.js +105 -0
  61. package/src/unifier/termAgainstConstructor.js +77 -0
  62. package/src/unifier.js +133 -0
  63. package/src/unify/argumentAgainstArgument.js +15 -0
  64. package/src/{verify → unify}/metavariableAgainstStatement.js +18 -18
  65. package/src/{verify → unify}/statementAgainstMetaType.js +4 -4
  66. package/src/{verify → unify}/statementAtainstStatement.js +7 -7
  67. package/src/{verify → unify}/termAgainstTerm.js +5 -5
  68. package/src/{verify → unify}/termAgainstType.js +7 -7
  69. package/src/{verify → unify}/variableAgainstTerm.js +6 -6
  70. package/src/verifier/{node/metaLevel.js → metaLevel.js} +14 -14
  71. package/src/verifier/{node/statementAsCombinator.js → statementAsCombinator.js} +14 -14
  72. package/src/verifier/{node/termAsConstructor.js → termAsConstructor.js} +12 -12
  73. package/src/{verifier/node.js → verifier.js} +19 -1
  74. package/src/verify/assertion/contained.js +2 -2
  75. package/src/verify/assertion/defined.js +2 -2
  76. package/src/verify/declaration.js +20 -23
  77. package/src/verify/frame.js +10 -13
  78. package/src/verify/proofStep.js +2 -2
  79. package/src/verify/statement/qualified.js +95 -10
  80. package/src/verify/statement/unqualified.js +85 -11
  81. package/src/verify/statement.js +47 -45
  82. package/src/verify/statementAsCombinator.js +2 -2
  83. package/src/verify/subDerivation.js +3 -1
  84. package/src/verify/term.js +7 -6
  85. package/src/verify/termAsConstructor.js +2 -2
  86. package/lib/mixins/context.js +0 -135
  87. package/lib/mixins/nodesVerifier/intrinsiclevel.js +0 -59
  88. package/lib/mixins/nodesVerifier/metaLevel.js +0 -40
  89. package/lib/utilities/verifier.js +0 -80
  90. package/lib/verifier/node/metaLevel.js +0 -201
  91. package/lib/verifier/node/statementAsCombinator.js +0 -201
  92. package/lib/verifier/node/termAsConstructor.js +0 -184
  93. package/lib/verifier/node.js +0 -157
  94. package/lib/verifier/nodes/equality.js +0 -176
  95. package/lib/verifier/nodes/metaLevel.js +0 -191
  96. package/lib/verifier/nodes/statementAgainstCombinator.js +0 -191
  97. package/lib/verifier/nodes/termAgainstConstructor.js +0 -171
  98. package/lib/verifier/nodes.js +0 -175
  99. package/lib/verify/argumentAgainstArgument.js +0 -24
  100. package/lib/verify/metavariableAgainstStatement.js +0 -66
  101. package/lib/verify/statementAgainstMetaType.js +0 -28
  102. package/lib/verify/statementAtainstStatement.js +0 -52
  103. package/lib/verify/termAgainstTerm.js +0 -22
  104. package/lib/verify/termAgainstType.js +0 -26
  105. package/lib/verify/variableAgainstTerm.js +0 -70
  106. package/src/mixins/context.js +0 -96
  107. package/src/mixins/nodesVerifier/intrinsiclevel.js +0 -73
  108. package/src/mixins/nodesVerifier/metaLevel.js +0 -39
  109. package/src/utilities/verifier.js +0 -38
  110. package/src/verifier/nodes/equality.js +0 -84
  111. package/src/verifier/nodes/metaLevel.js +0 -109
  112. package/src/verifier/nodes/statementAgainstCombinator.js +0 -105
  113. package/src/verifier/nodes/termAgainstConstructor.js +0 -76
  114. package/src/verifier/nodes.js +0 -114
  115. package/src/verify/argumentAgainstArgument.js +0 -15
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ import shim from "../shim";
4
+ import Unifier from "../unifier";
5
+ import unifyArgumentAgainstArgument from "../unify/argumentAgainstArgument";
6
+ import unifyStatementAgainstMetaType from "../unify/statementAgainstMetaType";
7
+
8
+ import { unify } from "../unifier";
9
+ import { nodeQuery } from "../utilities/query";
10
+
11
+ const argumentNodeQuery = nodeQuery("/argument!"),
12
+ metaTypeNodeQuery = nodeQuery("/metaType!"),
13
+ statementNodeQuery = nodeQuery("/statement!"),
14
+ nonTerminalNodeQuery = nodeQuery("/*");
15
+
16
+ class StatementAgainstCombinatorUnifier extends Unifier {
17
+ unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead) {
18
+ let nonTerminalNodeUnified;
19
+
20
+ const nodeQueryMaps = [
21
+ {
22
+ nodeQueryA: statementNodeQuery,
23
+ nodeQueryB: metaTypeNodeQuery,
24
+ unify: (nodeA, nodeB, localContext, unifyAhead) => {
25
+ let nonTerminalNodeUnified;
26
+
27
+ const metaTypeNodeB = nodeB, ///
28
+ statementNodeA = nodeA, ///
29
+ statementUnifiedAgainstMetaType =
30
+
31
+ this.unifyMetaArgumentStatementAgainstMetaType(statementNodeA, metaTypeNodeB, localContext, unifyAhead);
32
+
33
+ nonTerminalNodeUnified = statementUnifiedAgainstMetaType; ///
34
+
35
+ return nonTerminalNodeUnified;
36
+ }
37
+ },
38
+ {
39
+ nodeQueryA: argumentNodeQuery,
40
+ nodeQueryB: argumentNodeQuery,
41
+ unify: (nodeA, nodeB, localContext, unifyAhead) => {
42
+ let nonTerminalNodeUnified;
43
+
44
+ const argumentNodeA = nodeA, ///
45
+ argumentNodeB = nodeB, ///
46
+ argumentNodeUnifiedAgainstArgumentNode =
47
+
48
+ this.unifyArgumentNodeAgainstArgumentNode(argumentNodeA, argumentNodeB, localContext, unifyAhead);
49
+
50
+ nonTerminalNodeUnified = argumentNodeUnifiedAgainstArgumentNode; ///
51
+
52
+ return nonTerminalNodeUnified;
53
+ }
54
+ },
55
+ {
56
+ nodeQueryA: nonTerminalNodeQuery,
57
+ nodeQueryB: nonTerminalNodeQuery,
58
+ unify: (nodeA, nodeB, localContext, unifyAhead) => {
59
+ let nonTerminalNodeUnified;
60
+
61
+ const nonTerminalNodeA = nodeA, ///
62
+ nonTerminalNodeB = nodeB; ///
63
+
64
+ nonTerminalNodeUnified =
65
+
66
+ super.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead);
67
+
68
+ return nonTerminalNodeUnified;
69
+ }
70
+ }
71
+ ];
72
+
73
+ const nodesUnified = unify(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead);
74
+
75
+ nonTerminalNodeUnified = nodesUnified; ///
76
+
77
+ return nonTerminalNodeUnified;
78
+ }
79
+
80
+ unifyMetaArgumentStatementAgainstMetaType(statementNodeA, metaTypeNodeB, localContext, unifyAhead) {
81
+ let statementUnifiedAgainstMetaType;
82
+
83
+ const { verifyStatement } = shim,
84
+ metaTypeNode = metaTypeNodeB, ///
85
+ statementNode = statementNodeA; ///
86
+
87
+ statementUnifiedAgainstMetaType = unifyStatementAgainstMetaType(statementNode, metaTypeNode, localContext, unifyAhead, verifyStatement);
88
+
89
+ return statementUnifiedAgainstMetaType;
90
+ }
91
+
92
+ unifyArgumentNodeAgainstArgumentNode(argumentNodeA, argumentNodeB, localContext, unifyAhead) {
93
+ let argumentNodeUnifiedAgainstArgumentNode;
94
+
95
+ const argumentUnifiedAgainstArgument = unifyArgumentAgainstArgument(argumentNodeA, argumentNodeB, localContext, unifyAhead);
96
+
97
+ argumentNodeUnifiedAgainstArgumentNode = argumentUnifiedAgainstArgument; ///
98
+
99
+ return argumentNodeUnifiedAgainstArgumentNode;
100
+ }
101
+ }
102
+
103
+ const statementAgainstCombinatorUnifier = new StatementAgainstCombinatorUnifier();
104
+
105
+ export default statementAgainstCombinatorUnifier;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ import shim from "../shim";
4
+ import Unifier from "../unifier";
5
+ import unifyTermAgainstType from "../unify/termAgainstType";
6
+
7
+ import { unify } from "../unifier";
8
+ import { nodeQuery } from "../utilities/query";
9
+
10
+ const termNodeQuery = nodeQuery("/argument/term!"),
11
+ typeNodeQuery = nodeQuery("/argument/type!"),
12
+ nonTerminalNodeQuery = nodeQuery("/*");
13
+
14
+ class TermAgainstConstructorUnifier extends Unifier {
15
+ unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead) {
16
+ let nonTerminalNodUnified;
17
+
18
+ const nodeQueryMaps = [
19
+ {
20
+ nodeQueryA: termNodeQuery,
21
+ nodeQueryB: typeNodeQuery,
22
+ unify: (nodeA, nodeB, localContext, unifyAhead) => {
23
+ let nonTerminalNodUnified;
24
+
25
+ const termNodeA = nodeA, ///
26
+ typeNodeB = nodeB, ///
27
+ termNodUnifiedAgainstTypeNode =
28
+
29
+ this.unifyTermNodeAgainstTypeNode(termNodeA, typeNodeB, localContext, unifyAhead);
30
+
31
+ nonTerminalNodUnified = termNodUnifiedAgainstTypeNode; ///
32
+
33
+ return nonTerminalNodUnified;
34
+ }
35
+ },
36
+ {
37
+ nodeQueryA: nonTerminalNodeQuery,
38
+ nodeQueryB: nonTerminalNodeQuery,
39
+ unify: (nodeA, nodeB, localContext, unifyAhead) => {
40
+ let nonTerminalNodUnified;
41
+
42
+ const nonTerminalNodeA = nodeA, ///
43
+ nonTerminalNodeB = nodeB; ///
44
+
45
+ nonTerminalNodUnified =
46
+
47
+ super.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead);
48
+
49
+ return nonTerminalNodUnified;
50
+ }
51
+ }
52
+ ];
53
+
54
+ const nodesVerified = unify(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead);
55
+
56
+ nonTerminalNodUnified = nodesVerified; ///
57
+
58
+ return nonTerminalNodUnified;
59
+ }
60
+
61
+ unifyTermNodeAgainstTypeNode(termNodeA, typeNodeB, localContext, unifyAhead) {
62
+ let termNodUnifiedAgainstTypeNode;
63
+
64
+ const { verifyTerm } = shim,
65
+ termNode = termNodeA, ///
66
+ typeNode = typeNodeB, ///
67
+ typeUnifiedAgainstTerm = unifyTermAgainstType(termNode, typeNode, localContext, unifyAhead, verifyTerm);
68
+
69
+ termNodUnifiedAgainstTypeNode = typeUnifiedAgainstTerm; ///
70
+
71
+ return termNodUnifiedAgainstTypeNode;
72
+ }
73
+ }
74
+
75
+ const termAgainstConstructorUnifier = new TermAgainstConstructorUnifier();
76
+
77
+ export default termAgainstConstructorUnifier;
package/src/unifier.js ADDED
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ import { terminalNodeMapFromNodes, areTerminalNodeMapsEqual } from "./utilities/terminalNodes";
4
+
5
+ export default class Unifier {
6
+ unifyNode(nodeA, nodeB, ...remainingArguments) {
7
+ let nodeUnified = false;
8
+
9
+ const nodeATerminalNode = nodeA.isTerminalNode(),
10
+ nodeBTerminalNode = nodeB.isTerminalNode(),
11
+ nodeANonTerminalNode = nodeA.isNonTerminalNode(),
12
+ nodeBNonTerminalNode = nodeB.isNonTerminalNode();
13
+
14
+ if (false) {
15
+ ///
16
+ } else if (nodeATerminalNode && nodeBTerminalNode) {
17
+ const terminalNodeA = nodeA, ///
18
+ terminalNodeB = nodeB, ///
19
+ terminalNodeUnified = this.unifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments);
20
+
21
+ nodeUnified = terminalNodeUnified; ///
22
+ } else if (nodeANonTerminalNode && nodeBNonTerminalNode) {
23
+ const nonTerminalNodeA = nodeA, ///
24
+ nonTerminalNodeB = nodeB, ///
25
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments);
26
+
27
+ nodeUnified = nonTerminalNodeUnified; ///
28
+ }
29
+
30
+ return nodeUnified;
31
+ }
32
+
33
+ unifyChildNodes(childNodesA, childNodesB, ...remainingArguments) {
34
+ let childNodesUnified = false;
35
+
36
+ const childNodesALength = childNodesA.length,
37
+ childNodesBLength = childNodesB.length;
38
+
39
+ if (childNodesALength === childNodesBLength) {
40
+ const childTerminalNodeMapA = terminalNodeMapFromNodes(childNodesA),
41
+ childTerminalNodeMapB = terminalNodeMapFromNodes(childNodesB),
42
+ terminalNodeMapsEqual = areTerminalNodeMapsEqual(childTerminalNodeMapA, childTerminalNodeMapB);
43
+
44
+ if (terminalNodeMapsEqual) {
45
+ const index = 0,
46
+ childNodesVerifyAhead = this.unifyChildNodesAhead(index, childNodesA, childNodesB, ...remainingArguments);
47
+
48
+ childNodesUnified = childNodesVerifyAhead; ///
49
+ }
50
+ }
51
+
52
+ return childNodesUnified;
53
+ }
54
+
55
+ unifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments) { ///
56
+ let terminalNodeUnified;
57
+
58
+ const unifyAhead = remainingArguments.pop(),
59
+ unifyiedAhead = unifyAhead();
60
+
61
+ terminalNodeUnified = unifyiedAhead; ///
62
+
63
+ return terminalNodeUnified;
64
+ }
65
+
66
+ unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments) {
67
+ let nonTerminalNodeUnified = false;
68
+
69
+ const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
70
+ nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
71
+
72
+ if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
73
+ const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
74
+ nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
75
+ childNodesA = nonTerminalNodeAChildNodes, ///
76
+ childNodesB = nonTerminalNodeBChildNodes, ///
77
+ childNodesUnified = this.unifyChildNodes(childNodesA, childNodesB, ...remainingArguments);
78
+
79
+ nonTerminalNodeUnified = childNodesUnified; ///
80
+ }
81
+
82
+ return nonTerminalNodeUnified;
83
+ }
84
+
85
+ unifyChildNodesAhead(index, childNodesA, childNodesB, ...remainingArguments) {
86
+ let childNodesUnified;
87
+
88
+ const unifyAhead = remainingArguments.pop(), ///
89
+ childNodesALength = childNodesA.length;
90
+
91
+ if (index === childNodesALength) {
92
+ const unifyiedAhead = unifyAhead();
93
+
94
+ childNodesUnified = unifyiedAhead; ///
95
+ } else {
96
+ const childNodeA = childNodesA[index],
97
+ childNodeB = childNodesB[index],
98
+ nodeA = childNodeA, ///
99
+ nodeB = childNodeB, ///
100
+ nodeUnified = this.unifyNode(nodeA, nodeB, ...remainingArguments, () => {
101
+ remainingArguments.push(unifyAhead); ///
102
+
103
+ const aheadIndex = index + 1,
104
+ childNodesVerifyAhead = this.unifyChildNodesAhead(aheadIndex, childNodesA, childNodesB, ...remainingArguments);
105
+
106
+ return childNodesVerifyAhead;
107
+ });
108
+
109
+ childNodesUnified = nodeUnified; ///
110
+ }
111
+
112
+ return childNodesUnified;
113
+ }
114
+ }
115
+
116
+ export function unify(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments) {
117
+ let unified = false;
118
+
119
+ nodeQueryMaps.some((nodeQueryMap) => {
120
+ const { nodeQueryA, nodeQueryB, unify } = nodeQueryMap;
121
+
122
+ const nodeA = nodeQueryA(nonTerminalNodeA), ///
123
+ nodeB = nodeQueryB(nonTerminalNodeB); ///
124
+
125
+ if ((nodeA !== null) && (nodeB !== null)) {
126
+ unified = unify(nodeA, nodeB, ...remainingArguments);
127
+
128
+ return true;
129
+ }
130
+ });
131
+
132
+ return unified;
133
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import termAgainstConstructorUnifier from "../unifier/termAgainstConstructor";
4
+
5
+ export default function unifyArgumentAgainstArgument(argumentNodeA, argumentNodeB, localContext, unifyAhead) {
6
+ let argumentUnifiedAgainstArgument;
7
+
8
+ const nonTerminalNodeA = argumentNodeA, ///
9
+ nonTerminalNodeB = argumentNodeB, ///
10
+ nonTerminalNodeVerified = termAgainstConstructorUnifier.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, unifyAhead);
11
+
12
+ argumentUnifiedAgainstArgument = nonTerminalNodeVerified; ///
13
+
14
+ return argumentUnifiedAgainstArgument;
15
+ }
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import TermForVariableSubstitution from "../substitution/termForVariable";
4
- import verifyStatementAgainstStatement from "../verify/statementAtainstStatement";
4
+ import unifyStatementAgainstStatement from "../unify/statementAtainstStatement";
5
5
  import StatementForMetavariableSubstitution from "../substitution/statementForMetavariable";
6
6
 
7
- export default function verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead) {
8
- let metavariableVerifiedAgainstStatement = false;
7
+ export default function unifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, unifyAhead) {
8
+ let metavariableUnifiedAgainstStatement = false;
9
9
 
10
10
  const substitution = substitutions.find((substitution) => {
11
11
  const substitutionMatchesMetavariableNodeA = substitution.matchMetavariableNode(metavariableNodeA);
@@ -23,12 +23,12 @@ export default function verifyMetavariableAgainstStatement(metavariableNodeA, st
23
23
  localContext = localContextB, ///
24
24
  substitution = termForVariableSubstitution, ///
25
25
  statementNodeA = substitutionStatementNode, ///
26
- statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
26
+ statementUnifiedAgainstStatement = unifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
27
27
 
28
- if (statementVerifiedAgainstStatement) {
29
- const verifiedAhead = verifyAhead();
28
+ if (statementUnifiedAgainstStatement) {
29
+ const unifiedAhead = unifyAhead();
30
30
 
31
- metavariableVerifiedAgainstStatement = verifiedAhead; ///
31
+ metavariableUnifiedAgainstStatement = unifiedAhead; ///
32
32
  }
33
33
  } else {
34
34
  const substitutionSubstitution = substitution.getSubstitution();
@@ -40,25 +40,25 @@ export default function verifyMetavariableAgainstStatement(metavariableNodeA, st
40
40
 
41
41
  const localContext = localContextB, ///
42
42
  substitution = substitutionSubstitution,
43
- statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
43
+ statementUnifiedAgainstStatement = unifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
44
44
 
45
- if (statementVerifiedAgainstStatement) {
46
- const verifiedAhead = verifyAhead();
45
+ if (statementUnifiedAgainstStatement) {
46
+ const unifiedAhead = unifyAhead();
47
47
 
48
- metavariableVerifiedAgainstStatement = verifiedAhead; ///
48
+ metavariableUnifiedAgainstStatement = unifiedAhead; ///
49
49
  }
50
50
  } else {
51
51
  const substitutionMatchesStatementNodeB = substitution.matchStatementNode(statementNodeB);
52
52
 
53
53
  if (substitutionMatchesStatementNodeB) {
54
- const verifiedAhead = verifyAhead();
54
+ const unifiedAhead = unifyAhead();
55
55
 
56
- metavariableVerifiedAgainstStatement = verifiedAhead; ///
56
+ metavariableUnifiedAgainstStatement = unifiedAhead; ///
57
57
  }
58
58
  }
59
59
  }
60
60
  } else {
61
- let verifiedAhead;
61
+ let unifiedAhead;
62
62
 
63
63
  const statementNode = statementNodeB, ///
64
64
  metavariableNode = metavariableNodeA, ///
@@ -67,14 +67,14 @@ export default function verifyMetavariableAgainstStatement(metavariableNodeA, st
67
67
 
68
68
  substitutions.push(substitution);
69
69
 
70
- verifiedAhead = verifyAhead();
70
+ unifiedAhead = unifyAhead();
71
71
 
72
- if (!verifiedAhead) {
72
+ if (!unifiedAhead) {
73
73
  substitutions.pop();
74
74
  }
75
75
 
76
- metavariableVerifiedAgainstStatement = verifiedAhead; ///
76
+ metavariableUnifiedAgainstStatement = unifiedAhead; ///
77
77
  }
78
78
 
79
- return metavariableVerifiedAgainstStatement;
79
+ return metavariableUnifiedAgainstStatement;
80
80
  }
@@ -5,24 +5,24 @@ import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
5
5
 
6
6
  const metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type!");
7
7
 
8
- export default function verifyStatementAgainstMetaType(statementNode, metaTypeNode, localContext, verifyAhead, verifyStatement) {
8
+ export default function unifyStatementAgainstMetaType(statementNode, metaTypeNode, localContext, unifyAhead, verifyStatement) {
9
9
  let statementVerifiedAgainstMetaType = false;
10
10
 
11
11
  const metaTypeTerminalNode = metaTypeTerminalNodeQuery(metaTypeNode),
12
12
  content = metaTypeTerminalNode.getContent();
13
13
 
14
14
  if (content === STATEMENT_META_TYPE_NAME) {
15
- let verifiedAhead = false;
15
+ let unifiedAhead = false;
16
16
 
17
17
  const derived = false,
18
18
  assignments = [],
19
19
  statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
20
20
 
21
21
  if (statementVerified) {
22
- verifiedAhead = verifyAhead();
22
+ unifiedAhead = unifyAhead();
23
23
  }
24
24
 
25
- statementVerifiedAgainstMetaType = verifiedAhead; ///
25
+ statementVerifiedAgainstMetaType = unifiedAhead; ///
26
26
  }
27
27
 
28
28
  return statementVerifiedAgainstMetaType;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import metaLevelNodesVerifier from "../verifier/nodes/metaLevel";
3
+ import metaLevelUnifier from "../unifier/metaLevel";
4
4
  import TermForVariableSubstitution from "../substitution/termForVariable";
5
5
 
6
6
  import { push } from "../utilities/array";
7
7
 
8
- export default function verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB) {
9
- let statementVerifiedAgainstStatement = false;
8
+ export default function unifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB) {
9
+ let statementUnifiedAgainstStatement = false;
10
10
 
11
11
  const termForVariableSubstitution = TermForVariableSubstitution.fromSubstitutionAndSubstitutions(substitution, substitutions),
12
12
  transformed = termForVariableSubstitution.isTransformed(substitution);
@@ -21,13 +21,13 @@ export default function verifyStatementAgainstStatement(statementNodeA, statemen
21
21
 
22
22
  const nonTerminalNodeA = statementNodeA, ///
23
23
  nonTerminalNodeB = statementNodeB, ///
24
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutionsA, localContextA, localContextB, () => {
24
+ nonTerminalNodeUnified = metaLevelUnifier.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutionsA, localContextA, localContextB, () => {
25
25
  const verifiedAhead = true;
26
26
 
27
27
  return verifiedAhead;
28
28
  });
29
29
 
30
- if (nonTerminalNodeVerified) {
30
+ if (nonTerminalNodeUnified) {
31
31
  if (!transformed) {
32
32
  const substitutionB = termForVariableSubstitution, ///
33
33
  substitutionsB = [
@@ -39,10 +39,10 @@ export default function verifyStatementAgainstStatement(statementNodeA, statemen
39
39
  push(substitutions, substitutionsA);
40
40
  }
41
41
 
42
- statementVerifiedAgainstStatement = true;
42
+ statementUnifiedAgainstStatement = true;
43
43
  }
44
44
 
45
- return statementVerifiedAgainstStatement;
45
+ return statementUnifiedAgainstStatement;
46
46
  }
47
47
 
48
48
  function transformSubstitutions(substitutionsA, substitutionsB) {
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { areTermNodesEqual } from "../utilities/equivalences";
4
4
 
5
- export default function verifyTermAgainstTerm(termNodeA, termNodeB, localContext, verifyAhead) {
6
- let termVerifiedAgainstTerm = false;
5
+ export default function unifyTermAgainstTerm(termNodeA, termNodeB, localContext, unifyAhead) {
6
+ let termUnifiedAgainstTerm = false;
7
7
 
8
8
  const leftTermNode = termNodeA, ///
9
9
  rightTermNode = termNodeB, ///
@@ -11,10 +11,10 @@ export default function verifyTermAgainstTerm(termNodeA, termNodeB, localContext
11
11
  termNodesEqual = areTermNodesEqual(leftTermNode, rightTermNode, equivalences);
12
12
 
13
13
  if (termNodesEqual) {
14
- const verifiedAhead = verifyAhead();
14
+ const unifiedAhead = unifyAhead();
15
15
 
16
- termVerifiedAgainstTerm = verifiedAhead; ///
16
+ termUnifiedAgainstTerm = unifiedAhead; ///
17
17
  }
18
18
 
19
- return termVerifiedAgainstTerm;
19
+ return termUnifiedAgainstTerm;
20
20
  }
@@ -2,12 +2,12 @@
2
2
 
3
3
  import { first } from "../utilities/array";
4
4
 
5
- export default function verifyTermAgainstType(termNode, typeNode, localContext, verifyAhead, verifyTerm) {
6
- let termVerifiedAgainstType;
5
+ export default function unifyTermAgainstType(termNode, typeNode, localContext, unifyAhead, verifyTerm) {
6
+ let termUnifiedAgainstType;
7
7
 
8
8
  const terms = [],
9
9
  termVerified = verifyTerm(termNode, terms, localContext, () => {
10
- let verifiedAhead = false;
10
+ let unifiedAhead = false;
11
11
 
12
12
  const firstTerm = first(terms),
13
13
  term = firstTerm, ///
@@ -16,13 +16,13 @@ export default function verifyTermAgainstType(termNode, typeNode, localContext,
16
16
  termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
17
17
 
18
18
  if (termTypeEqualToOrSubTypeOfType) {
19
- verifiedAhead = verifyAhead();
19
+ unifiedAhead = unifyAhead();
20
20
  }
21
21
 
22
- return verifiedAhead;
22
+ return unifiedAhead;
23
23
  });
24
24
 
25
- termVerifiedAgainstType = termVerified; ///
25
+ termUnifiedAgainstType = termVerified; ///
26
26
 
27
- return termVerifiedAgainstType;
27
+ return termUnifiedAgainstType;
28
28
  }
@@ -8,8 +8,8 @@ import { nodeQuery } from "../utilities/query";
8
8
 
9
9
  const variableNodeQuery = nodeQuery("/term/variable");
10
10
 
11
- export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
12
- let variableVerifiedAgainstTerm = false;
11
+ export default function unifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
12
+ let variableUnifiedAgainstTerm = false;
13
13
 
14
14
  const substitution = substitutions.find((substitution) => {
15
15
  const substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNodeA);
@@ -25,14 +25,14 @@ export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, subs
25
25
  if (substitutionMatchesTermNodeB) {
26
26
  const verifiedAhead = verifyAhead();
27
27
 
28
- variableVerifiedAgainstTerm = verifiedAhead; ///
28
+ variableUnifiedAgainstTerm = verifiedAhead; ///
29
29
  }
30
30
  } else {
31
31
  const variableA = localContextA.findVariableByVariableNode(variableNodeA);
32
32
 
33
33
  if (variableA !== null) {
34
34
  const terms = [],
35
- termVerified = verifyTerm(termNodeB, terms, localContextB, () => {
35
+ termUnified = verifyTerm(termNodeB, terms, localContextB, () => {
36
36
  let verifiedAhead = false;
37
37
 
38
38
  const firstTerm = first(terms),
@@ -67,11 +67,11 @@ export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, subs
67
67
  return verifiedAhead;
68
68
  });
69
69
 
70
- variableVerifiedAgainstTerm = termVerified; ///
70
+ variableUnifiedAgainstTerm = termUnified; ///
71
71
  }
72
72
  }
73
73
 
74
- return variableVerifiedAgainstTerm;
74
+ return variableUnifiedAgainstTerm;
75
75
  }
76
76
 
77
77
  function variableFromTerm(term, localContext) {
@@ -1,26 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import NodeVerifier from "../../verifier/node";
3
+ import Verifier from "../verifier";
4
4
 
5
- import { nodeQuery } from "../../utilities/query";
6
- import { verifyNode } from "../../utilities/verifier";
7
- import { verifyStandaloneTerm } from "../../verify/term";
8
- import { verifyStandaloneVariable } from "../../verify/variable";
9
- import { verifyStandaloneMetavariable } from "../../verify/metavariable";
5
+ import { verify } from "../verifier";
6
+ import { nodeQuery } from "../utilities/query";
7
+ import { verifyStandaloneTerm } from "../verify/term";
8
+ import { verifyStandaloneVariable } from "../verify/variable";
9
+ import { verifyStandaloneMetavariable } from "../verify/metavariable";
10
10
 
11
11
  const termNodeQuery = nodeQuery("/term!"),
12
12
  variableNodeQuery = nodeQuery("/variable!"),
13
13
  nonTerminalNodeQuery = nodeQuery("/*"),
14
14
  metavariableNodeQuery = nodeQuery("/metavariable!");
15
15
 
16
- class MetaLevelNodeVerifier extends NodeVerifier {
16
+ class MetaLevelVerifier extends Verifier {
17
17
  verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
18
18
  let nonTerminalNodeVerified;
19
19
 
20
20
  const nodeQueryMaps = [
21
21
  {
22
22
  nodeQuery: termNodeQuery,
23
- verifyNode: (node, localContext, verifyAhead) => {
23
+ verify: (node, localContext, verifyAhead) => {
24
24
  let nonTerminalNodeVerified;
25
25
 
26
26
  const termNode = node, ///
@@ -33,7 +33,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
33
33
  },
34
34
  {
35
35
  nodeQuery: variableNodeQuery,
36
- verifyNode: (node, localContext, verifyAhead) => {
36
+ verify: (node, localContext, verifyAhead) => {
37
37
  let nonTerminalNodeVerified;
38
38
 
39
39
  const variableNode = node, ///
@@ -46,7 +46,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
46
46
  },
47
47
  {
48
48
  nodeQuery: metavariableNodeQuery,
49
- verifyNode: (node, localContext, verifyAhead) => {
49
+ verify: (node, localContext, verifyAhead) => {
50
50
  let nonTerminalNodeVerified;
51
51
 
52
52
  const metavariableNode = node, ///
@@ -59,7 +59,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
59
59
  },
60
60
  {
61
61
  nodeQuery: nonTerminalNodeQuery,
62
- verifyNode: (node, localContext, verifyAhead) => {
62
+ verify: (node, localContext, verifyAhead) => {
63
63
  let nonTerminalNodeVerified;
64
64
 
65
65
  const nonTerminalNode = node; ///
@@ -73,7 +73,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
73
73
  }
74
74
  ];
75
75
 
76
- const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
76
+ const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
77
77
 
78
78
  nonTerminalNodeVerified = nodeVerified; ///
79
79
 
@@ -102,6 +102,6 @@ class MetaLevelNodeVerifier extends NodeVerifier {
102
102
  }
103
103
  }
104
104
 
105
- const metaLevelNodeVerifier = new MetaLevelNodeVerifier();
105
+ const metaLevelVerifier = new MetaLevelVerifier();
106
106
 
107
- export default metaLevelNodeVerifier;
107
+ export default metaLevelVerifier;