occam-verify-cli 0.0.834 → 0.0.836
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/conclusion.js +5 -5
- package/lib/consequent.js +3 -3
- package/lib/mixins/nodesVerifier/intrinsiclevel.js +59 -0
- package/lib/mixins/nodesVerifier/metaLevel.js +40 -0
- package/lib/premise.js +7 -7
- package/lib/substitution/metastatementForMetavariable.js +82 -5
- package/lib/substitution/statementForMetavariable.js +82 -5
- package/lib/substitution/termForVariable.js +82 -5
- package/lib/substitution.js +74 -0
- package/lib/supposition.js +4 -4
- package/lib/utilities/metaproof.js +2 -2
- package/lib/utilities/proof.js +2 -2
- package/lib/verifier/node/statementAsCombinator.js +7 -7
- package/lib/verifier/node/termAsConstructor.js +10 -18
- package/lib/verifier/nodes/equality.js +18 -8
- package/lib/verifier/nodes/intrinsicLevel.js +183 -0
- package/lib/verifier/nodes/metaLevel.js +183 -0
- package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +257 -0
- package/lib/verifier/nodes/statement.js +8 -9
- package/lib/verifier/nodes/term.js +3 -3
- package/lib/verify/containment.js +5 -14
- package/lib/verify/statement.js +23 -62
- package/package.json +2 -2
- package/src/conclusion.js +4 -4
- package/src/consequent.js +2 -2
- package/src/mixins/nodesVerifier/intrinsiclevel.js +73 -0
- package/src/mixins/nodesVerifier/metaLevel.js +39 -0
- package/src/premise.js +6 -6
- package/src/substitution/metastatementForMetavariable.js +5 -1
- package/src/substitution/statementForMetavariable.js +5 -1
- package/src/substitution/termForVariable.js +5 -1
- package/src/substitution.js +33 -0
- package/src/supposition.js +3 -3
- package/src/utilities/metaproof.js +1 -1
- package/src/utilities/proof.js +1 -1
- package/src/verifier/node/statementAsCombinator.js +10 -11
- package/src/verifier/node/termAsConstructor.js +11 -11
- package/src/verifier/nodes/equality.js +25 -10
- package/src/verifier/nodes/intrinsicLevel.js +68 -0
- package/src/verifier/nodes/metaLevel.js +68 -0
- package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +170 -0
- package/src/verifier/nodes/statement.js +12 -13
- package/src/verifier/nodes/term.js +4 -2
- package/src/verify/containment.js +2 -3
- package/src/verify/statement.js +24 -25
- package/lib/verifier/nodes/metastatementForMetavariable.js +0 -197
- package/lib/verifier/nodes/statementForMetavariable.js +0 -202
- package/lib/verifier/nodes/termForVariable.js +0 -216
- package/src/verifier/nodes/metastatementForMetavariable.js +0 -87
- package/src/verifier/nodes/statementForMetavariable.js +0 -103
- package/src/verifier/nodes/termForVariable.js +0 -120
package/lib/verify/statement.js
CHANGED
|
@@ -17,7 +17,7 @@ _export(exports, {
|
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
var _equality = /*#__PURE__*/ _interop_require_default(require("../verify/equality"));
|
|
20
|
-
var _containment = /*#__PURE__*/
|
|
20
|
+
var _containment = /*#__PURE__*/ _interop_require_default(require("../verify/containment"));
|
|
21
21
|
var _bracketed = /*#__PURE__*/ _interop_require_default(require("../ocmbinator/bracketed"));
|
|
22
22
|
var _typeAssertion = /*#__PURE__*/ _interop_require_default(require("../verify/typeAssertion"));
|
|
23
23
|
var _statement = /*#__PURE__*/ _interop_require_default(require("../verifier/nodes/statement"));
|
|
@@ -35,47 +35,6 @@ function _interop_require_default(obj) {
|
|
|
35
35
|
default: obj
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
39
|
-
if (typeof WeakMap !== "function") return null;
|
|
40
|
-
var cacheBabelInterop = new WeakMap();
|
|
41
|
-
var cacheNodeInterop = new WeakMap();
|
|
42
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
43
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
44
|
-
})(nodeInterop);
|
|
45
|
-
}
|
|
46
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
47
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
48
|
-
return obj;
|
|
49
|
-
}
|
|
50
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
51
|
-
return {
|
|
52
|
-
default: obj
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
56
|
-
if (cache && cache.has(obj)) {
|
|
57
|
-
return cache.get(obj);
|
|
58
|
-
}
|
|
59
|
-
var newObj = {
|
|
60
|
-
__proto__: null
|
|
61
|
-
};
|
|
62
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
63
|
-
for(var key in obj){
|
|
64
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
65
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
66
|
-
if (desc && (desc.get || desc.set)) {
|
|
67
|
-
Object.defineProperty(newObj, key, desc);
|
|
68
|
-
} else {
|
|
69
|
-
newObj[key] = obj[key];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
newObj.default = obj;
|
|
74
|
-
if (cache) {
|
|
75
|
-
cache.set(obj, newObj);
|
|
76
|
-
}
|
|
77
|
-
return newObj;
|
|
78
|
-
}
|
|
79
38
|
function _iterable_to_array(iter) {
|
|
80
39
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
81
40
|
}
|
|
@@ -93,7 +52,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
93
52
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
94
53
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
95
54
|
}
|
|
96
|
-
var equalityNodeQuery = (0, _query.nodeQuery)("/statement/equality!"), statementNodeQuery = (0, _query.nodeQuery)("/statement/statement!"), containmentNodeQuery = (0, _query.nodeQuery)("/statement/containment!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/statement/typeAssertion!");
|
|
55
|
+
var equalityNodeQuery = (0, _query.nodeQuery)("/statement/equality!"), statementNodeQuery = (0, _query.nodeQuery)("/statement/metaArgument/statement!"), containmentNodeQuery = (0, _query.nodeQuery)("/statement/containment!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/statement/typeAssertion!");
|
|
97
56
|
function verifyStatement(statementNode, assignments, derived, context, verifyAhead) {
|
|
98
57
|
var statementVerified;
|
|
99
58
|
var statementString = context.nodeAsString(statementNode);
|
|
@@ -162,25 +121,27 @@ function verifyStatementWithContainment(statementNode, assignments, derived, con
|
|
|
162
121
|
var statementVerifiedWithContainment = false;
|
|
163
122
|
var containmentNode = containmentNodeQuery(statementNode);
|
|
164
123
|
if (containmentNode !== null) {
|
|
124
|
+
var statementString = context.nodeAsString(statementNode);
|
|
165
125
|
statementNode = statementNodeQuery(statementNode); ///
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
126
|
+
if (statementNode !== null) {
|
|
127
|
+
context.trace("Verifying the '".concat(statementString, "' statement with containment..."), statementNode);
|
|
128
|
+
var containmentVerified = (0, _containment.default)(containmentNode, statementNode);
|
|
129
|
+
if (containmentVerified) {
|
|
130
|
+
var verifyStatementFunctions = [
|
|
131
|
+
verifyStatementAsEquality,
|
|
132
|
+
verifyStatementAgainstCombinators
|
|
133
|
+
];
|
|
134
|
+
var statementVerified = verifyStatementFunctions.some(function(verifyStatementFunction) {
|
|
135
|
+
var derived = false, assignments = [], statementVerified = verifyStatementFunction(statementNode, assignments, derived, context, verifyAhead);
|
|
136
|
+
if (statementVerified) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
statementVerifiedWithContainment = statementVerified; ///
|
|
141
|
+
}
|
|
142
|
+
if (statementVerifiedWithContainment) {
|
|
143
|
+
context.debug("...verified the '".concat(statementString, "' statement with containment."), statementNode);
|
|
144
|
+
}
|
|
184
145
|
}
|
|
185
146
|
}
|
|
186
147
|
return statementVerifiedWithContainment;
|
|
@@ -211,4 +172,4 @@ function verifyStatementAgainstCombinator(statementNode, combinator, context, ve
|
|
|
211
172
|
return statementVerifiedAgainstCombinator;
|
|
212
173
|
}
|
|
213
174
|
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeUNvbnRhaW5tZW50IGZyb20gXCIuLi92ZXJpZnkvY29udGFpbm1lbnRcIjtcbmltcG9ydCBicmFja2V0ZWRDb21iaW5hdG9yIGZyb20gXCIuLi9vY21iaW5hdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS90eXBlQXNzZXJ0aW9uXCI7XG5pbXBvcnQgc3RhdGVtZW50Tm9kZXNWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXIvbm9kZXMvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IGNvbnRhaW5tZW50VmFyaWFibGVOb2RlUXVlcnkgfSBmcm9tIFwiLi4vdmVyaWZ5L2NvbnRhaW5tZW50XCI7XG5cbmNvbnN0IGVxdWFsaXR5Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9lcXVhbGl0eSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBjb250YWlubWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvY29udGFpbm1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5U3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgdmVyaWZ5U3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uLFxuICAgIHZlcmlmeVN0YXRlbWVudFdpdGhDb250YWlubWVudCxcbiAgICB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcnNcbiAgXTtcblxuICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50RnVuY3Rpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmAsIHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U3RhbmRhbG9uZVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBmaWxlQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhbmRhbG9uZSBzdGF0ZW1lbnQuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gIHN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkOyAgLy8vXG5cbiAgaWYgKHN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhbmRhbG9uZSBzdGF0ZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhbmRhbG9uZVN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHN0YXRlbWVudE5vZGVzVmVyaWZpZXIsIHtcbiAgdmVyaWZ5U3RhdGVtZW50XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmVyaWZ5U3RhdGVtZW50O1xuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0VxdWFsaXR5KHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gZmFsc2U7XG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSBlcXVhbGl0eVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRXaXRoQ29udGFpbm1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZFdpdGhDb250YWlubWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRhaW5tZW50Tm9kZSA9IGNvbnRhaW5tZW50Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChjb250YWlubWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpOyAgLy8vXG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBjb250YWlubWVudFZhcmlhYmxlTm9kZSA9IGNvbnRhaW5tZW50VmFyaWFibGVOb2RlUXVlcnkoY29udGFpbm1lbnROb2RlKSxcbiAgICAgICAgICBjb250YWlubWVudFZhcmlhYmxlU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoY29udGFpbm1lbnRWYXJpYWJsZU5vZGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoYXQgdGhlICcke2NvbnRhaW5tZW50VmFyaWFibGVTdHJpbmd9JyBpcyBlaXRoZXIgY29udGFpbmVkIGluIG9yIG9taXR0ZWQgZnJvbSB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb250YWlubWVudFZlcmlmaWVkID0gdmVyaWZ5Q29udGFpbm1lbnQoY29udGFpbm1lbnROb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChjb250YWlubWVudFZlcmlmaWVkKSB7XG4gICAgICBjb25zdCB2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgIHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgICAgIHZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9yc1xuICAgICAgXTtcblxuICAgICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbnMuc29tZSgodmVyaWZ5U3RhdGVtZW50RnVuY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudEZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdGF0ZW1lbnRWZXJpZmllZFdpdGhDb250YWlubWVudCA9IHN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRXaXRoQ29udGFpbm1lbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoYXQgJyR7Y29udGFpbm1lbnRWYXJpYWJsZVN0cmluZ30nIGlzIGVpdGhlciBjb250YWluZWQgaW4gb3Igb21pdHRlZCBmcm9tIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkV2l0aENvbnRhaW5tZW50O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcnMoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycztcblxuICBsZXQgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKCk7XG5cbiAgY29tYmluYXRvcnMgPSBbIC8vL1xuICAgIGJyYWNrZXRlZENvbWJpbmF0b3IsXG4gICAgLi4uY29tYmluYXRvcnNcbiAgXTtcblxuICBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzLnNvbWUoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yID0gdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgY29tYmluYXRvciwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3JzO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcjtcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgY29tYmluYXRvclN0cmluZyA9IGNvbWJpbmF0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSA9IGNvbWJpbmF0b3IuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBub25UZXJtaW5hbE5vZGVBID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gc3RhdGVtZW50Tm9kZXNWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yKSB7XG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YW5kYWxvbmVTdGF0ZW1lbnQiLCJlcXVhbGl0eU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsImNvbnRhaW5tZW50Tm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInZlcmlmeVN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJjb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5U3RhdGVtZW50RnVuY3Rpb25zIiwidmVyaWZ5U3RhdGVtZW50QXNFcXVhbGl0eSIsInZlcmlmeVN0YXRlbWVudEFzVHlwZUFzc2VydGlvbiIsInZlcmlmeVN0YXRlbWVudFdpdGhDb250YWlubWVudCIsInZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9ycyIsInNvbWUiLCJ2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbiIsImRlYnVnIiwiZmlsZUNvbnRleHQiLCJzdGFuZGFsb25lU3RhdGVtZW50VmVyaWZpZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJzdGF0ZW1lbnROb2Rlc1ZlcmlmaWVyIiwic3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5IiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlWZXJpZmllZCIsInZlcmlmeUVxdWFsaXR5Iiwic3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iLCJzdGF0ZW1lbnRWZXJpZmllZFdpdGhDb250YWlubWVudCIsImNvbnRhaW5tZW50Tm9kZSIsImNvbnRhaW5tZW50VmFyaWFibGVOb2RlIiwiY29udGFpbm1lbnRWYXJpYWJsZU5vZGVRdWVyeSIsImNvbnRhaW5tZW50VmFyaWFibGVTdHJpbmciLCJjb250YWlubWVudFZlcmlmaWVkIiwidmVyaWZ5Q29udGFpbm1lbnQiLCJzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29tYmluYXRvcnMiLCJicmFja2V0ZWRDb21iaW5hdG9yIiwiY29tYmluYXRvciIsInN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IiLCJ2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvciIsImNvbWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFzRUEsT0FBK0I7ZUFBL0I7O0lBekJnQkEseUJBQXlCO2VBQXpCQTs7OytEQTNDVzttRUFDRztnRUFDRTtvRUFDQTtnRUFDRztxQkFFVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRzFCLElBQU1DLG9CQUFvQkMsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDOUJDLHFCQUFxQkQsSUFBQUEsZ0JBQVMsRUFBQywwQkFDL0JFLHVCQUF1QkYsSUFBQUEsZ0JBQVMsRUFBQyw0QkFD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
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeUNvbnRhaW5tZW50IGZyb20gXCIuLi92ZXJpZnkvY29udGFpbm1lbnRcIjtcbmltcG9ydCBicmFja2V0ZWRDb21iaW5hdG9yIGZyb20gXCIuLi9vY21iaW5hdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3ZlcmlmeS90eXBlQXNzZXJ0aW9uXCI7XG5pbXBvcnQgc3RhdGVtZW50Tm9kZXNWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXIvbm9kZXMvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgZXF1YWxpdHlOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L2VxdWFsaXR5IVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YUFyZ3VtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBjb250YWlubWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvY29udGFpbm1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5U3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgdmVyaWZ5U3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uLFxuICAgIHZlcmlmeVN0YXRlbWVudFdpdGhDb250YWlubWVudCxcbiAgICB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcnNcbiAgXTtcblxuICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50RnVuY3Rpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmAsIHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U3RhbmRhbG9uZVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBmaWxlQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhbmRhbG9uZSBzdGF0ZW1lbnQuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgZGVyaXZlZCA9IGZhbHNlLFxuICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gIHN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZCA9IHN0YXRlbWVudFZlcmlmaWVkOyAgLy8vXG5cbiAgaWYgKHN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhbmRhbG9uZSBzdGF0ZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhbmRhbG9uZVN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHN0YXRlbWVudE5vZGVzVmVyaWZpZXIsIHtcbiAgdmVyaWZ5U3RhdGVtZW50XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmVyaWZ5U3RhdGVtZW50O1xuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0VxdWFsaXR5KHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gZmFsc2U7XG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSBlcXVhbGl0eVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRXaXRoQ29udGFpbm1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZFdpdGhDb250YWlubWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRhaW5tZW50Tm9kZSA9IGNvbnRhaW5tZW50Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChjb250YWlubWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7ICAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIGNvbnRhaW5tZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5tZW50VmVyaWZpZWQgPSB2ZXJpZnlDb250YWlubWVudChjb250YWlubWVudE5vZGUsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAoY29udGFpbm1lbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCB2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgdmVyaWZ5U3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgICAgICAgICB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcnNcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlcml2ZWQgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICAgICAgICAgIHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50RnVuY3Rpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZFdpdGhDb250YWlubWVudCA9IHN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkV2l0aENvbnRhaW5tZW50KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCBjb250YWlubWVudC5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRXaXRoQ29udGFpbm1lbnQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9ycyhzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3JzO1xuXG4gIGxldCBjb21iaW5hdG9ycyA9IGNvbnRleHQuZ2V0Q29tYmluYXRvcnMoKTtcblxuICBjb21iaW5hdG9ycyA9IFsgLy8vXG4gICAgYnJhY2tldGVkQ29tYmluYXRvcixcbiAgICAuLi5jb21iaW5hdG9yc1xuICBdO1xuXG4gIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3JzID0gY29tYmluYXRvcnMuc29tZSgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IgPSB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnM7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFnYWluc3RDb21iaW5hdG9yKHN0YXRlbWVudE5vZGUsIGNvbWJpbmF0b3IsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpLFxuICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gY29tYmluYXRvci5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZUEgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgbm9uVGVybWluYWxOb2RlQiA9IGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBzdGF0ZW1lbnROb2Rlc1ZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvciA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmAsIHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3I7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5U3RhbmRhbG9uZVN0YXRlbWVudCIsImVxdWFsaXR5Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwiY29udGFpbm1lbnROb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5IiwidmVyaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5U3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwidmVyaWZ5U3RhdGVtZW50V2l0aENvbnRhaW5tZW50IiwidmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3JzIiwic29tZSIsInZlcmlmeVN0YXRlbWVudEZ1bmN0aW9uIiwiZGVidWciLCJmaWxlQ29udGV4dCIsInN0YW5kYWxvbmVTdGF0ZW1lbnRWZXJpZmllZCIsIk9iamVjdCIsImFzc2lnbiIsInN0YXRlbWVudE5vZGVzVmVyaWZpZXIiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VHlwZUFzc2VydGlvbiIsInN0YXRlbWVudFZlcmlmaWVkV2l0aENvbnRhaW5tZW50IiwiY29udGFpbm1lbnROb2RlIiwiY29udGFpbm1lbnRWZXJpZmllZCIsInZlcmlmeUNvbnRhaW5tZW50Iiwic3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbWJpbmF0b3JzIiwiYnJhY2tldGVkQ29tYmluYXRvciIsImNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yIiwidmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IiLCJjb21iaW5hdG9yU3RyaW5nIiwiZ2V0U3RyaW5nIiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBcUVBLE9BQStCO2VBQS9COztJQXpCZ0JBLHlCQUF5QjtlQUF6QkE7OzsrREExQ1c7a0VBQ0c7Z0VBQ0U7b0VBQ0E7Z0VBQ0c7cUJBRVQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFBTUMsb0JBQW9CQyxJQUFBQSxnQkFBUyxFQUFDLHlCQUM5QkMscUJBQXFCRCxJQUFBQSxnQkFBUyxFQUFDLHVDQUMvQkUsdUJBQXVCRixJQUFBQSxnQkFBUyxFQUFDLDRCQUNqQ0cseUJBQXlCSCxJQUFBQSxnQkFBUyxFQUFDO0FBRXpDLFNBQVNJLGdCQUFnQkMsYUFBYSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxXQUFXO0lBQ2hGLElBQUlDO0lBRUosSUFBTUMsa0JBQWtCSCxRQUFRSSxZQUFZLENBQUNQO0lBRTdDRyxRQUFRSyxLQUFLLENBQUMsQUFBQyxrQkFBaUMsT0FBaEJGLGlCQUFnQixtQkFBaUJOO0lBRWpFLElBQU1TLDJCQUEyQjtRQUMvQkM7UUFDQUM7UUFDQUM7UUFDQUM7S0FDRDtJQUVEUixvQkFBb0JJLHlCQUF5QkssSUFBSSxDQUFDLFNBQUNDO1FBQ2pELElBQU1WLG9CQUFvQlUsd0JBQXdCZixlQUFlQyxhQUFhQyxTQUFTQyxTQUFTQztRQUVoRyxJQUFJQyxtQkFBbUI7WUFDckIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSxt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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.836",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.28",
|
|
14
14
|
"necessary": "^14.0.1",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
15
|
+
"occam-custom-grammars": "^5.0.736",
|
|
16
16
|
"occam-entities": "^1.0.125",
|
|
17
17
|
"occam-file-system": "^6.0.167",
|
|
18
18
|
"occam-grammar-utilities": "^8.0.201",
|
package/src/conclusion.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
4
|
+
import metaLevelToIntrinsicLevelNodesVerifier from "./verifier/nodes/metaLevelToIntrinsicLevel";
|
|
5
5
|
|
|
6
6
|
import { nodeAsString } from "./utilities/string";
|
|
7
7
|
import { metastatementNodeFromMetastatementString } from "./utilities/node";
|
|
@@ -20,7 +20,7 @@ export default class Conclusion {
|
|
|
20
20
|
nonTerminalNodeB = statementNode, ///
|
|
21
21
|
fileContextA = fileContext, ///
|
|
22
22
|
localContextB = statementLocalContext, ///
|
|
23
|
-
nonTerminalNodeVerified =
|
|
23
|
+
nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
|
|
24
24
|
const verifyAhead = true;
|
|
25
25
|
|
|
26
26
|
return verifyAhead;
|
|
@@ -35,7 +35,7 @@ export default class Conclusion {
|
|
|
35
35
|
nonTerminalNodeB = metastatementNode, ///
|
|
36
36
|
fileContextA = fileContext, ///
|
|
37
37
|
localMetaContextB = metastatementLocalMetaContext, ///
|
|
38
|
-
nonTerminalNodeVerified =
|
|
38
|
+
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
|
|
39
39
|
const verifiedAhead = true;
|
|
40
40
|
|
|
41
41
|
return verifiedAhead;
|
package/src/consequent.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import intrinsicLevelNodesVerifier from "./verifier/nodes/intrinsicLevel";
|
|
4
4
|
|
|
5
5
|
import { nodeAsString } from "./utilities/string";
|
|
6
6
|
import { statementNodeFromStatementString } from "./utilities/node";
|
|
@@ -19,7 +19,7 @@ export default class Consequent {
|
|
|
19
19
|
nonTerminalNodeB = statementNode, ///
|
|
20
20
|
localContextA = localContext, ///
|
|
21
21
|
localContextB = statementLocalContext, ///
|
|
22
|
-
nonTerminalNodeVerified =
|
|
22
|
+
nonTerminalNodeVerified = intrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
23
23
|
const verifiedAhead = true;
|
|
24
24
|
|
|
25
25
|
return verifiedAhead;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import verifyTerm from "../../verify/term";
|
|
4
|
+
import TermForVariableSubstitution from "../../substitution/termForVariable";
|
|
5
|
+
|
|
6
|
+
import { first } from "../../utilities/array";
|
|
7
|
+
|
|
8
|
+
function verifyVariableNode(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
9
|
+
let variableNodeVerified = false;
|
|
10
|
+
|
|
11
|
+
const substitution = substitutions.find((substitution) => {
|
|
12
|
+
const substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNodeA);
|
|
13
|
+
|
|
14
|
+
if (substitutionMatchesVariableNodeA) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
}) || null;
|
|
18
|
+
|
|
19
|
+
if (substitution !== null) {
|
|
20
|
+
const termNode = termNodeB, ///
|
|
21
|
+
termNodeMatches = substitution.matchTermNode(termNode);
|
|
22
|
+
|
|
23
|
+
if (termNodeMatches) {
|
|
24
|
+
const verifiedAhead = verifyAhead();
|
|
25
|
+
|
|
26
|
+
variableNodeVerified = verifiedAhead; ///
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
const variableNode = variableNodeA, ///
|
|
30
|
+
localContext = localContextA, ///
|
|
31
|
+
variable = localContext.findVariableByVariableNode(variableNode);
|
|
32
|
+
|
|
33
|
+
if (variable !== null) {
|
|
34
|
+
const terms = [],
|
|
35
|
+
context = localContextB, ///
|
|
36
|
+
termNode = termNodeB, ///
|
|
37
|
+
termVerified = verifyTerm(termNode, terms, context, () => {
|
|
38
|
+
let verifiedAhead = false;
|
|
39
|
+
|
|
40
|
+
const firstTerm = first(terms),
|
|
41
|
+
term = firstTerm, ///
|
|
42
|
+
termType = term.getType(),
|
|
43
|
+
variableType = variable.getType(),
|
|
44
|
+
variableTypeEqualToOrSuperTypeOfTermType = variableType.isEqualToOrSuperTypeOf(termType);
|
|
45
|
+
|
|
46
|
+
if (variableTypeEqualToOrSuperTypeOfTermType) {
|
|
47
|
+
const termForVariableSubstitution = TermForVariableSubstitution.fromVariableNodeAndTermNode(variableNode, termNode),
|
|
48
|
+
substitution = termForVariableSubstitution; ///
|
|
49
|
+
|
|
50
|
+
substitutions.push(substitution);
|
|
51
|
+
|
|
52
|
+
verifiedAhead = verifyAhead();
|
|
53
|
+
|
|
54
|
+
if (!verifiedAhead) {
|
|
55
|
+
substitutions.pop();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return verifiedAhead;
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
variableNodeVerified = termVerified; ///
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return variableNodeVerified;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const intrinsicLevelNodesVerifierMixins = {
|
|
70
|
+
verifyVariableNode
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export default intrinsicLevelNodesVerifierMixins;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetastatementForMetavariableSubstitution from "../../substitution/metastatementForMetavariable";
|
|
4
|
+
|
|
5
|
+
function verifyMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions, fileContextA, localMetaContextB, verifyAhead) {
|
|
6
|
+
let metavariableNodeVerified;
|
|
7
|
+
|
|
8
|
+
const substitution = substitutions.find((substitution) => {
|
|
9
|
+
const substitutionMatchesMetavariableNodeA = substitution.matchMetavariableNode(metavariableNodeA);
|
|
10
|
+
|
|
11
|
+
if (substitutionMatchesMetavariableNodeA) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}) || null;
|
|
15
|
+
|
|
16
|
+
if (substitution !== null) {
|
|
17
|
+
const metastatementNode = metastatementNodeB, ///
|
|
18
|
+
metastatementNodeMatches = substitution.matchMetastatementNode(metastatementNode);
|
|
19
|
+
|
|
20
|
+
metavariableNodeVerified = metastatementNodeMatches; ///
|
|
21
|
+
} else {
|
|
22
|
+
const metavariableNode = metavariableNodeA, ///
|
|
23
|
+
metastatementNode = metastatementNodeB, ///
|
|
24
|
+
metastatementForMetavariableSubstitution = MetastatementForMetavariableSubstitution.fromMetavariableNodeAndMetastatementNode(metavariableNode, metastatementNode),
|
|
25
|
+
substitution = metastatementForMetavariableSubstitution; ///
|
|
26
|
+
|
|
27
|
+
substitutions.push(substitution);
|
|
28
|
+
|
|
29
|
+
metavariableNodeVerified = true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return metavariableNodeVerified;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const metaLevelNodesVerifierMixins = {
|
|
36
|
+
verifyMetavariableNode
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default metaLevelNodesVerifierMixins;
|
package/src/premise.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
4
|
+
import metaLevelToIntrinsicLevelNodesVerifier from "./verifier/nodes/metaLevelToIntrinsicLevel";
|
|
5
5
|
|
|
6
6
|
import { match } from "./utilities/array";
|
|
7
7
|
import { nodeAsString } from "./utilities/string";
|
|
@@ -46,7 +46,7 @@ export default class Premise {
|
|
|
46
46
|
nonTerminalNodeB = subproofStatementNode, ///
|
|
47
47
|
fileContextA = fileContext, ///
|
|
48
48
|
localContextB = statementLocalContext, ///
|
|
49
|
-
nonTerminalNodeVerified =
|
|
49
|
+
nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
|
|
50
50
|
const verifiedAhead = true;
|
|
51
51
|
|
|
52
52
|
return verifiedAhead;
|
|
@@ -67,7 +67,7 @@ export default class Premise {
|
|
|
67
67
|
nonTerminalNodeB = statementNode, ///
|
|
68
68
|
fileContextA = fileContext, ///
|
|
69
69
|
localContextB = statementLocalContext, ///
|
|
70
|
-
nonTerminalNodeVerified =
|
|
70
|
+
nonTerminalNodeVerified = metaLevelToIntrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
|
|
71
71
|
const verifiedAhead = true;
|
|
72
72
|
|
|
73
73
|
return verifiedAhead;
|
|
@@ -99,7 +99,7 @@ export default class Premise {
|
|
|
99
99
|
nonTerminalNodeB = ruleSubproofMetastatementNode, ///
|
|
100
100
|
fileContextA = fileContext, ///
|
|
101
101
|
localMetaContextB = metastatementLocalMetaContext, ///
|
|
102
|
-
nonTerminalNodeVerified =
|
|
102
|
+
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
|
|
103
103
|
const verifiedAhead = true;
|
|
104
104
|
|
|
105
105
|
return verifiedAhead;
|
|
@@ -120,7 +120,7 @@ export default class Premise {
|
|
|
120
120
|
nonTerminalNodeB = metastatementNode, ///
|
|
121
121
|
fileContextA = fileContext, ///
|
|
122
122
|
localMetaContextB = metastatementLocalMetaContext, ///
|
|
123
|
-
nonTerminalNodeVerified =
|
|
123
|
+
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
|
|
124
124
|
const verifiedAhead = true;
|
|
125
125
|
|
|
126
126
|
return verifiedAhead;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Substitution from "../substitution";
|
|
4
|
+
|
|
3
5
|
import { bracketedMetastatementChildNodeFromMetastatementNode } from "../utilities/metaproof";
|
|
4
6
|
|
|
5
|
-
export default class MetastatementForMetavariableSubstitution {
|
|
7
|
+
export default class MetastatementForMetavariableSubstitution extends Substitution {
|
|
6
8
|
constructor(metavariableNode, metastatementNode) {
|
|
9
|
+
super();
|
|
10
|
+
|
|
7
11
|
this.metavariableNode = metavariableNode;
|
|
8
12
|
this.metastatementNode = metastatementNode;
|
|
9
13
|
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Substitution from "../substitution";
|
|
4
|
+
|
|
3
5
|
import { bracketedStatementChildNodeFromStatementNode } from "../utilities/proof";
|
|
4
6
|
|
|
5
|
-
export default class StatementForMetavariableSubstitution {
|
|
7
|
+
export default class StatementForMetavariableSubstitution extends Substitution {
|
|
6
8
|
constructor(metavariableNode, statementNode) {
|
|
9
|
+
super();
|
|
10
|
+
|
|
7
11
|
this.metavariableNode = metavariableNode;
|
|
8
12
|
this.statementNode = statementNode;
|
|
9
13
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import Substitution from "../substitution";
|
|
4
|
+
|
|
5
|
+
export default class TermForVariableSubstitution extends Substitution {
|
|
4
6
|
constructor(variableNode, termNode) {
|
|
7
|
+
super();
|
|
8
|
+
|
|
5
9
|
this.variableNode = variableNode;
|
|
6
10
|
this.termNode = termNode;
|
|
7
11
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default class Substitution {
|
|
4
|
+
matchTermNode(termNode) {
|
|
5
|
+
const termNodeMatches = false;
|
|
6
|
+
|
|
7
|
+
return termNodeMatches;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
matchVariableNode(variableNode) {
|
|
11
|
+
const variableNodeMatches = false;
|
|
12
|
+
|
|
13
|
+
return variableNodeMatches;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
matchStatementNode(statementNode) {
|
|
17
|
+
const statementNodeMatches = false;
|
|
18
|
+
|
|
19
|
+
return statementNodeMatches;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
matchMetavariableNode(metavariableNode) {
|
|
23
|
+
const metavariableNodeMatches = false;
|
|
24
|
+
|
|
25
|
+
return metavariableNodeMatches;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
matchMetastatementNode(metastatementNode) {
|
|
29
|
+
const metastatementNodeMatches = false;
|
|
30
|
+
|
|
31
|
+
return metastatementNodeMatches;
|
|
32
|
+
}
|
|
33
|
+
}
|
package/src/supposition.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import intrinsicLevelNodesVerifier from "./verifier/nodes/intrinsicLevel";
|
|
4
4
|
|
|
5
5
|
import { match } from "./utilities/array";
|
|
6
6
|
import { nodeAsString } from "./utilities/string";
|
|
@@ -43,7 +43,7 @@ export default class Supposition {
|
|
|
43
43
|
nonTerminalNodeB = subproofStatementNode, ///
|
|
44
44
|
localContextA = localContext, ///
|
|
45
45
|
localContextB = statementLocalContext, ///
|
|
46
|
-
nonTerminalNodeVerified =
|
|
46
|
+
nonTerminalNodeVerified = intrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
47
47
|
const verifiedAhead = true;
|
|
48
48
|
|
|
49
49
|
return verifiedAhead;
|
|
@@ -64,7 +64,7 @@ export default class Supposition {
|
|
|
64
64
|
nonTerminalNodeB = statementNode, ///
|
|
65
65
|
localContextA = localContext, ///
|
|
66
66
|
localContextB = statementLocalContext, ///
|
|
67
|
-
nonTerminalNodeVerified =
|
|
67
|
+
nonTerminalNodeVerified = intrinsicLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
68
68
|
const verifiedAhead = true;
|
|
69
69
|
|
|
70
70
|
return verifiedAhead;
|
|
@@ -5,7 +5,7 @@ import bracketedMetastatementNode from "../node/metastatement/bracketed";
|
|
|
5
5
|
import { nodeQuery } from "../utilities/query";
|
|
6
6
|
import { BRACKETED_METASTATEMENT_DEPTH } from "../constants";
|
|
7
7
|
|
|
8
|
-
const bracketedMetastatementChildNodeQuery = nodeQuery(
|
|
8
|
+
const bracketedMetastatementChildNodeQuery = nodeQuery("/metastatement/metastatement!");
|
|
9
9
|
|
|
10
10
|
export function matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB) {
|
|
11
11
|
let metastatementMatchesModuloBrackets = false;
|
package/src/utilities/proof.js
CHANGED
|
@@ -5,7 +5,7 @@ import bracketedStatementNode from "../node/statement/bracketed";
|
|
|
5
5
|
import { nodeQuery } from "../utilities/query";
|
|
6
6
|
import { BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
7
7
|
|
|
8
|
-
const bracketedStatementChildNodeQuery = nodeQuery(
|
|
8
|
+
const bracketedStatementChildNodeQuery = nodeQuery("/statement/metaArgument!/statement!");
|
|
9
9
|
|
|
10
10
|
export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
|
|
11
11
|
let statementMatchesModuloBrackets = false;
|
|
@@ -14,12 +14,12 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
14
14
|
const ruleName = nonTerminalNode.getRuleName();
|
|
15
15
|
|
|
16
16
|
switch (ruleName) {
|
|
17
|
-
case
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
case STATEMENT_RULE_NAME: {
|
|
18
|
+
const statementNode = nonTerminalNode, ///
|
|
19
|
+
standaloneStatementVerified = verifyStandaloneStatement(statementNode, fileContext, verifyAhead),
|
|
20
|
+
statementNodeVerified = standaloneStatementVerified; ///
|
|
21
21
|
|
|
22
|
-
nonTerminalNodeVerified =
|
|
22
|
+
nonTerminalNodeVerified = statementNodeVerified; ///
|
|
23
23
|
|
|
24
24
|
break;
|
|
25
25
|
}
|
|
@@ -34,12 +34,12 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
34
34
|
break;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
case
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
case TYPE_RULE_NAME: {
|
|
38
|
+
const typeNode = nonTerminalNode, ///
|
|
39
|
+
standaloneTypeVerified = verifyStandaloneType(typeNode, fileContext, verifyAhead),
|
|
40
|
+
typeNodeVerified = standaloneTypeVerified; ///
|
|
41
41
|
|
|
42
|
-
nonTerminalNodeVerified =
|
|
42
|
+
nonTerminalNodeVerified = typeNodeVerified; ///
|
|
43
43
|
|
|
44
44
|
break;
|
|
45
45
|
}
|
|
@@ -58,4 +58,3 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
58
58
|
const statementAsCombinatorNodeVerifier = new StatementAsCombinatorNodeVerifier();
|
|
59
59
|
|
|
60
60
|
export default statementAsCombinatorNodeVerifier;
|
|
61
|
-
|
|
@@ -17,16 +17,6 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
|
|
|
17
17
|
const ruleName = nonTerminalNode.getRuleName();
|
|
18
18
|
|
|
19
19
|
switch (ruleName) {
|
|
20
|
-
case TERM_RULE_NAME: {
|
|
21
|
-
const termNode = nonTerminalNode, ///
|
|
22
|
-
standaloneTermVerified = verifyStandaloneTerm(termNode, fileContext, verifyAhead),
|
|
23
|
-
termNodeVerified = standaloneTermVerified; ///
|
|
24
|
-
|
|
25
|
-
nonTerminalNodeVerified = termNodeVerified; ///
|
|
26
|
-
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
20
|
case ARGUMENT_RULE_NAME: {
|
|
31
21
|
const argumentNode = nonTerminalNode, ///
|
|
32
22
|
argumentVerified = verifyArgument(argumentNode, fileContext, verifyAhead),
|
|
@@ -37,6 +27,16 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
|
|
|
37
27
|
break;
|
|
38
28
|
}
|
|
39
29
|
|
|
30
|
+
case TERM_RULE_NAME: {
|
|
31
|
+
const termNode = nonTerminalNode, ///
|
|
32
|
+
standaloneTermVerified = verifyStandaloneTerm(termNode, fileContext, verifyAhead),
|
|
33
|
+
termNodeVerified = standaloneTermVerified; ///
|
|
34
|
+
|
|
35
|
+
nonTerminalNodeVerified = termNodeVerified; ///
|
|
36
|
+
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
40
|
default: {
|
|
41
41
|
nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNode, fileContext, verifyAhead);
|
|
42
42
|
|
|
@@ -52,7 +52,7 @@ const termAsConstructorNodeVerifier = new TermAsConstructorNodeVerifier();
|
|
|
52
52
|
|
|
53
53
|
export default termAsConstructorNodeVerifier;
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
function verifyArgument(argumentNode, fileContext, verifyAhead) {
|
|
56
56
|
let argumentVerified;
|
|
57
57
|
|
|
58
58
|
const argumentString = fileContext.nodeAsString(argumentNode);
|