occam-verify-cli 1.0.405 → 1.0.414

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 (122) hide show
  1. package/lib/context/file.js +3 -3
  2. package/lib/context/local.js +3 -3
  3. package/lib/context/release.js +2 -2
  4. package/lib/context/temporary.js +103 -54
  5. package/lib/mixins/statement/verify.js +2 -2
  6. package/lib/mixins/step/unify.js +2 -2
  7. package/lib/node/argument.js +2 -2
  8. package/lib/node/assumption.js +6 -6
  9. package/lib/node/frame.js +19 -7
  10. package/lib/node/judgement.js +8 -1
  11. package/lib/node/statement.js +34 -15
  12. package/lib/node/substitution/term.js +3 -11
  13. package/lib/node/term.js +20 -8
  14. package/lib/nonTerminalNode.js +3 -3
  15. package/lib/ontology/assertion/contained.js +7 -7
  16. package/lib/ontology/assertion/defined.js +8 -8
  17. package/lib/ontology/assertion/subproof.js +3 -3
  18. package/lib/ontology/assumption.js +49 -45
  19. package/lib/ontology/combinator.js +3 -3
  20. package/lib/ontology/constructor.js +3 -3
  21. package/lib/ontology/equality.js +4 -4
  22. package/lib/ontology/equivalence.js +2 -2
  23. package/lib/ontology/frame.js +37 -12
  24. package/lib/ontology/judgement.js +13 -6
  25. package/lib/ontology/metavariable.js +75 -76
  26. package/lib/ontology/propertyRelation.js +2 -2
  27. package/lib/ontology/reference.js +33 -4
  28. package/lib/ontology/signature.js +2 -2
  29. package/lib/ontology/statement.js +33 -8
  30. package/lib/ontology/step.js +4 -4
  31. package/lib/ontology/substitution/frame.js +13 -15
  32. package/lib/ontology/substitution/statement.js +31 -32
  33. package/lib/ontology/substitution/term.js +26 -25
  34. package/lib/ontology/substitution.js +2 -2
  35. package/lib/ontology/substitutions.js +4 -4
  36. package/lib/ontology/term.js +26 -12
  37. package/lib/ontology/variable.js +2 -2
  38. package/lib/process/equate.js +322 -0
  39. package/lib/process/unify.js +623 -0
  40. package/lib/process/verify.js +332 -0
  41. package/lib/utilities/brackets.js +3 -8
  42. package/lib/utilities/context.js +4 -14
  43. package/lib/utilities/json.js +18 -1
  44. package/lib/utilities/pass.js +68 -0
  45. package/lib/utilities/substitutions.js +11 -16
  46. package/package.json +2 -2
  47. package/src/context/file.js +2 -2
  48. package/src/context/local.js +2 -2
  49. package/src/context/release.js +1 -1
  50. package/src/context/temporary.js +124 -54
  51. package/src/mixins/statement/verify.js +3 -1
  52. package/src/mixins/step/unify.js +0 -1
  53. package/src/node/argument.js +1 -1
  54. package/src/node/assumption.js +4 -4
  55. package/src/node/frame.js +19 -5
  56. package/src/node/judgement.js +7 -0
  57. package/src/node/statement.js +35 -13
  58. package/src/node/substitution/term.js +4 -14
  59. package/src/node/term.js +20 -6
  60. package/src/nonTerminalNode.js +1 -1
  61. package/src/ontology/assertion/contained.js +6 -6
  62. package/src/ontology/assertion/defined.js +7 -7
  63. package/src/ontology/assertion/subproof.js +1 -1
  64. package/src/ontology/assumption.js +52 -57
  65. package/src/ontology/combinator.js +1 -1
  66. package/src/ontology/constructor.js +1 -1
  67. package/src/ontology/equality.js +3 -3
  68. package/src/ontology/equivalence.js +1 -1
  69. package/src/ontology/frame.js +44 -10
  70. package/src/ontology/judgement.js +8 -3
  71. package/src/ontology/metavariable.js +108 -102
  72. package/src/ontology/propertyRelation.js +3 -2
  73. package/src/ontology/reference.js +39 -1
  74. package/src/ontology/signature.js +3 -3
  75. package/src/ontology/statement.js +38 -4
  76. package/src/ontology/step.js +7 -7
  77. package/src/ontology/substitution/frame.js +13 -17
  78. package/src/ontology/substitution/statement.js +45 -48
  79. package/src/ontology/substitution/term.js +19 -19
  80. package/src/ontology/substitution.js +3 -2
  81. package/src/ontology/substitutions.js +3 -3
  82. package/src/ontology/term.js +26 -5
  83. package/src/ontology/variable.js +3 -2
  84. package/src/process/equate.js +212 -0
  85. package/src/process/unify.js +634 -0
  86. package/src/process/verify.js +204 -0
  87. package/src/utilities/brackets.js +2 -11
  88. package/src/utilities/context.js +1 -21
  89. package/src/utilities/json.js +19 -0
  90. package/src/utilities/{unifier.js → pass.js} +17 -1
  91. package/src/utilities/substitutions.js +10 -20
  92. package/lib/unifier/equantional.js +0 -170
  93. package/lib/unifier/intrinsicLevel.js +0 -144
  94. package/lib/unifier/metaLevel.js +0 -197
  95. package/lib/unifier/metavariable.js +0 -140
  96. package/lib/unifier/statementWithCombinator.js +0 -177
  97. package/lib/unifier/termWithConstructor.js +0 -145
  98. package/lib/unifier.js +0 -241
  99. package/lib/utilities/arguments.js +0 -28
  100. package/lib/utilities/frame.js +0 -18
  101. package/lib/utilities/metavariable.js +0 -18
  102. package/lib/utilities/statement.js +0 -18
  103. package/lib/utilities/unification.js +0 -109
  104. package/lib/utilities/unifier.js +0 -51
  105. package/lib/utilities/variable.js +0 -18
  106. package/lib/verifier/combinator.js +0 -158
  107. package/lib/verifier.js +0 -219
  108. package/src/unifier/equantional.js +0 -90
  109. package/src/unifier/intrinsicLevel.js +0 -52
  110. package/src/unifier/metaLevel.js +0 -151
  111. package/src/unifier/metavariable.js +0 -50
  112. package/src/unifier/statementWithCombinator.js +0 -114
  113. package/src/unifier/termWithConstructor.js +0 -56
  114. package/src/unifier.js +0 -183
  115. package/src/utilities/arguments.js +0 -21
  116. package/src/utilities/frame.js +0 -13
  117. package/src/utilities/metavariable.js +0 -13
  118. package/src/utilities/statement.js +0 -13
  119. package/src/utilities/unification.js +0 -136
  120. package/src/utilities/variable.js +0 -13
  121. package/src/verifier/combinator.js +0 -72
  122. package/src/verifier.js +0 -150
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+
3
+ import { nodeQuery } from "../utilities/query";
4
+ import { isLastRemainingArgumentFunction } from "../utilities/pass";
5
+
6
+ const nonTerminalNodeQuery = nodeQuery("/*");
7
+
8
+ const termNodeQuery = nodeQuery("/term"),
9
+ typeNodeQuery = nodeQuery("/type"),
10
+ statementNodeQuery = nodeQuery("/statement");
11
+
12
+ export default class Pass {
13
+ run(node, ...remainingArguments) {
14
+ let success;
15
+
16
+ const visited = this.visitNode(node, ...remainingArguments);
17
+
18
+ success = visited; ///
19
+
20
+ return success;
21
+ }
22
+
23
+ descend(childNodes, ...remainingArguments) {
24
+ let descendedAhead = false;
25
+
26
+ const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
27
+
28
+ if (lastRemainingArgumentFunction) {
29
+ const index = 0;
30
+
31
+ descendedAhead = this.descendAhead(index, childNodes, ...remainingArguments); ///
32
+ } else {
33
+ const visited = childNodes.every((childNode) => {
34
+ const node = childNode, ///
35
+ visited = this.visitNode(node, ...remainingArguments);
36
+
37
+ if (visited) {
38
+ return true;
39
+ }
40
+ });
41
+
42
+ if (visited) {
43
+ descendedAhead = true;
44
+ }
45
+ }
46
+
47
+ return descendedAhead;
48
+ }
49
+
50
+ descendAhead(index, childNodes, ...remainingArguments) {
51
+ let descendedAhead = false;
52
+
53
+ const descendAhead = remainingArguments.pop(), ///
54
+ childNodesLength = childNodes.length;
55
+
56
+ if (index === childNodesLength) {
57
+ descendedAhead = descendAhead();
58
+ } else {
59
+ const childNode = childNodes[index],
60
+ node = childNode, ///
61
+ visited = this.visitNode(node, ...remainingArguments, () => {
62
+ remainingArguments.push(descendAhead);
63
+
64
+ const aheadIndex = index + 1,
65
+ descendedAhead = this.descendAhead(aheadIndex, childNodes, ...remainingArguments);
66
+
67
+ return descendedAhead;
68
+ });
69
+
70
+ if (visited) {
71
+ descendedAhead = true;
72
+ }
73
+ }
74
+
75
+ return descendedAhead;
76
+ }
77
+
78
+ visitNode(node, ...remainingArguments) {
79
+ let visited;
80
+
81
+ const nodeTerminalNode = node.isTerminalNode();
82
+
83
+ if (nodeTerminalNode) {
84
+ const terminalNode = node; ///
85
+
86
+ visited = this.visitTerminalNode(terminalNode, ...remainingArguments);
87
+ } else {
88
+ const nonTerminalNode = node; ///
89
+
90
+ visited = this.visitNonTerminalNode(nonTerminalNode, ...remainingArguments);
91
+ }
92
+
93
+ return visited;
94
+ }
95
+
96
+ visitTerminalNode(terminalNode, ...remainingArguments) {
97
+ let visited = false;
98
+
99
+ const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
100
+
101
+ if (lastRemainingArgumentFunction) {
102
+ const descendAhead = remainingArguments.pop(), ///
103
+ descendedAhead = descendAhead();
104
+
105
+ if (descendedAhead) {
106
+ visited = true;
107
+ }
108
+
109
+ remainingArguments.push(descendAhead);
110
+ } else {
111
+ visited = true;
112
+ }
113
+
114
+ return visited;
115
+ }
116
+
117
+ visitNonTerminalNode(nonTerminalNode, ...remainingArguments) {
118
+ let visited = false;
119
+
120
+ let { maps } = this.constructor;
121
+
122
+ maps = [ ///
123
+ ...maps,
124
+ {
125
+ nodeQuery: nonTerminalNodeQuery,
126
+ run: (node, ...remainingArguments) => {
127
+ let visited = false;
128
+
129
+ const childNodes = nonTerminalNode.getChildNodes(), ///
130
+ descended = this.descend(childNodes, ...remainingArguments);
131
+
132
+ if (descended) {
133
+ visited = true;
134
+ }
135
+
136
+ return visited;
137
+ }
138
+ }
139
+ ]
140
+
141
+ maps.some((map) => {
142
+ const { nodeQuery, run } = map;
143
+
144
+ const node = nodeQuery(nonTerminalNode);
145
+
146
+ if (node !== null) {
147
+ const success = run(node, ...remainingArguments);
148
+
149
+ visited = success;
150
+
151
+ return true;
152
+ }
153
+ });
154
+
155
+ return visited;
156
+ }
157
+ }
158
+
159
+ class CombinatorPass extends Pass {
160
+ static maps = [
161
+ {
162
+ nodeQuery: statementNodeQuery,
163
+ run: (statementNode, context) => {
164
+ const { Statement } = ontology,
165
+ statement = Statement.fromStatementNode(statementNode, context),
166
+ assignments = null,
167
+ stated = false,
168
+ statementVerifies = statement.verify(assignments, stated, context);
169
+
170
+ return statementVerifies;
171
+ }
172
+ },
173
+ {
174
+ nodeQuery: termNodeQuery,
175
+ verify: (termNode, context) => {
176
+ const { Term } = ontology,
177
+ term = Term.fromTermNode(termNode, context),
178
+ termVerifies = term.verify(context, () => {
179
+ const verifiesAhead = true;
180
+
181
+ return verifiesAhead;
182
+ });
183
+
184
+ return termVerifies;
185
+ }
186
+ },
187
+ {
188
+ nodeQuery: typeNodeQuery,
189
+ verify: (typeNode, context) => {
190
+ let typeVerifies = false;
191
+
192
+ const nominalTypeName = typeNode.getNominalTypeName(),
193
+ typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
194
+
195
+ if (typePresent) {
196
+ typeVerifies = true;
197
+ }
198
+
199
+ return typeVerifies;
200
+ }
201
+ }
202
+ ];
203
+ }
204
+
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import ontology from "../ontology";
4
- import TemporaryContext from "../context/temporary";
5
4
  import combinatorBracketedContext from "../context/bracketed/combinator";
