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.
- package/lib/context/file.js +3 -3
- package/lib/context/local.js +3 -3
- package/lib/context/release.js +2 -2
- package/lib/context/temporary.js +103 -54
- package/lib/mixins/statement/verify.js +2 -2
- package/lib/mixins/step/unify.js +2 -2
- package/lib/node/argument.js +2 -2
- package/lib/node/assumption.js +6 -6
- package/lib/node/frame.js +19 -7
- package/lib/node/judgement.js +8 -1
- package/lib/node/statement.js +34 -15
- package/lib/node/substitution/term.js +3 -11
- package/lib/node/term.js +20 -8
- package/lib/nonTerminalNode.js +3 -3
- package/lib/ontology/assertion/contained.js +7 -7
- package/lib/ontology/assertion/defined.js +8 -8
- package/lib/ontology/assertion/subproof.js +3 -3
- package/lib/ontology/assumption.js +49 -45
- package/lib/ontology/combinator.js +3 -3
- package/lib/ontology/constructor.js +3 -3
- package/lib/ontology/equality.js +4 -4
- package/lib/ontology/equivalence.js +2 -2
- package/lib/ontology/frame.js +37 -12
- package/lib/ontology/judgement.js +13 -6
- package/lib/ontology/metavariable.js +75 -76
- package/lib/ontology/propertyRelation.js +2 -2
- package/lib/ontology/reference.js +33 -4
- package/lib/ontology/signature.js +2 -2
- package/lib/ontology/statement.js +33 -8
- package/lib/ontology/step.js +4 -4
- package/lib/ontology/substitution/frame.js +13 -15
- package/lib/ontology/substitution/statement.js +31 -32
- package/lib/ontology/substitution/term.js +26 -25
- package/lib/ontology/substitution.js +2 -2
- package/lib/ontology/substitutions.js +4 -4
- package/lib/ontology/term.js +26 -12
- package/lib/ontology/variable.js +2 -2
- package/lib/process/equate.js +322 -0
- package/lib/process/unify.js +623 -0
- package/lib/process/verify.js +332 -0
- package/lib/utilities/brackets.js +3 -8
- package/lib/utilities/context.js +4 -14
- package/lib/utilities/json.js +18 -1
- package/lib/utilities/pass.js +68 -0
- package/lib/utilities/substitutions.js +11 -16
- package/package.json +2 -2
- package/src/context/file.js +2 -2
- package/src/context/local.js +2 -2
- package/src/context/release.js +1 -1
- package/src/context/temporary.js +124 -54
- package/src/mixins/statement/verify.js +3 -1
- package/src/mixins/step/unify.js +0 -1
- package/src/node/argument.js +1 -1
- package/src/node/assumption.js +4 -4
- package/src/node/frame.js +19 -5
- package/src/node/judgement.js +7 -0
- package/src/node/statement.js +35 -13
- package/src/node/substitution/term.js +4 -14
- package/src/node/term.js +20 -6
- package/src/nonTerminalNode.js +1 -1
- package/src/ontology/assertion/contained.js +6 -6
- package/src/ontology/assertion/defined.js +7 -7
- package/src/ontology/assertion/subproof.js +1 -1
- package/src/ontology/assumption.js +52 -57
- package/src/ontology/combinator.js +1 -1
- package/src/ontology/constructor.js +1 -1
- package/src/ontology/equality.js +3 -3
- package/src/ontology/equivalence.js +1 -1
- package/src/ontology/frame.js +44 -10
- package/src/ontology/judgement.js +8 -3
- package/src/ontology/metavariable.js +108 -102
- package/src/ontology/propertyRelation.js +3 -2
- package/src/ontology/reference.js +39 -1
- package/src/ontology/signature.js +3 -3
- package/src/ontology/statement.js +38 -4
- package/src/ontology/step.js +7 -7
- package/src/ontology/substitution/frame.js +13 -17
- package/src/ontology/substitution/statement.js +45 -48
- package/src/ontology/substitution/term.js +19 -19
- package/src/ontology/substitution.js +3 -2
- package/src/ontology/substitutions.js +3 -3
- package/src/ontology/term.js +26 -5
- package/src/ontology/variable.js +3 -2
- package/src/process/equate.js +212 -0
- package/src/process/unify.js +634 -0
- package/src/process/verify.js +204 -0
- package/src/utilities/brackets.js +2 -11
- package/src/utilities/context.js +1 -21
- package/src/utilities/json.js +19 -0
- package/src/utilities/{unifier.js → pass.js} +17 -1
- package/src/utilities/substitutions.js +10 -20
- package/lib/unifier/equantional.js +0 -170
- package/lib/unifier/intrinsicLevel.js +0 -144
- package/lib/unifier/metaLevel.js +0 -197
- package/lib/unifier/metavariable.js +0 -140
- package/lib/unifier/statementWithCombinator.js +0 -177
- package/lib/unifier/termWithConstructor.js +0 -145
- package/lib/unifier.js +0 -241
- package/lib/utilities/arguments.js +0 -28
- package/lib/utilities/frame.js +0 -18
- package/lib/utilities/metavariable.js +0 -18
- package/lib/utilities/statement.js +0 -18
- package/lib/utilities/unification.js +0 -109
- package/lib/utilities/unifier.js +0 -51
- package/lib/utilities/variable.js +0 -18
- package/lib/verifier/combinator.js +0 -158
- package/lib/verifier.js +0 -219
- package/src/unifier/equantional.js +0 -90
- package/src/unifier/intrinsicLevel.js +0 -52
- package/src/unifier/metaLevel.js +0 -151
- package/src/unifier/metavariable.js +0 -50
- package/src/unifier/statementWithCombinator.js +0 -114
- package/src/unifier/termWithConstructor.js +0 -56
- package/src/unifier.js +0 -183
- package/src/utilities/arguments.js +0 -21
- package/src/utilities/frame.js +0 -13
- package/src/utilities/metavariable.js +0 -13
- package/src/utilities/statement.js +0 -13
- package/src/utilities/unification.js +0 -136
- package/src/utilities/variable.js +0 -13
- package/src/verifier/combinator.js +0 -72
- 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;
|
package/src/unifier/metaLevel.js
DELETED
|
@@ -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;
|