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
package/lib/verifier.js DELETED
@@ -1,219 +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 Verifier;
9
- }
10
- });
11
- var _query = require("./utilities/query");
12
- var _arguments = require("./utilities/arguments");
13
- function _array_like_to_array(arr, len) {
14
- if (len == null || len > arr.length) len = arr.length;
15
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
16
- return arr2;
17
- }
18
- function _array_without_holes(arr) {
19
- if (Array.isArray(arr)) return _array_like_to_array(arr);
20
- }
21
- function _class_call_check(instance, Constructor) {
22
- if (!(instance instanceof Constructor)) {
23
- throw new TypeError("Cannot call a class as a function");
24
- }
25
- }
26
- function _defineProperties(target, props) {
27
- for(var i = 0; i < props.length; i++){
28
- var descriptor = props[i];
29
- descriptor.enumerable = descriptor.enumerable || false;
30
- descriptor.configurable = true;
31
- if ("value" in descriptor) descriptor.writable = true;
32
- Object.defineProperty(target, descriptor.key, descriptor);
33
- }
34
- }
35
- function _create_class(Constructor, protoProps, staticProps) {
36
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
37
- if (staticProps) _defineProperties(Constructor, staticProps);
38
- return Constructor;
39
- }
40
- function _iterable_to_array(iter) {
41
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
42
- }
43
- function _non_iterable_spread() {
44
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
45
- }
46
- function _to_consumable_array(arr) {
47
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
48
- }
49
- function _unsupported_iterable_to_array(o, minLen) {
50
- if (!o) return;
51
- if (typeof o === "string") return _array_like_to_array(o, minLen);
52
- var n = Object.prototype.toString.call(o).slice(8, -1);
53
- if (n === "Object" && o.constructor) n = o.constructor.name;
54
- if (n === "Map" || n === "Set") return Array.from(n);
55
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
56
- }
57
- var nonTerminalNodeQuery = (0, _query.nodeQuery)("/*");
58
- var Verifier = /*#__PURE__*/ function() {
59
- function Verifier() {
60
- _class_call_check(this, Verifier);
61
- }
62
- _create_class(Verifier, [
63
- {
64
- key: "verify",
65
- value: function verify(node) {
66
- for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
67
- remainingArguments[_key - 1] = arguments[_key];
68
- }
69
- var verifies;
70
- var nodeVerifies = this.verifyNode.apply(this, [
71
- node
72
- ].concat(_to_consumable_array(remainingArguments)));
73
- verifies = nodeVerifies; ///
74
- return verifies;
75
- }
76
- },
77
- {
78
- key: "verifyNode",
79
- value: function verifyNode(node) {
80
- for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
81
- remainingArguments[_key - 1] = arguments[_key];
82
- }
83
- var nodeVerifies;
84
- var nodeTerminalNode = node.isTerminalNode();
85
- if (nodeTerminalNode) {
86
- var terminalNode = node, terminalNodeVerifies = this.verifyTerminalNode.apply(this, [
87
- terminalNode
88
- ].concat(_to_consumable_array(remainingArguments)));
89
- nodeVerifies = terminalNodeVerifies; ///
90
- } else {
91
- var nonTerminalNode = node, nonTerminalNodeVerifies = this.verifyNonTerminalNode.apply(this, [
92
- nonTerminalNode
93
- ].concat(_to_consumable_array(remainingArguments)));
94
- nodeVerifies = nonTerminalNodeVerifies; ///
95
- }
96
- return nodeVerifies;
97
- }
98
- },
99
- {
100
- key: "verifyChildNodes",
101
- value: function verifyChildNodes(childNodes) {
102
- var _this = this;
103
- for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
104
- remainingArguments[_key - 1] = arguments[_key];
105
- }
106
- var childNodesVerify;
107
- var lastRemainingArgumentFunction = (0, _arguments.isLastRemainingArgumentFunction)(remainingArguments);
108
- if (lastRemainingArgumentFunction) {
109
- var index = 0, childNodesVerifyAhead = this.verifyChildNodesAhead.apply(this, [
110
- index,
111
- childNodes
112
- ].concat(_to_consumable_array(remainingArguments)));
113
- childNodesVerify = childNodesVerifyAhead; ///
114
- } else {
115
- childNodesVerify = childNodes.every(function(childNode) {
116
- var node = childNode, nodeVerifies = _this.verifyNode.apply(_this, [
117
- node
118
- ].concat(_to_consumable_array(remainingArguments)));
119
- if (nodeVerifies) {
120
- return true;
121
- }
122
- });
123
- }
124
- return childNodesVerify;
125
- }
126
- },
127
- {
128
- key: "verifyTerminalNode",
129
- value: function verifyTerminalNode(terminalNode) {
130
- for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
131
- remainingArguments[_key - 1] = arguments[_key];
132
- }
133
- var terminalNodeVerifies;
134
- var lastRemainingArgumentFunction = (0, _arguments.isLastRemainingArgumentFunction)(remainingArguments);
135
- if (lastRemainingArgumentFunction) {
136
- var verifyAhead = remainingArguments.pop(), verifiesAhead = verifyAhead();
137
- terminalNodeVerifies = verifiesAhead; ///
138
- remainingArguments.push(verifyAhead);
139
- } else {
140
- terminalNodeVerifies = true;
141
- }
142
- return terminalNodeVerifies;
143
- }
144
- },
145
- {
146
- key: "verifyNonTerminalNode",
147
- value: function verifyNonTerminalNode(nonTerminalNode) {
148
- for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
149
- remainingArguments[_key - 1] = arguments[_key];
150
- }
151
- var _this = this;
152
- var nonTerminalNodeVerifies;
153
- var maps = this.constructor.maps;
154
- maps = _to_consumable_array(maps).concat([
155
- {
156
- nodeQuery: nonTerminalNodeQuery,
157
- verify: function(node) {
158
- for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
159
- remainingArguments[_key - 1] = arguments[_key];
160
- }
161
- var nonTerminalNodeVerifies;
162
- var childNodes = nonTerminalNode.getChildNodes(), childNodesVerify = _this.verifyChildNodes.apply(_this, [
163
- childNodes
164
- ].concat(_to_consumable_array(remainingArguments)));
165
- nonTerminalNodeVerifies = childNodesVerify; ///
166
- return nonTerminalNodeVerifies;
167
- }
168
- }
169
- ]);
170
- var nodeVerifies = false;
171
- maps.some(function(map) {
172
- var _$nodeQuery = map.nodeQuery, verify = map.verify;
173
- var node = _$nodeQuery(nonTerminalNode);
174
- if (node !== null) {
175
- nodeVerifies = verify.apply(void 0, [
176
- node
177
- ].concat(_to_consumable_array(remainingArguments)));
178
- return true;
179
- }
180
- });
181
- nonTerminalNodeVerifies = nodeVerifies; ///
182
- return nonTerminalNodeVerifies;
183
- }
184
- },
185
- {
186
- key: "verifyChildNodesAhead",
187
- value: function verifyChildNodesAhead(index, childNodes) {
188
- var _this = this;
189
- for(var _len = arguments.length, remainingArguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
190
- remainingArguments[_key - 2] = arguments[_key];
191
- }
192
- var childNodesVerify;
193
- var verifyAhead = remainingArguments.pop(), childNodesLength = childNodes.length;
194
- if (index === childNodesLength) {
195
- var verifiesAhead = verifyAhead();
196
- childNodesVerify = verifiesAhead; ///
197
- } else {
198
- var childNode = childNodes[index], node = childNode, nodeVerifies = this.verifyNode.apply(this, [
199
- node
200
- ].concat(_to_consumable_array(remainingArguments), [
201
- function() {
202
- remainingArguments.push(verifyAhead);
203
- var aheadIndex = index + 1, childNodesVerifyAhead = _this.verifyChildNodesAhead.apply(_this, [
204
- aheadIndex,
205
- childNodes
206
- ].concat(_to_consumable_array(remainingArguments)));
207
- return childNodesVerifyAhead;
208
- }
209
- ]));
210
- childNodesVerify = nodeVerifies; ///
211
- }
212
- return childNodesVerify;
213
- }
214
- }
215
- ]);
216
- return Verifier;
217
- }();
218
-
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJpZmllci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FyZ3VtZW50c1wiO1xuXG5jb25zdCBub25UZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZXJpZmllciB7XG4gIHZlcmlmeShub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmVyaWZpZXM7XG5cbiAgICBjb25zdCBub2RlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeU5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHZlcmlmaWVzID0gbm9kZVZlcmlmaWVzOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlOb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBub2RlVmVyaWZpZXM7XG5cbiAgICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICBub2RlVmVyaWZpZXMgPSB0ZXJtaW5hbE5vZGVWZXJpZmllczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgbm9kZVZlcmlmaWVzID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZXM7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBub2RlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBjaGlsZE5vZGVzVmVyaWZ5O1xuXG4gICAgY29uc3QgbGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24gPSBpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uKHJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBpZiAobGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gMCxcbiAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZnlBaGVhZCA9IHRoaXMudmVyaWZ5Q2hpbGROb2Rlc0FoZWFkKGluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICBjaGlsZE5vZGVzVmVyaWZ5ID0gY2hpbGROb2Rlc1ZlcmlmeUFoZWFkOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGROb2Rlc1ZlcmlmeSA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9kZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlOb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgaWYgKG5vZGVWZXJpZmllcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc1ZlcmlmeTtcbiAgfVxuXG4gIHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB0ZXJtaW5hbE5vZGVWZXJpZmllcztcblxuICAgIGNvbnN0IGxhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uID0gaXNMYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbihyZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgaWYgKGxhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uKSB7XG4gICAgICBjb25zdCB2ZXJpZnlBaGVhZCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSwgLy8vXG4gICAgICAgICAgICB2ZXJpZmllc0FoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybWluYWxOb2RlVmVyaWZpZXMgPSB2ZXJpZmllc0FoZWFkOyAvLy9cblxuICAgICAgcmVtYWluaW5nQXJndW1lbnRzLnB1c2godmVyaWZ5QWhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgbm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgdmVyaWZ5OiAobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuXG4gICAgICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZnkgPSB0aGlzLnZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVzID0gY2hpbGROb2Rlc1ZlcmlmeTsgLy8vXG5cbiAgICAgICAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG5cbiAgICBsZXQgbm9kZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBtYXBzLnNvbWUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgeyBub2RlUXVlcnksIHZlcmlmeSB9ID0gbWFwO1xuXG4gICAgICBjb25zdCBub2RlID0gbm9kZVF1ZXJ5KG5vblRlcm1pbmFsTm9kZSk7XG5cbiAgICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICAgIG5vZGVWZXJpZmllcyA9IHZlcmlmeShub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZXMgPSBub2RlVmVyaWZpZXM7IC8vL1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5Q2hpbGROb2Rlc0FoZWFkKGluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1ZlcmlmeTtcblxuICAgIGNvbnN0IHZlcmlmeUFoZWFkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzTGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgICBpZiAoaW5kZXggPT09IGNoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWVzQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICBjaGlsZE5vZGVzVmVyaWZ5ID0gdmVyaWZpZXNBaGVhZDsgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBub2RlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeU5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKHZlcmlmeUFoZWFkKTtcblxuICAgICAgICAgICAgICBjb25zdCBhaGVhZEluZGV4ID0gaW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzVmVyaWZ5QWhlYWQgPSB0aGlzLnZlcmlmeUNoaWxkTm9kZXNBaGVhZChhaGVhZEluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBjaGlsZE5vZGVzVmVyaWZ5QWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgY2hpbGROb2Rlc1ZlcmlmeSA9IG5vZGVWZXJpZmllczsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZE5vZGVzVmVyaWZ5O1xuICB9XG59XG4iXSwibmFtZXMiOlsiVmVyaWZpZXIiLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInZlcmlmeSIsIm5vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJ2ZXJpZmllcyIsIm5vZGVWZXJpZmllcyIsInZlcmlmeU5vZGUiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGVWZXJpZmllcyIsInZlcmlmeVRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVzIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwidmVyaWZ5Q2hpbGROb2RlcyIsImNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZ5IiwibGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24iLCJpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uIiwiaW5kZXgiLCJjaGlsZE5vZGVzVmVyaWZ5QWhlYWQiLCJ2ZXJpZnlDaGlsZE5vZGVzQWhlYWQiLCJldmVyeSIsImNoaWxkTm9kZSIsInZlcmlmeUFoZWFkIiwicG9wIiwidmVyaWZpZXNBaGVhZCIsInB1c2giLCJtYXBzIiwiZ2V0Q2hpbGROb2RlcyIsInNvbWUiLCJtYXAiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiYWhlYWRJbmRleCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFPcUJBOzs7cUJBTEs7eUJBQ3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEQsSUFBTUMsdUJBQXVCQyxJQUFBQSxnQkFBUyxFQUFDO0FBRXhCLElBQUEsQUFBTUYseUJBQU47YUFBTUE7Z0NBQUFBOztrQkFBQUE7O1lBQ25CRyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBT0MsSUFBSTtnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR0MscUJBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxRQUFBLE9BQUEsR0FBQSxPQUFBLE1BQUE7b0JBQUdBLG1CQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBcUI7O2dCQUNoQyxJQUFJQztnQkFFSixJQUFNQyxlQUFlLElBQUksQ0FBQ0MsVUFBVSxPQUFmLElBQUksRUFBSjtvQkFBZ0JKO2lCQUE0QixDQUE1QyxPQUFzQixxQkFBR0M7Z0JBRTlDQyxXQUFXQyxjQUFlLEdBQUc7Z0JBRTdCLE9BQU9EO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsV0FBV0osSUFBSTtnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR0MscUJB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
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- import Unifier from "../unifier";
4
-
5
- import { nodeQuery } from "../utilities/query";
6
-
7
- const termNodeQuery = nodeQuery("/term");
8
-
9
- class EquationalUnifier extends Unifier {
10
- equateTerms(leftTermNode, rightTermNode, context) {
11
- let termsEquate;
12
-
13
- const generalNonTerminalNode = leftTermNode, ///
14
- specificNonTerminalNode = rightTermNode, ///
15
- nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
16
-
17
- termsEquate = nonTerminalNodeUnifies; ///
18
-
19
- return termsEquate;
20
- };
21
-
22
- equateStatements(statementANode, statementBNode, context) {
23
- let statementsEquate;
24
-
25
- const generalNonTerminalNode = statementANode, ///
26
- specificNonTerminalNode = statementBNode, ///
27
- nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, context);
28
-
29
- statementsEquate = nonTerminalNodeUnifies; ///
30
-
31
- return statementsEquate;
32
- };
33
-
34
- static maps = [
35
- {
36
- generalNodeQuery: termNodeQuery, ///
37
- specificNodeQuery: termNodeQuery, ///
38
- unify: (leftTermNode, rightTermNode, context) => {
39
- let termUnifies = false;
40
-
41
- if (!termUnifies) {
42
- const depth = Infinity,
43
- leftTermNodeMatchesRightTermNode = leftTermNode.match(rightTermNode, depth);
44
-
45
- if (leftTermNodeMatchesRightTermNode) {
46
- termUnifies = true;
47
- }
48
- }
49
-
50
- if (!termUnifies) {
51
- const equivalences = context.getEquivalences(),
52
- termNodes = [
53
- leftTermNode,
54
- rightTermNode
55
- ],
56
- equivalence = equivalences.findEquivalenceByTermNodes(termNodes);
57
-
58
- if (equivalence !== null) {
59
- termUnifies = true;
60
- }
61
- }
62
-
63
- if (!termUnifies) {
64
- const depth = 1,
65
- leftTermNodeMatchesRightTermNode = leftTermNode.match(rightTermNode, depth);
66
-
67
- if (leftTermNodeMatchesRightTermNode) {
68
- const leftNonTerminalNode = leftTermNode, ///
69
- rightNonTerminalNode = rightTermNode, ///
70
- leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(),
71
- rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
72
- leftChildNodes = leftNonTerminalNodeChildNodes, ///
73
- rightChildNodes = rightNonTerminalNodeChildNodes, ///
74
- childNodesUnify = equationalUnifier.unifyChildNodes(leftChildNodes, rightChildNodes, context);
75
-
76
- if (childNodesUnify) {
77
- termUnifies = true;
78
- }
79
- }
80
- }
81
-
82
- return termUnifies;
83
- }
84
- }
85
- ];
86
- }
87
-
88
- const equationalUnifier = new EquationalUnifier();
89
-
90
- export default equationalUnifier;
@@ -1,52 +0,0 @@
1
- "use strict";
2
-
3
- import Unifier from "../unifier";
4
-
5
- import { nodeQuery } from "../utilities/query";
6
-
7
- const termNodeQuery = nodeQuery("/term"),
8
- termVariableNodeQuery = nodeQuery("/term/variable!");
9
-
10
- class IntrinsicLevelUnifier extends Unifier {
11
- unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext) {
12
- let unifiesAtIntrinsicLevel;
13
-
14
- const nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
15
-
16
- unifiesAtIntrinsicLevel = nonTerminalNodeUnifies; ///
17
-
18
- return unifiesAtIntrinsicLevel;
19
- }
20
-
21
- static maps = [
22
- {
23
- generalNodeQuery: termVariableNodeQuery,
24
- specificNodeQuery: termNodeQuery,
25
- unify: (generalTermVariableNode, specificTermNode, substitutions, generalContext, specificContext) => {
26
- let termUnifies;
27
-
28
- const termNode = specificTermNode, ///
29
- variableNode = generalTermVariableNode, ///
30
- variableIdentifier = variableNode.getVariableIdentifier();
31
-
32
- let context;
33
-
34
- context = generalContext; ///
35
-
36
- const variable = context.findVariableByVariableIdentifier(variableIdentifier);
37
-
38
- context = specificContext; ///
39
-
40
- const term = context.findTermByTermNode(termNode);
41
-
42
- termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
43
-
44
- return termUnifies;
45
- }
46
- }
47
- ];
48
- }
49
-
50
- const intrinsicLevelUnifier = new IntrinsicLevelUnifier();
51
-
52
- export default intrinsicLevelUnifier;
@@ -1,151 +0,0 @@
1
- "use strict";
2
-
3
- import Unifier from "../unifier";
4
- import ontology from "../ontology";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
- import { metavariableNameFromMetavariableNode } from "../utilities/metavariable";
8
-
9
- const termNodeQuery = nodeQuery("/term"),
10
- frameNodeQuery = nodeQuery("/frame"),
11
- statementNodeQuery = nodeQuery("/statement"),
12
- termVariableNodeQuery = nodeQuery("/term/variable!"),
13
- statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!"),
14
- assumptionMetavariableNodeQuery = nodeQuery("/assumption/metavariable!"),
15
- frameAssumptionMetavariableNodeQuery = nodeQuery("/frame/assumption!/metavariable!");
16
-
17
- class MetaLevelUnifier extends Unifier {
18
- unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext) {
19
- let unifiesAtMetaLevel;
20
-
21
- const nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
22
-
23
- unifiesAtMetaLevel = nonTerminalNodeUnifies; ///
24
-
25
- return unifiesAtMetaLevel;
26
- }
27
-
28
- static maps = [
29
- {
30
- generalNodeQuery: statementMetavariableNodeQuery,
31
- specificNodeQuery: statementNodeQuery,
32
- unify: (generalStatementMetavariableNode, specificStatementNode, substitutions, generalContext, specificContext) => {
33
- let statementUnifies;
34
-
35
- let context,
36
- statement,
37
- statementNode;
38
-
39
- context = generalContext; ///
40
-
41
- const metavariableNode = generalStatementMetavariableNode, ///
42
- metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
43
- metavariable = context.findMetavariableByMetavariableName(metavariableName);
44
-
45
- const metavariableNodeParentNode = metavariableNode.getParentNode();
46
-
47
- statementNode = metavariableNodeParentNode; ///
48
-
49
- statement = context.findStatementByStatementNode(statementNode);
50
-
51
- const { TermSubstitution, FrameSubstitution } = ontology,
52
- frameSubstitution = FrameSubstitution.fromStatement(statement, context),
53
- termSubstitution = TermSubstitution.fromStatement(statement, context),
54
- substitution = (frameSubstitution || termSubstitution);
55
-
56
- context = specificContext; ///
57
-
58
- statementNode = specificStatementNode; ///
59
-
60
- statement = context.findStatementByStatementNode(statementNode);
61
-
62
- statementUnifies = metavariable.unifyStatement(statement, substitution, substitutions, generalContext, specificContext);
63
-
64
- return statementUnifies;
65
- }
66
- },
67
- {
68
- generalNodeQuery: frameAssumptionMetavariableNodeQuery,
69
- specificNodeQuery: frameNodeQuery,
70
- unify: (generalFrameAssumptionMetavariableNode, specificFrameNode, substitutions, generalContext, specificContext) => {
71
- let frameUnifies;
72
-
73
- const frameNode = specificFrameNode, ///
74
- metavariableNode = generalFrameAssumptionMetavariableNode, ///
75
- metavariableName = metavariableNameFromMetavariableNode(metavariableNode);
76
-
77
- let context;
78
-
79
- context = generalContext; ///
80
-
81
- const metavariable = context.findMetavariableByMetavariableName(metavariableName);
82
-
83
- context = specificContext; ///
84
-
85
- const frame = context.findFrameByFrameNode(frameNode);
86
-
87
- frameUnifies = metavariable.unifyFrame(frame, substitutions, generalContext, specificContext);
88
-
89
- return frameUnifies;
90
- }
91
- },
92
- {
93
- generalNodeQuery: termVariableNodeQuery,
94
- specificNodeQuery: termNodeQuery,
95
- unify: (generalTermVariableNode, specificTermNode, substitutions, generalContext, specificContext) => {
96
- let termUnifies;
97
-
98
- const termNode = specificTermNode, ///
99
- variableNode = generalTermVariableNode, ///
100
- variableIdentifier = variableNode.getVariableIdentifier();
101
-
102
- let context;
103
-
104
- context = generalContext; ///
105
-
106
- const variable = context.findVariableByVariableIdentifier(variableIdentifier);
107
-
108
- context = specificContext; ///
109
-
110
- const term = context.findTermByTermNode(termNode);
111
-
112
- termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
113
-
114
- return termUnifies;
115
- }
116
- },
117
- {
118
- generalNodeQuery: assumptionMetavariableNodeQuery,
119
- specificNodeQuery: assumptionMetavariableNodeQuery,
120
- unify: (generalAssumptionMetavariableNode, specificAssumptionMetavariableNode, substitutions, generalContext, specificContext) => {
121
- let referenceUnifies;
122
-
123
- const { Reference } = ontology;
124
-
125
- let context,
126
- metavariableNode;
127
-
128
- context = generalContext; ///
129
-
130
- metavariableNode = generalAssumptionMetavariableNode; ///
131
-
132
- const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
133
- metavariable = context.findMetavariableByMetavariableName(metavariableName);
134
-
135
- context = specificContext; ///
136
-
137
- metavariableNode = specificAssumptionMetavariableNode; ///
138
-
139
- const reference = Reference.fromMetavariableNode(metavariableNode, context);
140
-
141
- referenceUnifies = metavariable.unifyReference(reference, substitutions, generalContext, specificContext);
142
-
143
- return referenceUnifies;
144
- }
145
- }
146
- ];
147
- }
148
-
149
- const metaLevelUnifier = new MetaLevelUnifier();
150
-
151
- export default metaLevelUnifier;
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- import ontology from "../ontology";
4
- import Unifier from "../unifier";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const typeNodeQuery = nodeQuery("/type"),
9
- termNodeQuery = nodeQuery("/term");
10
-
11
- class MetavariableUnifier extends Unifier {
12
- unify(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext) {
13
- let metavariableUnifies;
14
-
15
- const generalNonTerminalNode = generalMetavariableNode, ///
16
- specificNonTerminalNode = specificMetavariableNode, ///
17
- nonTerminalNodeUnifies = this.unifyNonTerminalNode(generalNonTerminalNode, specificNonTerminalNode, generalContext, specificContext);
18
-
19
- metavariableUnifies = nonTerminalNodeUnifies; ///
20
-
21
- return metavariableUnifies;
22
- }
23
-
24
- static maps = [
25
- {
26
- generalNodeQuery: typeNodeQuery,
27
- specificNodeQuery: termNodeQuery,
28
- unify: (generalTypeNode, specificTermNode, generalContext, specificContext) => {
29
- let termUnifies;
30
-
31
- const { Term } = ontology,
32
- typeNode = generalTypeNode, ///
33
- termNode = specificTermNode, ///
34
- nominalTypeName = typeNode.getNominalTypeName(),
35
- type = generalContext.findTypeByNominalTypeName(nominalTypeName),
36
- context = specificContext, ///
37
- term = Term.fromTermNode(termNode, context),
38
- termVerifiesGivenType = term.verifyGivenType(type, generalContext, specificContext);
39
-
40
- termUnifies = termVerifiesGivenType; ///
41
-
42
- return termUnifies;
43
- }
44
- }
45
- ];
46
- }
47
-
48
- const metavariableUnifier = new MetavariableUnifier();
49
-
50
- export default metavariableUnifier;