6
5
  import constructorBracketedContext from "../context/bracketed/constructor";
7
6
 
7
+ import { contextFromStatement } from "../utilities/context";
8
+
8
9
  import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
9
10
 
10
11
  export function stripBracketsFromTerm(term, context) {
@@ -88,13 +89,3 @@ export function bracketedStatementChildNodeFromStatementNode(statementNode) {
88
89
 
89
90
  return bracketedStatementChildNode;
90
91
  }
91
-
92
- function contextFromStatement(statement, context) {
93
- const statementTokens = statement.getTokens(),
94
- tokens = statementTokens, ///
95
- temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
96
-
97
- context = temporaryContext; ///
98
-
99
- return context;
100
- }
@@ -3,16 +3,6 @@
3
3
  import ontology from "../ontology";
4
4
  import TemporaryContext from "../context/temporary";
5
5
 
6
- export function metavariableFromFrame(frame, context) {
7
- context = contextFromFrame(frame, context); ///
8
-
9
- const { Metavariable } = ontology,
10
- frameNode = frame.getNode(),
11
- metavariable = Metavariable.fromFrameNode(frameNode, context);
12
-
13
- return metavariable;
14
- }
15
-
16
6
  export function equalityFromStatement(statement, context) {
17
7
  context = contextFromStatement(statement, context); ///
18
8
 
@@ -103,17 +93,7 @@ export function satisfiesAssertionFromStatement(statement, context) {
103
93
  return satisfiesAssertion;
104
94
  }
105
95
 
106
- function contextFromFrame(frame, context) {
107
- const frameTokens = frame.getTokens(),
108
- tokens = frameTokens, ///
109
- temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
110
-
111
- context = temporaryContext; ///
112
-
113
- return context;
114
- }
115
-
116
- function contextFromStatement(statement, context) {
96
+ export function contextFromStatement(statement, context) {
117
97
  const statementTokens = statement.getTokens(),
118
98
  tokens = statementTokens, ///
119
99
  temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
@@ -91,6 +91,19 @@ export function signatureFromJSON(json, context) {
91
91
  return signature;
92
92
  }
93
93
 
94
+ export function referenceFromJSON(json, context) {
95
+ let { reference } = json;
96
+
97
+ const { Reference } = ontology,
98
+ referenceJSON = reference; ///
99
+
100
+ json = referenceJSON; ///
101
+
102
+ reference = Reference.fromJSON(json, context);
103
+
104
+ return reference;
105
+ }
106
+
94
107
  export function conclusionFromJSON(json, context) {
95
108
  let { conclusion } = json;
96
109
 
@@ -532,6 +545,12 @@ export function metaTypeToMetaTypeJSON(metaType) {
532
545
  return metaTypeJSON;
533
546
  }
534
547
 
548
+ export function referenceToReferenceJSON(reference) {
549
+ const referenceJSON = reference.toJSON();
550
+
551
+ return referenceJSON;
552
+ }
553
+
535
554
  export function statementToStatementJSON(statement) {
536
555
  const statementJSON = (statement !== null) ?
537
556
  statement.toJSON() :
@@ -2,7 +2,9 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- const { match } = arrayUtilities;
5
+ import { FUNCTION } from "../constants";
6
+
7
+ const { match, last } = arrayUtilities;
6
8
 
7
9
  export function terminalNodeMapFromNodes(nodes) {
8
10
  const terminalNodeMap = {};
@@ -47,3 +49,17 @@ export function areTerminalNodeMapsEqual(generalTerminalNodeMap, specificTermina
47
49
 
48
50
  return terminalNodeMapsEqual;
49
51
  }
52
+
53
+ export function isLastRemainingArgumentFunction(remainingArguments) {
54
+ let lastRemainingArgumentFunction = false;
55
+
56
+ const remainingArgumentsLength = remainingArguments.length;
57
+
58
+ if (remainingArgumentsLength > 0) {
59
+ const lastRemainingArgument = last(remainingArguments);
60
+
61
+ lastRemainingArgumentFunction = (typeof lastRemainingArgument === FUNCTION);
62
+ }
63
+
64
+ return lastRemainingArgumentFunction;
65
+ }
@@ -1,22 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import { nodeQuery } from "../utilities/query";
4
- import { frameMetavariableNameFromFrameNode } from "../utilities/frame";
5
- import { termVariableIdentifierFromTermNode } from "../utilities/variable";
6
- import { statementMetavariableNameFromFrameNode } from "../utilities/statement";
7
-
8
- const substitutionNodeQuery = nodeQuery("/statement/termSubstitution|frameSubstitution!");
9
-
10
3
  export function termFromTermAndSubstitutions(term, substitutions, generalContext, specificContext) {
11
4
  if (term !== null) {
12
5
  const termNode = term.getNode(),
13
- termSimple = term.isSimple();
6
+ termSingular = term.isSingular();
14
7
 
15
8
  term = null; ///
16
9
 
17
- if (termSimple) {
18
- const termVariableIdentifier = termVariableIdentifierFromTermNode(termNode),
19
- variableIdentifier = termVariableIdentifier, ///
10
+ if (termSingular) {
11
+ const variableIdentifier = termNode.getVariableIdentifier(),
20
12
  variable = generalContext.findVariableByVariableIdentifier(variableIdentifier);
21
13
 
22
14
  if (variable !== null) {
@@ -37,13 +29,12 @@ export function termFromTermAndSubstitutions(term, substitutions, generalContext
37
29
  export function frameFromFrameAndSubstitutions(frame, substitutions, generalContext, specificContext) {
38
30
  if (frame !== null) {
39
31
  const frameNode = frame.getNode(),
40
- frameSimple = frame.isSimple();
32
+ frameSingular = frame.isSingular();
41
33
 
42
34
  frame = null; ///
43
35
 
44
- if (frameSimple) {
45
- const frameMetavariableName = frameMetavariableNameFromFrameNode(frameNode),
46
- metavariableName = frameMetavariableName, ///
36
+ if (frameSingular) {
37
+ const metavariableName = frameNode.getMetavariableName(),
47
38
  metavariable = generalContext.findMetavariableByMetavariableName(metavariableName);
48
39
 
49
40
  if (metavariable !== null) {
@@ -66,21 +57,20 @@ export function frameFromFrameAndSubstitutions(frame, substitutions, generalCont
66
57
  export function statementFromStatementAndSubstitutions(statement, substitutions, generalContext, specificContext) {
67
58
  if (statement !== null) {
68
59
  const statementNode = statement.getNode(),
69
- statementSimple = statement.isSimple();
60
+ statementSingular = statement.isSingular();
70
61
 
71
- if (statementSimple) {
62
+ if (statementSingular) {
72
63
  statement = null;
73
64
 
74
65
  let substitution = null;
75
66
 
76
- const substitutionNode = substitutionNodeQuery(statementNode);
67
+ const substitutionNode = statementNode.getSubstitutionNode();
77
68
 
78
69
  if (substitutionNode !== null) {
79
70
  substitution = generalContext.findSubstitutionBySubstitutionNode(substitutionNode);
80
71
  }
81
72
 
82
- const statementMetavariableName = statementMetavariableNameFromFrameNode(statementNode),
83
- metavariableName = statementMetavariableName, ///
73
+ const metavariableName = statementNode.getMetavariableName(),
84
74
  metavariable = generalContext.findMetavariableByMetavariableName(metavariableName);
85
75
 
86
76
  if (metavariable !== null) {
@@ -1,170 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _unifier = /*#__PURE__*/ _interop_require_default(require("../unifier"));
12
- var _query = require("../utilities/query");
13
- function _assert_this_initialized(self) {
14
- if (self === void 0) {
15
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
16
- }
17
- return self;
18
- }
19
- function _call_super(_this, derived, args) {
20
- derived = _get_prototype_of(derived);
21
- return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
22
- }
23
- function _class_call_check(instance, Constructor) {
24
- if (!(instance instanceof Constructor)) {
25
- throw new TypeError("Cannot call a class as a function");
26
- }
27
- }
28
- function _defineProperties(target, props) {
29
- for(var i = 0; i < props.length; i++){
30
- var descriptor = props[i];
31
- descriptor.enumerable = descriptor.enumerable || false;
32
- descriptor.configurable = true;
33
- if ("value" in descriptor) descriptor.writable = true;
34
- Object.defineProperty(target, descriptor.key, descriptor);
35
- }
36
- }
37
- function _create_class(Constructor, protoProps, staticProps) {
38
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
39
- if (staticProps) _defineProperties(Constructor, staticProps);
40
- return Constructor;
41
- }
42
- function _define_property(obj, key, value) {
43
- if (key in obj) {
44
- Object.defineProperty(obj, key, {
45
- value: value,
46
- enumerable: true,
47
- configurable: true,
48
- writable: true
49
- });
50
- } else {
51
- obj[key] = value;
52
- }
53
- return obj;
54
- }
55
- function _get_prototype_of(o) {
56
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
57
- return o.__proto__ || Object.getPrototypeOf(o);
58
- };
59
- return _get_prototype_of(o);
60
- }
61
- function _inherits(subClass, superClass) {
62
- if (typeof superClass !== "function" && superClass !== null) {
63
- throw new TypeError("Super expression must either be null or a function");
64
- }
65
- subClass.prototype = Object.create(superClass && superClass.prototype, {
66
- constructor: {
67
- value: subClass,
68
- writable: true,
69
- configurable: true
70
- }
71
- });
72
- if (superClass) _set_prototype_of(subClass, superClass);
73
- }
74
- function _interop_require_default(obj) {
75
- return obj && obj.__esModule ? obj : {
76
- default: obj
77
- };
78
- }
79
- function _possible_constructor_return(self, call) {
80
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
81
- return call;
82
- }
83
- return _assert_this_initialized(self);
84
- }
85
- function _set_prototype_of(o, p) {
86
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
87
- o.__proto__ = p;
88
- return o;
89
- };
90
- return _set_prototype_of(o, p);
91
- }
92
- function _type_of(obj) {
93
- "@swc/helpers - typeof";
94
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
95
- }
96
- function _is_native_reflect_construct() {
97
- try {
98
- var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
99
- } catch (_) {}
100
- return (_is_native_reflect_construct = function() {
101
- return !!result;
102
- })();
103
- }
104
- var termNodeQuery = (0, _query.nodeQuery)("/term");
105
- var EquationalUnifier = /*#__PURE__*/ function(Unifier) {
106
- _inherits(EquationalUnifier, Unifier);
107
- function EquationalUnifier() {
108
- _class_call_check(this, EquationalUnifier);
109
- return _call_super(this, EquationalUnifier, arguments);
110
- }
111
- _create_class(EquationalUnifier, [
112
- {
113
- key: "equateTerms",
114
- value: function equateTerms(leftTermNode, rightTermNode, context) {
115
- var termsEquate;
116
- var generalNonTerminalNode = leftTermNode, specificNonTerminalNode = rightTermNode, nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
117
- termsEquate = nonTerminalNodeUnifies; ///
118
- return termsEquate;
119
- }
120
- },
121
- {
122
- key: "equateStatements",
123
- value: function equateStatements(statementANode, statementBNode, context) {
124
- var statementsEquate;
125
- var generalNonTerminalNode = statementANode, specificNonTerminalNode = statementBNode, nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
126
- statementsEquate = nonTerminalNodeUnifies; ///
127
- return statementsEquate;
128
- }
129
- }
130
- ]);
131
- return EquationalUnifier;
132
- }(_unifier.default);
133
- _define_property(EquationalUnifier, "maps", [
134
- {
135
- generalNodeQuery: termNodeQuery,
136
- specificNodeQuery: termNodeQuery,
137
- unify: function(leftTermNode, rightTermNode, context) {
138
- var termUnifies = false;
139
- if (!termUnifies) {
140
- var depth = Infinity, leftTermNodeMatchesRightTermNode = leftTermNode.match(rightTermNode, depth);
141
- if (leftTermNodeMatchesRightTermNode) {
142
- termUnifies = true;
143
- }
144
- }
145
- if (!termUnifies) {
146
- var equivalences = context.getEquivalences(), termNodes = [
147
- leftTermNode,
148
- rightTermNode
149
- ], equivalence = equivalences.findEquivalenceByTermNodes(termNodes);
150
- if (equivalence !== null) {
151
- termUnifies = true;
152
- }
153
- }
154
- if (!termUnifies) {
155
- var depth1 = 1, leftTermNodeMatchesRightTermNode1 = leftTermNode.match(rightTermNode, depth1);
156
- if (leftTermNodeMatchesRightTermNode1) {
157
- var leftNonTerminalNode = leftTermNode, rightNonTerminalNode = rightTermNode, leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, childNodesUnify = equationalUnifier.unifyChildNodes(leftChildNodes, rightChildNodes, context);
158
- if (childNodesUnify) {
159
- termUnifies = true;
160
- }
161
- }
162
- }
163
- return termUnifies;
164
- }
165
- }
166
- ]);
167
- var equationalUnifier = new EquationalUnifier();
168
- var _default = equationalUnifier;
169
-
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL2VxdWFudGlvbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVW5pZmllciBmcm9tIFwiLi4vdW5pZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKTtcblxuY2xhc3MgRXF1YXRpb25hbFVuaWZpZXIgZXh0ZW5kcyBVbmlmaWVyIHtcbiAgZXF1YXRlVGVybXMobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1zRXF1YXRlO1xuXG4gICAgY29uc3QgZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSA9IGxlZnRUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNOb25UZXJtaW5hbE5vZGUgPSByaWdodFRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVVbmlmaWVzID0gdGhpcy51bmlmeU5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICB0ZXJtc0VxdWF0ZSA9IG5vblRlcm1pbmFsTm9kZVVuaWZpZXM7IC8vL1xuXG4gICAgcmV0dXJuIHRlcm1zRXF1YXRlO1xuICB9O1xuXG4gIGVxdWF0ZVN0YXRlbWVudHMoc3RhdGVtZW50QU5vZGUsIHN0YXRlbWVudEJOb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudHNFcXVhdGU7XG5cbiAgICBjb25zdCBnZW5lcmFsTm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50QU5vZGUsIC8vL1xuICAgICAgICAgIHNwZWNpZmljTm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Qk5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVVuaWZpZXMgPSB0aGlzLnVuaWZ5Tm9uVGVybWluYWxOb2RlKGdlbmVyYWxOb25UZXJtaW5hbE5vZGUsIHNwZWNpZmljTm9uVGVybWluYWxOb2RlLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudHNFcXVhdGUgPSBub25UZXJtaW5hbE5vZGVVbmlmaWVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnRzRXF1YXRlO1xuICB9O1xuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksICAvLy9cbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LCAvLy9cbiAgICAgIHVuaWZ5OiAobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBkZXB0aCA9IEluZmluaXR5LFxuICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlLm1hdGNoKHJpZ2h0VGVybU5vZGUsIGRlcHRoKTtcblxuICAgICAgICAgIGlmIChsZWZ0VGVybU5vZGVNYXRjaGVzUmlnaHRUZXJtTm9kZSkge1xuICAgICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgICAgICAgIHRlcm1Ob2RlcyA9IFtcbiAgICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGVcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VzLmZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzKHRlcm1Ob2Rlcyk7XG5cbiAgICAgICAgICBpZiAoZXF1aXZhbGVuY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3QgZGVwdGggPSAxLFxuICAgICAgICAgICAgICAgIGxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlLm1hdGNoKHJpZ2h0VGVybU5vZGUsIGRlcHRoKTtcblxuICAgICAgICAgIGlmIChsZWZ0VGVybU5vZGVNYXRjaGVzUmlnaHRUZXJtTm9kZSkge1xuICAgICAgICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IGxlZnRUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHJpZ2h0VGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICAgICAgbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICAgIGxlZnRDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICAgICAgcmlnaHRDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNVbmlmeSA9IGVxdWF0aW9uYWxVbmlmaWVyLnVuaWZ5Q2hpbGROb2RlcyhsZWZ0Q2hpbGROb2RlcywgcmlnaHRDaGlsZE5vZGVzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXNVbmlmeSkge1xuICAgICAgICAgICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgZXF1YXRpb25hbFVuaWZpZXIgPSBuZXcgRXF1YXRpb25hbFVuaWZpZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZXF1YXRpb25hbFVuaWZpZXI7XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIkVxdWF0aW9uYWxVbmlmaWVyIiwiZXF1YXRlVGVybXMiLCJsZWZ0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiY29udGV4dCIsInRlcm1zRXF1YXRlIiwiZ2VuZXJhbE5vblRlcm1pbmFsTm9kZSIsInNwZWNpZmljTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVW5pZmllcyIsInVuaWZ5Tm9uVGVybWluYWxOb2RlIiwiZXF1YXRlU3RhdGVtZW50cyIsInN0YXRlbWVudEFOb2RlIiwic3RhdGVtZW50Qk5vZGUiLCJzdGF0ZW1lbnRzRXF1YXRlIiwiVW5pZmllciIsIm1hcHMiLCJnZW5lcmFsTm9kZVF1ZXJ5Iiwic3BlY2lmaWNOb2RlUXVlcnkiLCJ1bmlmeSIsInRlcm1VbmlmaWVzIiwiZGVwdGgiLCJJbmZpbml0eSIsImxlZnRUZXJtTm9kZU1hdGNoZXNSaWdodFRlcm1Ob2RlIiwibWF0Y2giLCJlcXVpdmFsZW5jZXMiLCJnZXRFcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybU5vZGVzIiwibGVmdE5vblRlcm1pbmFsTm9kZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVW5pZnkiLCJlcXVhdGlvbmFsVW5pZmllciIsInVuaWZ5Q2hpbGROb2RlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBeUZBOzs7ZUFBQTs7OzhEQXZGb0I7cUJBRU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUVoQyxJQUFBLEFBQU1DLGtDQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtRQUFOLE9BQUEsa0JBQU1BOztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztnQkFDOUMsSUFBSUM7Z0JBRUosSUFBTUMseUJBQXlCSixjQUN6QkssMEJBQTBCSixlQUMxQksseUJBQXlCLElBQUksQ0FBQ0Msb0JBQW9CLENBQUNILHdCQUF3QkMseUJBQXlCSDtnQkFFMUdDLGNBQWNHLHdCQUF3QixHQUFHO2dCQUV6QyxPQUFPSDtZQUNUOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQkMsY0FBYyxFQUFFQyxjQUFjLEVBQUVSLE9BQU87Z0JBQ3RELElBQUlTO2dCQUVKLElBQU1QLHlCQUF5QkssZ0JBQ3pCSiwwQkFBMEJLLGdCQUMxQkoseUJBQXlCLElBQUksQ0FBQ0Msb0JBQW9CLENBQUNILHdCQUF3QkMseUJBQXlCSDtnQkFFMUdTLG1CQUFtQkwsd0JBQXdCLEdBQUc7Z0JBRTlDLE9BQU9LO1lBQ1Q7OztXQXZCSWI7RUFBMEJjLGdCQUFPO0FBeUJyQyxpQkF6QklkLG1CQXlCR2UsUUFBTztJQUNaO1FBQ0VDLGtCQUFrQmxCO1FBQ2xCbUIsbUJBQW1CbkI7UUFDbkJvQixPQUFPLFNBQUNoQixjQUFjQyxlQUFlQztZQUNuQyxJQUFJZSxjQUFjO1lBRWxCLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsSUFBTUMsUUFBUUMsVUFDUkMsbUNBQW1DcEIsYUFBYXFCLEtBQUssQ0FBQ3BCLGVBQWVpQjtnQkFFM0UsSUFBSUUsa0NBQWtDO29CQUNwQ0gsY0FBYztnQkFDaEI7WUFDRjtZQUVBLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsSUFBTUssZUFBZXBCLFFBQVFxQixlQUFlLElBQ3RDQyxZQUFZO29CQUNWeEI7b0JBQ0FDO2lCQUNELEVBQ0R3QixjQUFjSCxhQUFhSSwwQkFBMEIsQ0FBQ0Y7Z0JBRTVELElBQUlDLGdCQUFnQixNQUFNO29CQUN4QlIsY0FBYztnQkFDaEI7WUFDRjtZQUVBLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsSUFBTUMsU0FBUSxHQUNSRSxvQ0FBbUNwQixhQUFhcUIsS0FBSyxDQUFDcEIsZUFBZWlCO2dCQUUzRSxJQUFJRSxtQ0FBa0M7b0JBQ3BDLElBQU1PLHNCQUFzQjNCLGNBQ3RCNEIsdUJBQXVCM0IsZUFDdkI0QixnQ0FBZ0NGLG9CQUFvQkcsYUFBYSxJQUNqRUMsaUNBQWlDSCxxQkFBcUJFLGFBQWEsSUFDbkVFLGlCQUFpQkgsK0JBQ2pCSSxrQkFBa0JGLGdDQUNsQkcsa0JBQWtCQyxrQkFBa0JDLGVBQWUsQ0FBQ0osZ0JBQWdCQyxpQkFBaUIvQjtvQkFFM0YsSUFBSWdDLGlCQUFpQjt3QkFDbkJqQixjQUFjO29CQUNoQjtnQkFDRjtZQUNGO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0NBQ0Q7QUFHSCxJQUFNa0Isb0JBQW9CLElBQUlyQztJQUU5QixXQUFlcUMifQ==