occam-verify-cli 0.0.1089 → 0.0.1091

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 (126) hide show
  1. package/bin/action/verify.js +2 -2
  2. package/lib/assertion/contained.js +35 -41
  3. package/lib/assertion/defined.js +24 -24
  4. package/lib/assertion/subproof.js +24 -24
  5. package/lib/assertion/type.js +23 -23
  6. package/lib/assignment/equality.js +4 -10
  7. package/lib/assignment/judgement.js +4 -4
  8. package/lib/assignment/variable.js +4 -4
  9. package/lib/combinator/bracketed.js +3 -3
  10. package/lib/conclusion.js +11 -13
  11. package/lib/consequent.js +11 -13
  12. package/lib/constructor/bracketed.js +3 -3
  13. package/lib/constructor.js +2 -2
  14. package/lib/context/file.js +28 -27
  15. package/lib/context/local.js +31 -32
  16. package/lib/context/release.js +6 -3
  17. package/lib/declaration.js +18 -18
  18. package/lib/derivation.js +3 -3
  19. package/lib/equality.js +24 -24
  20. package/lib/equivalence.js +13 -13
  21. package/lib/frame.js +43 -43
  22. package/lib/index.js +2 -1
  23. package/lib/judgement.js +20 -20
  24. package/lib/label.js +9 -1
  25. package/lib/metaType.js +2 -2
  26. package/lib/metavariable.js +40 -39
  27. package/lib/mixins/statement/qualified/unify.js +19 -19
  28. package/lib/mixins/statement/resolve.js +11 -11
  29. package/lib/mixins/statement/unify.js +12 -12
  30. package/lib/mixins/statement/verify.js +36 -36
  31. package/lib/mixins/term/verify.js +2 -2
  32. package/lib/premise.js +31 -40
  33. package/lib/proof.js +6 -5
  34. package/lib/proofStep.js +17 -17
  35. package/lib/reference.js +8 -8
  36. package/lib/rule.js +21 -21
  37. package/lib/statement/qualified.js +17 -17
  38. package/lib/statement/unqualified.js +19 -19
  39. package/lib/statement.js +52 -54
  40. package/lib/subDerivation.js +3 -3
  41. package/lib/subproof.js +6 -5
  42. package/lib/substitution/frameForMetavariable.js +16 -39
  43. package/lib/substitution/statementForMetavariable.js +88 -74
  44. package/lib/substitution/termForVariable.js +15 -41
  45. package/lib/substitution.js +20 -6
  46. package/lib/substitutions.js +13 -13
  47. package/lib/supposition.js +31 -40
  48. package/lib/term.js +28 -28
  49. package/lib/topLevelAssertion.js +33 -21
  50. package/lib/unifier/equality.js +8 -8
  51. package/lib/unifier/intrinsicLevel.js +149 -0
  52. package/lib/unifier/metaLevel.js +41 -31
  53. package/lib/unifier/metavariable.js +14 -8
  54. package/lib/unifier/statementWithCombinator.js +16 -16
  55. package/lib/unifier/termWithConstructor.js +6 -6
  56. package/lib/unifier.js +47 -47
  57. package/lib/utilities/assignments.js +3 -3
  58. package/lib/utilities/equivalences.js +14 -14
  59. package/lib/utilities/json.js +22 -21
  60. package/lib/utilities/unifier.js +7 -8
  61. package/lib/variable.js +33 -33
  62. package/lib/verifier/statementAsCombinator.js +2 -2
  63. package/lib/verifier/termAsConstructor.js +2 -2
  64. package/package.json +2 -2
  65. package/src/assertion/contained.js +37 -45
  66. package/src/assertion/defined.js +25 -25
  67. package/src/assertion/subproof.js +25 -28
  68. package/src/assertion/type.js +23 -23
  69. package/src/assignment/equality.js +4 -6
  70. package/src/assignment/judgement.js +4 -4
  71. package/src/assignment/variable.js +4 -4
  72. package/src/combinator/bracketed.js +2 -2
  73. package/src/conclusion.js +14 -15
  74. package/src/consequent.js +14 -15
  75. package/src/constructor/bracketed.js +2 -2
  76. package/src/constructor.js +3 -2
  77. package/src/context/file.js +26 -25
  78. package/src/context/local.js +21 -23
  79. package/src/context/release.js +5 -3
  80. package/src/declaration.js +20 -20
  81. package/src/derivation.js +2 -2
  82. package/src/equality.js +26 -26
  83. package/src/equivalence.js +12 -12
  84. package/src/frame.js +42 -42
  85. package/src/index.js +1 -0
  86. package/src/judgement.js +25 -25
  87. package/src/label.js +14 -0
  88. package/src/metaType.js +1 -1
  89. package/src/metavariable.js +51 -43
  90. package/src/mixins/statement/qualified/unify.js +21 -21
  91. package/src/mixins/statement/resolve.js +12 -12
  92. package/src/mixins/statement/unify.js +11 -11
  93. package/src/mixins/statement/verify.js +35 -35
  94. package/src/mixins/term/verify.js +1 -1
  95. package/src/premise.js +42 -53
  96. package/src/proof.js +6 -4
  97. package/src/proofStep.js +21 -21
  98. package/src/reference.js +12 -11
  99. package/src/rule.js +20 -20
  100. package/src/statement/qualified.js +18 -17
  101. package/src/statement/unqualified.js +19 -18
  102. package/src/statement.js +63 -66
  103. package/src/subDerivation.js +2 -3
  104. package/src/subproof.js +6 -4
  105. package/src/substitution/frameForMetavariable.js +29 -45
  106. package/src/substitution/statementForMetavariable.js +136 -86
  107. package/src/substitution/termForVariable.js +28 -49
  108. package/src/substitution.js +15 -5
  109. package/src/substitutions.js +12 -12
  110. package/src/supposition.js +41 -53
  111. package/src/term.js +27 -27
  112. package/src/topLevelAssertion.js +32 -19
  113. package/src/unifier/equality.js +7 -7
  114. package/src/unifier/intrinsicLevel.js +61 -0
  115. package/src/unifier/metaLevel.js +60 -46
  116. package/src/unifier/metavariable.js +22 -13
  117. package/src/unifier/statementWithCombinator.js +28 -28
  118. package/src/unifier/termWithConstructor.js +8 -8
  119. package/src/unifier.js +55 -55
  120. package/src/utilities/assignments.js +2 -2
  121. package/src/utilities/equivalences.js +13 -13
  122. package/src/utilities/json.js +76 -66
  123. package/src/utilities/unifier.js +10 -12
  124. package/src/variable.js +43 -40
  125. package/src/verifier/statementAsCombinator.js +2 -1
  126. package/src/verifier/termAsConstructor.js +2 -1
