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.
Files changed (51) hide show
  1. package/lib/conclusion.js +5 -5
  2. package/lib/consequent.js +3 -3
  3. package/lib/mixins/nodesVerifier/intrinsiclevel.js +59 -0
  4. package/lib/mixins/nodesVerifier/metaLevel.js +40 -0
  5. package/lib/premise.js +7 -7
  6. package/lib/substitution/metastatementForMetavariable.js +82 -5
  7. package/lib/substitution/statementForMetavariable.js +82 -5
  8. package/lib/substitution/termForVariable.js +82 -5
  9. package/lib/substitution.js +74 -0
  10. package/lib/supposition.js +4 -4
  11. package/lib/utilities/metaproof.js +2 -2
  12. package/lib/utilities/proof.js +2 -2
  13. package/lib/verifier/node/statementAsCombinator.js +7 -7
  14. package/lib/verifier/node/termAsConstructor.js +10 -18
  15. package/lib/verifier/nodes/equality.js +18 -8
  16. package/lib/verifier/nodes/intrinsicLevel.js +183 -0
  17. package/lib/verifier/nodes/metaLevel.js +183 -0
  18. package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +257 -0
  19. package/lib/verifier/nodes/statement.js +8 -9
  20. package/lib/verifier/nodes/term.js +3 -3
  21. package/lib/verify/containment.js +5 -14
  22. package/lib/verify/statement.js +23 -62
  23. package/package.json +2 -2
  24. package/src/conclusion.js +4 -4
  25. package/src/consequent.js +2 -2
  26. package/src/mixins/nodesVerifier/intrinsiclevel.js +73 -0
  27. package/src/mixins/nodesVerifier/metaLevel.js +39 -0
  28. package/src/premise.js +6 -6
  29. package/src/substitution/metastatementForMetavariable.js +5 -1
  30. package/src/substitution/statementForMetavariable.js +5 -1
  31. package/src/substitution/termForVariable.js +5 -1
  32. package/src/substitution.js +33 -0
  33. package/src/supposition.js +3 -3
  34. package/src/utilities/metaproof.js +1 -1
  35. package/src/utilities/proof.js +1 -1
  36. package/src/verifier/node/statementAsCombinator.js +10 -11
  37. package/src/verifier/node/termAsConstructor.js +11 -11
  38. package/src/verifier/nodes/equality.js +25 -10
  39. package/src/verifier/nodes/intrinsicLevel.js +68 -0
  40. package/src/verifier/nodes/metaLevel.js +68 -0
  41. package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +170 -0
  42. package/src/verifier/nodes/statement.js +12 -13
  43. package/src/verifier/nodes/term.js +4 -2
  44. package/src/verify/containment.js +2 -3
  45. package/src/verify/statement.js +24 -25
  46. package/lib/verifier/nodes/metastatementForMetavariable.js +0 -197
  47. package/lib/verifier/nodes/statementForMetavariable.js +0 -202
  48. package/lib/verifier/nodes/termForVariable.js +0 -216
  49. package/src/verifier/nodes/metastatementForMetavariable.js +0 -87
  50. package/src/verifier/nodes/statementForMetavariable.js +0 -103
  51. package/src/verifier/nodes/termForVariable.js +0 -120
@@ -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__*/ _interop_require_wildcard(require("../verify/containment"));
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
- var statementString = context.nodeAsString(statementNode), containmentVariableNode = (0, _containment.containmentVariableNodeQuery)(containmentNode), containmentVariableString = context.nodeAsString(containmentVariableNode);
167
- context.trace("Verifying that the '".concat(containmentVariableString, "' is either contained in or omitted from the '").concat(statementString, "' statement..."), statementNode);
168
- var containmentVerified = (0, _containment.default)(containmentNode, statementNode);
169
- if (containmentVerified) {
170
- var verifyStatementFunctions = [
171
- verifyStatementAsEquality,
172
- verifyStatementAgainstCombinators
173
- ];
174
- var statementVerified = verifyStatementFunctions.some(function(verifyStatementFunction) {
175
- var derived = false, assignments = [], statementVerified = verifyStatementFunction(statementNode, assignments, derived, context, verifyAhead);
176
- if (statementVerified) {
177
- return true;
178
- }
179
- });
180
- statementVerifiedWithContainment = statementVerified; ///
181
- }
182
- if (statementVerifiedWithContainment) {
183
- context.debug("...verified that '".concat(containmentVariableString, "' is either contained in or omitted from the '").concat(statementString, "' statement."), statementNode);
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.834",
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.732",
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 statementForMetavariableNodesVerifier from "./verifier/nodes/statementForMetavariable";
4
- import metastatementForMetavariableNodesVerifier from "./verifier/nodes/metastatementForMetavariable";
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 = statementForMetavariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
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 = metastatementForMetavariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
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 termForVariableNodesVerifier from "./verifier/nodes/termForVariable";
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 = termForVariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
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 statementForMetavariableNodesVerifier from "./verifier/nodes/statementForMetavariable";
4
- import metastatementForMetavariableNodesVerifier from "./verifier/nodes/metastatementForMetavariable";
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 = statementForMetavariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
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 = statementForMetavariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localContextB, () => {
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 = metastatementForMetavariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
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 = metastatementForMetavariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, localMetaContextB, () => {
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
- export default class TermForVariableSubstitution {
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
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import termForVariableNodesVerifier from "./verifier/nodes/termForVariable";
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 = termForVariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
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 = termForVariableNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
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('/metastatement/metastatement!');
8
+ const bracketedMetastatementChildNodeQuery = nodeQuery("/metastatement/metastatement!");
9
9
 
10
10
  export function matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB) {
11
11
  let metastatementMatchesModuloBrackets = false;
@@ -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('/statement/metaArgument!/statement!');
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 TYPE_RULE_NAME: {
18
- const typeNode = nonTerminalNode, ///
19
- standaloneTypeVerified = verifyStandaloneType(typeNode, fileContext, verifyAhead),
20
- typeNodeVerified = standaloneTypeVerified; ///
17
+ case STATEMENT_RULE_NAME: {
18
+ const statementNode = nonTerminalNode, ///
19
+ standaloneStatementVerified = verifyStandaloneStatement(statementNode, fileContext, verifyAhead),
20
+ statementNodeVerified = standaloneStatementVerified; ///
21
21
 
22
- nonTerminalNodeVerified = typeNodeVerified; ///
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 STATEMENT_RULE_NAME: {
38
- const statementNode = nonTerminalNode, ///
39
- standaloneStatementVerified = verifyStandaloneStatement(statementNode, fileContext, verifyAhead),
40
- statementNodeVerified = standaloneStatementVerified; ///
37
+ case TYPE_RULE_NAME: {
38
+ const typeNode = nonTerminalNode, ///
39
+ standaloneTypeVerified = verifyStandaloneType(typeNode, fileContext, verifyAhead),
40
+ typeNodeVerified = standaloneTypeVerified; ///
41
41
 
42
- nonTerminalNodeVerified = statementNodeVerified; ///
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
- export function verifyArgument(argumentNode, fileContext, verifyAhead) {
55
+ function verifyArgument(argumentNode, fileContext, verifyAhead) {
56
56
  let argumentVerified;
57
57
 
58
58
  const argumentString = fileContext.nodeAsString(argumentNode);