@@ -16,12 +16,12 @@ const termNodeQuery = nodeQuery("/term"),
16
16
  statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
17
17
 
18
18
  class MetaLevelUnifier extends Unifier {
19
- unify(nodeA, nodeB, substitutions, localContextA, localContextB) {
19
+ unify(generalNode, specificNode, substitutions, generalContext, specificContext) {
20
20
  let unifiedAtMetaLevel;
21
21
 
22
- const nonTerminalNodeA = nodeA, ///
23
- nonTerminalNodeB = nodeB, ///
24
- nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB);
22
+ const generalNonTerminalNode = generalNode, ///
23
+ specificNonTerminalNode = specificNode, ///
24
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
25
25
 
26
26
  unifiedAtMetaLevel = nonTerminalNodeUnified; ///
27
27
 
@@ -30,43 +30,43 @@ class MetaLevelUnifier extends Unifier {
30
30
 
31
31
  static maps = [
32
32
  {
33
- nodeQueryA: statementNodeQuery,
34
- nodeQueryB: statementNodeQuery,
35
- unify: (statementNodeA, statementNodeB, substitutions, localContextA, localContextB) => {
33
+ generalNodeQuery: statementNodeQuery,
34
+ specificNodeQuery: statementNodeQuery,
35
+ unify: (generalStatementNode, specificStatementNode, substitutions, generalContext, specificContext) => {
36
36
  let statementUnified;
37
37
 
38
- const matches = statementNodeA.match(statementNodeB);
38
+ const matches = generalStatementNode.match(specificStatementNode);
39
39
 
40
40
  if (matches) {
41
41
  statementUnified = true;
42
42
  } else {
43
- let localContext,
43
+ let context,
44
44
  statementNode;
45
45
 
46
- localContext = localContextA; ///
46
+ context = generalContext; ///
47
47
 
48
- statementNode = statementNodeA; ///
48
+ statementNode = generalStatementNode; ///
49
49
 
50
50
  const statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
51
51
 
52
52
  if (statementMetavariableNode !== null) {
53
- const substitution = FrameForMetavariableSubstitution.fromStatementNode(statementNode, localContext) ||
54
- TermForVariableSubstitution.fromStatementNode(statementNode, localContext) ||
53
+ const substitution = FrameForMetavariableSubstitution.fromStatementNode(statementNode, context) ||
54
+ TermForVariableSubstitution.fromStatementNode(statementNode, context) ||
55
55
  null;
56
56
 
57
57
  const { Statement } = shim,
58
58
  metavariableNode = statementMetavariableNode, ///
59
- metavariable = localContextA.findMetavariableByMetavariableNode(metavariableNode, localContextB);
59
+ metavariable = generalContext.findMetavariableByMetavariableNode(metavariableNode, specificContext);
60
60
 
61
- localContext = localContextB; ///
61
+ context = specificContext; ///
62
62
 
63
- statementNode = statementNodeB; ///
63
+ statementNode = specificStatementNode; ///
64
64
 
65
- const statement = Statement.fromStatementNode(statementNode, localContext);
65
+ const statement = Statement.fromStatementNode(statementNode, context);
66
66
 
67
- statementUnified = metavariable.unifyStatement(statement, substitution, substitutions, localContext);
67
+ statementUnified = metavariable.unifyStatement(statement, substitution, substitutions, generalContext, specificContext);
68
68
  } else {
69
- statementUnified = unifyChildNodes(statementNodeA, statementNodeB, substitutions, localContextA, localContextB);
69
+ statementUnified = unifyChildNodes(generalStatementNode, specificStatementNode, substitutions, generalContext, specificContext);
70
70
  }
71
71
  }
72
72
 
@@ -74,45 +74,59 @@ class MetaLevelUnifier extends Unifier {
74
74
  }
75
75
  },
76
76
  {
77
- nodeQueryA: frameMetavariableNodeQuery,
78
- nodeQueryB: frameNodeQuery,
79
- unify: (frameMetavariableNodeA, frameNodeB, substitutions, localContextA, localContextB) => {
77
+ generalNodeQuery: frameMetavariableNodeQuery,
78
+ specificNodeQuery: frameNodeQuery,
79
+ unify: (generalFrameMetavariableNode, specificFrameNode, substitutions, generalContext, specificContext) => {
80
80
  let frameUnified = false;
81
81
 
82
- const metavariableNode = frameMetavariableNodeA, ///
83
- metavariablePresent = localContextA.isMetavariablePresentByMetavariableNode(metavariableNode, localContextB);
82
+ const metavariableNode = generalFrameMetavariableNode, ///
83
+ metavariablePresent = generalContext.isMetavariablePresentByMetavariableNode(metavariableNode, generalContext, specificContext);
84
84
 
85
85
  if (metavariablePresent) {
86
+ let context;
87
+
86
88
  const { Frame, Metavariable } = shim,
87
- localContext = localContextB, ///
88
- frameNode = frameNodeB, ///
89
- metavariable = Metavariable.fromMetavariableNode(metavariableNode, localContextA),
90
- frame = Frame.fromFrameNode(frameNode, localContextB);
89
+ frameNode = specificFrameNode; ///
90
+
91
+ context = generalContext; ///
92
+
93
+ const metavariable = Metavariable.fromMetavariableNode(metavariableNode, context);
94
+
95
+ context = specificContext; ///
96
+
97
+ const frame = Frame.fromFrameNode(frameNode, context);
91
98
 
92
- frameUnified = metavariable.unifyFrame(frame, substitutions, localContext);
99
+ frameUnified = metavariable.unifyFrame(frame, substitutions, generalContext, specificContext);
93
100
  }
94
101
 
95
102
  return frameUnified;
96
103
  }
97
104
  },
98
105
  {
99
- nodeQueryA: termVariableNodeQuery,
100
- nodeQueryB: termNodeQuery,
101
- unify: (termVariableNodeA, termNodeB, substitutions, localContextA, localContextB) => {
106
+ generalNodeQuery: termVariableNodeQuery,
107
+ specificNodeQuery: termNodeQuery,
108
+ unify: (termVariableNodeA, termNodeB, substitutions, generalContext, specificContext) => {
102
109
  let termUnified = false;
103
110
 
104
111
  const variableNode = termVariableNodeA, ///
105
112
  variableName = variableNameFromVariableNode(variableNode),
106
- variablePresent = localContextA.isVariablePresentByVariableName(variableName);
113
+ variablePresent = generalContext.isVariablePresentByVariableName(variableName);
107
114
 
108
115
  if (variablePresent) {
116
+ let context;
117
+
109
118
  const { Term, Variable } = shim,
110
- localContext = localContextB, ///
111
- termNode = termNodeB, ///
112
- variable = Variable.fromVariableNode(variableNode, localContextA),
113
- term = Term.fromTermNode(termNode, localContextB);
119
+ termNode = termNodeB; ///
120
+
121
+ context = generalContext; ///
122
+
123
+ const variable = Variable.fromVariableNode(variableNode, context);
124
+
125
+ context = specificContext; ///
126
+
127
+ const term = Term.fromTermNode(termNode, context);
114
128
 
115
- termUnified = variable.unifyTerm(term, substitutions, localContext);
129
+ termUnified = variable.unifyTerm(term, substitutions, generalContext, specificContext);
116
130
  }
117
131
 
118
132
  return termUnified;
@@ -125,14 +139,14 @@ const metaLevelUnifier = new MetaLevelUnifier();
125
139
 
126
140
  export default metaLevelUnifier;
127
141
 
128
- function unifyChildNodes(statementNodeA, statementNodeB, substitutions, localContextA, localContextB) {
129
- const nonTerminalNodeA = statementNodeA, ///
130
- nonTerminalNodeB = statementNodeB, ///
131
- nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
132
- nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
133
- childNodesA = nonTerminalNodeAChildNodes, ///
134
- childNodesB = nonTerminalNodeBChildNodes, ///
135
- childNodesVerified = metaLevelUnifier.unifyChildNodes(childNodesA, childNodesB, substitutions, localContextA, localContextB),
142
+ function unifyChildNodes(generalStatementNode, specificStatementNode, substitutions, generalContext, specificContext) {
143
+ const generalNonTerminalNode = generalStatementNode, ///
144
+ specificNonTerminalNode = specificStatementNode, ///
145
+ generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
146
+ specificNonTerminalNodeChildNodes = specificNonTerminalNode.getChildNodes(),
147
+ generalChildNodes = generalNonTerminalNodeChildNodes, ///
148
+ specificChildNodes = specificNonTerminalNodeChildNodes, ///
149
+ childNodesVerified = metaLevelUnifier.unifyChildNodes(generalChildNodes, specificChildNodes, substitutions, generalContext, specificContext),
136
150
  statementUnified = childNodesVerified; ///
137
151
 
138
152
  return statementUnified;
@@ -10,12 +10,12 @@ const typeNodeQuery = nodeQuery("/type"),
10
10
  termNodeQuery = nodeQuery("/term");
11
11
 
12
12
  class MetavariableUnifier extends Unifier {
13
- unify(metavariableNodeA, metavariableNodeB, localContext) {
13
+ unify(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext) {
14
14
  let metavariableUnified;
15
15
 
16
- const nonTerminalNodeA = metavariableNodeA, ///
17
- nonTerminalNodeB = metavariableNodeB, ///
18
- nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
16
+ const generalNonTerminalNode = generalMetavariableNode, ///
17
+ specificNonTerminalNode = specificMetavariableNode, ///
18
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, generalContext, specificContext);
19
19
 
20
20
  metavariableUnified = nonTerminalNodeUnified; ///
21
21
 
@@ -24,20 +24,29 @@ class MetavariableUnifier extends Unifier {
24
24
 
25
25
  static maps = [
26
26
  {
27
- nodeQueryA: typeNodeQuery,
28
- nodeQueryB: termNodeQuery,
29
- unify: (typeNodeA, termNodeB, localContext) => {
27
+ generalNodeQuery: typeNodeQuery,
28
+ specificNodeQuery: termNodeQuery,
29
+ unify: (generalTypeNode, specificTermNode, generalContext, specificContext) => {
30
30
  let termUnified = false;
31
31
 
32
32
  const { Term } = shim,
33
- typeNode = typeNodeA, ///
34
- typeName = typeNameFromTypeNode(typeNode),
35
- type = localContext.findTypeByTypeName(typeName);
33
+ typeNode = generalTypeNode, ///
34
+ typeName = typeNameFromTypeNode(typeNode);
35
+
36
+ const type = generalContext.findTypeByTypeName(typeName);
36
37
 
37
38
  if (type !== null) {
38
- const termNode = termNodeB, ///
39
- term = Term.fromTermNode(termNode, localContext),
40
- termVerifiedGivenType = term.verifyGivenType(type, localContext);
39
+ let context;
40
+
41
+ const termNode = specificTermNode; ///
42
+
43
+ context = generalContext; ///
44
+
45
+ const term = Term.fromTermNode(termNode, context);
46
+
47
+ context = specificContext; ///
48
+
49
+ const termVerifiedGivenType = term.verifyGivenType(type, context);
41
50
 
42
51
  if (termVerifiedGivenType) {
43
52
  termUnified = true;
@@ -13,12 +13,12 @@ const termNodeQuery = nodeQuery("/term"),
13
13
  statementNodeQuery = nodeQuery("/statement");
14
14
 
15
15
  class StatementWithCombinatorUnifier extends Unifier {
16
- unify(combinatorStatementNode, statementNode, assignments, stated, localContext) {
16
+ unify(combinatorStatementNode, statementNode, assignments, stated, context) {
17
17
  let statementUnifiedWithCombinator;
18
18
 
19
- const nonTerminalNodeA = combinatorStatementNode, ///
20
- nonTerminalNodeB = statementNode, ///
21
- nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, assignments, stated, localContext);
19
+ const generalNonTerminalNode = combinatorStatementNode, ///
20
+ specificNonTerminalNode = statementNode, ///
21
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, assignments, stated, context);
22
22
 
23
23
  statementUnifiedWithCombinator = nonTerminalNodeUnified; ///
24
24
 
@@ -27,17 +27,17 @@ class StatementWithCombinatorUnifier extends Unifier {
27
27
 
28
28
  static maps = [
29
29
  {
30
- nodeQueryA: metaTypeNodeQuery,
31
- nodeQueryB: statementNodeQuery,
32
- unify: (metaTypeNodeA, statementNodeB, assignments, stated, localContext) => {
30
+ generalNodeQuery: metaTypeNodeQuery,
31
+ specificNodeQuery: statementNodeQuery,
32
+ unify: (generalMetaTypeNode, specificStatementNode, assignments, stated, context) => {
33
33
  let unified;
34
34
 
35
35
  const { Statement, MetaType } = shim,
36
- metaTypeNode = metaTypeNodeA, ///
37
- statementNode = statementNodeB, ///
38
- metaType = MetaType.fromMetaTypeNode(metaTypeNode, localContext),
39
- statement = Statement.fromStatementNode(statementNode, localContext),
40
- statementVerifiedGivenType = statement.verifyGivenMetaType(metaType, assignments, stated, localContext);
36
+ metaTypeNode = generalMetaTypeNode, ///
37
+ statementNode = specificStatementNode, ///
38
+ metaType = MetaType.fromMetaTypeNode(metaTypeNode, context),
39
+ statement = Statement.fromStatementNode(statementNode, context),
40
+ statementVerifiedGivenType = statement.verifyGivenMetaType(metaType, assignments, stated, context);
41
41
 
42
42
  unified = statementVerifiedGivenType;
43
43
 
@@ -45,17 +45,17 @@ class StatementWithCombinatorUnifier extends Unifier {
45
45
  }
46
46
  },
47
47
  {
48
- nodeQueryA: metaTypeNodeQuery,
49
- nodeQueryB: frameNodeQuery,
50
- unify: (metaTypeNodeA, frameNodeB, assignments, stated, localContext) => {
48
+ generalNodeQuery: metaTypeNodeQuery,
49
+ specificNodeQuery: frameNodeQuery,
50
+ unify: (generalMetaTypeNode, specificFrameNode, assignments, stated, context) => {
51
51
  let unified;
52
52
 
53
53
  const { Frame, MetaType } = shim,
54
- metaTypeNode = metaTypeNodeA, ///
55
- frameNode = frameNodeB, ///
56
- metaType = MetaType.fromMetaTypeNode(metaTypeNode, localContext),
57
- frame = Frame.fromFrameNode(frameNode, localContext),
58
- frameVerifiedGivenType = frame.verifyGivenMetaType(metaType, assignments, stated, localContext);
54
+ metaTypeNode = generalMetaTypeNode, ///
55
+ frameNode = specificFrameNode, ///
56
+ metaType = MetaType.fromMetaTypeNode(metaTypeNode, context),
57
+ frame = Frame.fromFrameNode(frameNode, context),
58
+ frameVerifiedGivenType = frame.verifyGivenMetaType(metaType, assignments, stated, context);
59
59
 
60
60
  unified = frameVerifiedGivenType;
61
61
 
@@ -63,20 +63,20 @@ class StatementWithCombinatorUnifier extends Unifier {
63
63
  }
64
64
  },
65
65
  {
66
- nodeQueryA: typeNodeQuery,
67
- nodeQueryB: termNodeQuery,
68
- unify: (typeNodeA, termNodeB, assignments, stated, localContext) => {
66
+ generalNodeQuery: typeNodeQuery,
67
+ specificNodeQuery: termNodeQuery,
68
+ unify: (generalTypeNode, specificTermNode, assignments, stated, context) => {
69
69
  let unified = false;
70
70
 
71
71
  const { Term } = shim,
72
- typeNode = typeNodeA, ///
72
+ typeNode = generalTypeNode, ///
73
73
  typeName = typeNameFromTypeNode(typeNode),
74
- type = localContext.findTypeByTypeName(typeName);
74
+ type = context.findTypeByTypeName(typeName);
75
75
 
76
76
  if (type !== null) {
77
- const termNode = termNodeB, ///
78
- term = Term.fromTermNode(termNode, localContext),
79
- termVerifiedGivenType = term.verifyGivenType(type, localContext);
77
+ const termNode = specificTermNode, ///
78
+ term = Term.fromTermNode(termNode, context),
79
+ termVerifiedGivenType = term.verifyGivenType(type, context);
80
80
 
81
81
  if (termVerifiedGivenType) {
82
82
  unified = true;
@@ -10,12 +10,12 @@ const termNodeQuery = nodeQuery("/term"),
10
10
  typeNodeQuery = nodeQuery("/type");
11
11
 
12
12
  class TermWithConstructorUnifier extends Unifier {
13
- unify(constructorTermNode, termNode, localContext) {
13
+ unify(constructorTermNode, termNode, context) {
14
14
  let termUnifiedWithConstructor;
15
15
 
16
- const nonTerminalNodeA = constructorTermNode, ///
17
- nonTerminalNodeB = termNode, ///
18
- nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
16
+ const generalNonTerminalNode = constructorTermNode, ///
17
+ specificNonTerminalNode = termNode, ///
18
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
19
19
 
20
20
  termUnifiedWithConstructor = nonTerminalNodeUnified; ///
21
21
 
@@ -26,18 +26,18 @@ class TermWithConstructorUnifier extends Unifier {
26
26
  {
27
27
  nodeQueryA: typeNodeQuery,
28
28
  nodeQueryB: termNodeQuery,
29
- unify: (typeNodeB, termNodeB, localContext) => {
29
+ unify: (typeNodeB, termNodeB, context) => {
30
30
  let unified = false;
31
31
 
32
32
  const { Term } = shim,
33
33
  typeNode = typeNodeB, ///
34
34
  typeName = typeNameFromTypeNode(typeNode),
35
- type = localContext.findTypeByTypeName(typeName);
35
+ type = context.findTypeByTypeName(typeName);
36
36
 
37
37
  if (type !== null) {
38
38
  const termNode = termNodeB, ///
39
- term = Term.fromTermNode(termNode, localContext),
40
- termVerifiedGivenType = term.verifyGivenType(type, localContext);
39
+ term = Term.fromTermNode(termNode, context),
40
+ termVerifiedGivenType = term.verifyGivenType(type, context);
41
41
 
42
42
  if (termVerifiedGivenType) {
43
43
  unified = true;
package/src/unifier.js CHANGED
@@ -7,36 +7,36 @@ import { terminalNodeMapFromNodes, areTerminalNodeMapsEqual } from "./utilities/
7
7
  const nonTerminalNodeQuery = nodeQuery("/*");
8
8
 
9
9
  export default class Unifier {
10
- unify(nodeA, nodeB, ...remainingArguments) {
10
+ unify(generalNode, specificNode, ...remainingArguments) {
11
11
  let unified;
12
12
 
13
- const nodeUnified = this.unifyNode(nodeA, nodeB, ...remainingArguments);
13
+ const nodeUnified = this.unifyNode(generalNode, specificNode, ...remainingArguments);
14
14
 
15
15
  unified = nodeUnified; ///
16
16
 
17
17
  return unified;
18
18
  }
19
19
 
20
- unifyNode(nodeA, nodeB, ...remainingArguments) {
20
+ unifyNode(generalNode, specificNode, ...remainingArguments) {
21
21
  let nodeUnified = false;
22
22
 
23
- const nodeATerminalNode = nodeA.isTerminalNode(),
24
- nodeBTerminalNode = nodeB.isTerminalNode(),
25
- nodeANonTerminalNode = nodeA.isNonTerminalNode(),
26
- nodeBNonTerminalNode = nodeB.isNonTerminalNode();
23
+ const generalNodeTerminalNode = generalNode.isTerminalNode(),
24
+ specificNodeTerminalNode = specificNode.isTerminalNode(),
25
+ generalNodeNonTerminalNode = generalNode.isNonTerminalNode(),
26
+ specificNodeNonTerminalNode = specificNode.isNonTerminalNode();
27
27
 
28
28
  if (false) {
29
29
  ///
30
- } else if (nodeATerminalNode && nodeBTerminalNode) {
31
- const terminalNodeA = nodeA, ///
32
- terminalNodeB = nodeB, ///
33
- terminalNodeUnified = this.unifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments);
30
+ } else if (generalNodeTerminalNode && specificNodeTerminalNode) {
31
+ const generalTerminalNode = generalNode, ///
32
+ specificTerminalNode = specificNode, ///
33
+ terminalNodeUnified = this.unifyTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments);
34
34
 
35
35
  nodeUnified = terminalNodeUnified; ///
36
- } else if (nodeANonTerminalNode && nodeBNonTerminalNode) {
37
- const nonTerminalNodeA = nodeA, ///
38
- nonTerminalNodeB = nodeB, ///
39
- nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments);
36
+ } else if (generalNodeNonTerminalNode && specificNodeNonTerminalNode) {
37
+ const generalNonTerminalNode = generalNode, ///
38
+ specificNonTerminalNode = specificNode, ///
39
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments);
40
40
 
41
41
  nodeUnified = nonTerminalNodeUnified; ///
42
42
  }
@@ -44,31 +44,31 @@ export default class Unifier {
44
44
  return nodeUnified;
45
45
  }
46
46
 
47
- unifyChildNodes(childNodesA, childNodesB, ...remainingArguments) {
47
+ unifyChildNodes(generalChildNodes, specificChildNodes, ...remainingArguments) {
48
48
  let childNodesUnified = false;
49
49
 
50
- const childNodesALength = childNodesA.length,
51
- childNodesBLength = childNodesB.length;
50
+ const generalChildNodesLength = generalChildNodes.length,
51
+ specificChildNodesLength = specificChildNodes.length;
52
52
 
53
- if (childNodesALength === childNodesBLength) {
54
- const childTerminalNodeMapA = terminalNodeMapFromNodes(childNodesA),
55
- childTerminalNodeMapB = terminalNodeMapFromNodes(childNodesB),
56
- terminalNodeMapsEqual = areTerminalNodeMapsEqual(childTerminalNodeMapA, childTerminalNodeMapB);
53
+ if (generalChildNodesLength === specificChildNodesLength) {
54
+ const specificTerminalNodeMap = terminalNodeMapFromNodes(specificChildNodes),
55
+ generalTerminalNodeMap = terminalNodeMapFromNodes(generalChildNodes),
56
+ terminalNodeMapsEqual = areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTerminalNodeMap);
57
57
 
58
58
  if (terminalNodeMapsEqual) {
59
59
  const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
60
60
 
61
61
  if (lastRemainingArgumentFunction) {
62
62
  const index = 0,
63
- childNodesUnifiedAhead = this.unifyChildNodesAhead(index, childNodesA, childNodesB,...remainingArguments);
63
+ childNodesUnifiedAhead = this.unifyChildNodesAhead(index, generalChildNodes, specificChildNodes,...remainingArguments);
64
64
 
65
65
  childNodesUnified = childNodesUnifiedAhead; ///
66
66
  } else {
67
- childNodesUnified = childNodesA.every((childNodeA, index) => {
68
- const childNodeB = childNodesB[index],
69
- nodeA = childNodeA, ///
70
- nodeB = childNodeB, ///
71
- nodeUnified = this.unifyNode(nodeA, nodeB, ...remainingArguments);
67
+ childNodesUnified = generalChildNodes.every((generalChildNode, index) => {
68
+ const specificChildNode = specificChildNodes[index],
69
+ specificNode = specificChildNode, ///
70
+ generalNode = generalChildNode, ///
71
+ nodeUnified = this.unifyNode(generalNode, specificNode, ...remainingArguments);
72
72
 
73
73
  if (nodeUnified) {
74
74
  return true;
@@ -81,7 +81,7 @@ export default class Unifier {
81
81
  return childNodesUnified;
82
82
  }
83
83
 
84
- unifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments) { ///
84
+ unifyTerminalNode(generalTerminalNode, specificTerminalNode, ...remainingArguments) { ///
85
85
  let terminalNodeUnified;
86
86
 
87
87
  const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
@@ -100,7 +100,7 @@ export default class Unifier {
100
100
  return terminalNodeUnified;
101
101
  }
102
102
 
103
- unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments) {
103
+ unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, ...remainingArguments) {
104
104
  let nonTerminalNodeUnified;
105
105
 
106
106
  let { maps } = this.constructor;
@@ -108,20 +108,20 @@ export default class Unifier {
108
108
  maps = [ ///
109
109
  ...maps,
110
110
  {
111
- nodeQueryA: nonTerminalNodeQuery,
112
- nodeQueryB: nonTerminalNodeQuery,
113
- unify: (nodeA, nobeB, ...remainingArguments) => {
111
+ generalNodeQuery: nonTerminalNodeQuery,
112
+ specificNodeQuery: nonTerminalNodeQuery,
113
+ unify: (generalNode, specificNode, ...remainingArguments) => {
114
114
  let nonTerminalNodeUnified;
115
115
 
116
- const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
117
- nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
116
+ const generalNonTerminalNodeRuleName = generalNonTerminalNode.getRuleName(), ///
117
+ specificNonTerminalNodeBRuleNam = specificNonTerminalNode.getRuleName(); ///
118
118
 
119
- if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
120
- const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
121
- nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
122
- childNodesA = nonTerminalNodeAChildNodes, ///
123
- childNodesB = nonTerminalNodeBChildNodes, ///
124
- childNodesUnified = this.unifyChildNodes(childNodesA, childNodesB, ...remainingArguments);
119
+ if (generalNonTerminalNodeRuleName === specificNonTerminalNodeBRuleNam) {
120
+ const generalNonTerminalNodeChildNodes = generalNonTerminalNode.getChildNodes(),
121
+ specificNonTerminalNodeBChildNode = specificNonTerminalNode.getChildNodes(),
122
+ generalChildNodes = generalNonTerminalNodeChildNodes, ///
123
+ specificChildNodes = specificNonTerminalNodeBChildNode, ///
124
+ childNodesUnified = this.unifyChildNodes(generalChildNodes, specificChildNodes, ...remainingArguments);
125
125
 
126
126
  nonTerminalNodeUnified = childNodesUnified; ///
127
127
  }
@@ -134,13 +134,13 @@ export default class Unifier {
134
134
  let nodeUnified = false;
135
135
 
136
136
  maps.some((map) => {
137
- const { nodeQueryA, nodeQueryB, unify } = map;
137
+ const { generalNodeQuery, specificNodeQuery, unify } = map;
138
138
 
139
- const nodeA = nodeQueryA(nonTerminalNodeA), ///
140
- nodeB = nodeQueryB(nonTerminalNodeB); ///
139
+ const generalNode = generalNodeQuery(generalNonTerminalNode), ///
140
+ specificNode = specificNodeQuery(specificNonTerminalNode); ///
141
141
 
142
- if ((nodeA !== null) && (nodeB !== null)) {
143
- nodeUnified = unify(nodeA, nodeB, ...remainingArguments);
142
+ if ((generalNode !== null) && (specificNode !== null)) {
143
+ nodeUnified = unify(generalNode, specificNode, ...remainingArguments);
144
144
 
145
145
  return true;
146
146
  }
@@ -151,26 +151,26 @@ export default class Unifier {
151
151
  return nonTerminalNodeUnified;
152
152
  }
153
153
 
154
- unifyChildNodesAhead(index, childNodesA, childNodesB, ...remainingArguments) {
154
+ unifyChildNodesAhead(index, generalChildNodes, specificChildNodes, ...remainingArguments) {
155
155
  let childNodesUnified;
156
156
 
157
157
  const unifyAhead = remainingArguments.pop(), ///
158
- childNodesALength = childNodesA.length;
158
+ generalChildNodesLength = generalChildNodes.length;
159
159
 
160
- if (index === childNodesALength) {
160
+ if (index === generalChildNodesLength) {
161
161
  const unifiedAhead = unifyAhead();
162
162
 
163
163
  childNodesUnified = unifiedAhead; ///
164
164
  } else {
165
- const childNodeA = childNodesA[index],
166
- childNodeB = childNodesB[index],
167
- nodeA = childNodeA, ///
168
- nodeB = childNodeB, ///
169
- nodeUnified = this.unifyNode(nodeA, nodeB, ...remainingArguments, () => {
165
+ const generalChildNode = generalChildNodes[index],
166
+ specificChildNode = specificChildNodes[index],
167
+ generalNode = generalChildNode, ///
168
+ specificNode = specificChildNode, ///
169
+ nodeUnified = this.unifyNode(generalNode, specificNode, ...remainingArguments, () => {
170
170
  remainingArguments.push(unifyAhead); ///
171
171
 
172
172
  const aheadIndex = index + 1,
173
- childNodesUnifiedAhead = this.unifyChildNodesAhead(aheadIndex, childNodesA, childNodesB, ...remainingArguments);
173
+ childNodesUnifiedAhead = this.unifyChildNodesAhead(aheadIndex, generalChildNodes, specificChildNodes, ...remainingArguments);
174
174
 
175
175
  return childNodesUnifiedAhead;
176
176
  });
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- export function assignAssignments(assignments, localContext) {
3
+ export function assignAssignments(assignments, context) {
4
4
  const assignmentsAssigned = assignments.every((assigment) => {
5
- const assignmentAssigned = assigment.assign(localContext);
5
+ const assignmentAssigned = assigment.assign(context);
6
6
 
7
7
  return assignmentAssigned
8
8
  });