occam-verify-cli 0.0.960 → 0.0.962

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 (67) hide show
  1. package/lib/context/local.js +3 -9
  2. package/lib/proofStep.js +8 -5
  3. package/lib/substitution/termForVariable.js +24 -25
  4. package/lib/unifier/statementWithCombinator.js +6 -6
  5. package/lib/unify/statementAtainstStatement.js +16 -16
  6. package/lib/unify/statementWithBracketedCombinator.js +30 -0
  7. package/lib/unify/statementWithCombinators.js +40 -0
  8. package/lib/unify/statementWithMetaType.js +6 -30
  9. package/lib/unify/termWithBracketedConstructor.js +39 -0
  10. package/lib/unify/termWithConstructors.js +61 -0
  11. package/lib/unify/termWithType.js +4 -12
  12. package/lib/utilities/assignments.js +9 -12
  13. package/lib/verifier/intrinsicLevel.js +140 -0
  14. package/lib/verifier/metaLevel.js +11 -20
  15. package/lib/verifier/statementAsCombinator.js +9 -9
  16. package/lib/verifier/termAsConstructor.js +5 -5
  17. package/lib/verify/assertion/contained.js +2 -3
  18. package/lib/verify/assertion/defined.js +2 -4
  19. package/lib/verify/assertion/subproof.js +20 -18
  20. package/lib/verify/assertion/type.js +1 -2
  21. package/lib/verify/declaration.js +27 -9
  22. package/lib/verify/frame.js +25 -6
  23. package/lib/verify/premise.js +3 -3
  24. package/lib/verify/proofStep.js +23 -30
  25. package/lib/verify/statement/qualified.js +93 -137
  26. package/lib/verify/statement/unqualified.js +18 -104
  27. package/lib/verify/statement.js +95 -76
  28. package/lib/verify/statementAsCombinator.js +2 -2
  29. package/lib/verify/statementGivenMetaType.js +41 -0
  30. package/lib/verify/supposition.js +3 -3
  31. package/lib/verify/term.js +39 -65
  32. package/lib/verify/termAsConstructor.js +2 -2
  33. package/lib/verify/termGivenType.js +34 -0
  34. package/package.json +1 -1
  35. package/src/context/local.js +4 -13
  36. package/src/proofStep.js +10 -5
  37. package/src/substitution/termForVariable.js +33 -30
  38. package/src/unifier/statementWithCombinator.js +5 -5
  39. package/src/unify/statementAtainstStatement.js +13 -13
  40. package/src/unify/statementWithBracketedCombinator.js +22 -0
  41. package/src/unify/statementWithCombinators.js +38 -0
  42. package/src/unify/statementWithMetaType.js +6 -42
  43. package/src/unify/termWithBracketedConstructor.js +39 -0
  44. package/src/unify/termWithConstructors.js +63 -0
  45. package/src/unify/termWithType.js +4 -20
  46. package/src/utilities/assignments.js +6 -13
  47. package/src/verifier/intrinsicLevel.js +42 -0
  48. package/src/verifier/metaLevel.js +13 -21
  49. package/src/verifier/statementAsCombinator.js +11 -7
  50. package/src/verifier/termAsConstructor.js +4 -3
  51. package/src/verify/assertion/contained.js +1 -3
  52. package/src/verify/assertion/defined.js +1 -4
  53. package/src/verify/assertion/subproof.js +22 -18
  54. package/src/verify/assertion/type.js +0 -1
  55. package/src/verify/declaration.js +34 -11
  56. package/src/verify/frame.js +32 -5
  57. package/src/verify/premise.js +3 -3
  58. package/src/verify/proofStep.js +26 -38
  59. package/src/verify/statement/qualified.js +104 -184
  60. package/src/verify/statement/unqualified.js +19 -149
  61. package/src/verify/statement.js +126 -72
  62. package/src/verify/statementAsCombinator.js +1 -1
  63. package/src/verify/statementGivenMetaType.js +37 -0
  64. package/src/verify/supposition.js +3 -3
  65. package/src/verify/term.js +44 -93
  66. package/src/verify/termAsConstructor.js +1 -1
  67. package/src/verify/termGivenType.js +32 -0
@@ -10,30 +10,37 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
12
  var _term = /*#__PURE__*/ _interop_require_default(require("../term"));
13
- var _bracketed = /*#__PURE__*/ _interop_require_default(require("../constructor/bracketed"));
14
- var _termWithConstructor = /*#__PURE__*/ _interop_require_default(require("../unifier/termWithConstructor"));
13
+ var _termWithConstructors = /*#__PURE__*/ _interop_require_default(require("../unify/termWithConstructors"));
14
+ var _termWithBracketedConstructor = /*#__PURE__*/ _interop_require_default(require("../unify/termWithBracketedConstructor"));
15
+ var _array = require("../utilities/array");
15
16
  var _query = require("../utilities/query");
16
17
  function _interop_require_default(obj) {
17
18
  return obj && obj.__esModule ? obj : {
18
19
  default: obj
19
20
  };
20
21
  }
21
- var termNodeQuery = (0, _query.nodeQuery)("/term/argument/term"), variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
22
+ var variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
23
+ var unifyTermFunctions = [
24
+ _termWithBracketedConstructor.default,
25
+ _termWithConstructors.default
26
+ ];
22
27
  function verifyTerm(termNode, terms, localContext, verifyAhead) {
23
- var termVerified;
28
+ var termVerified = false;
24
29
  var termString = localContext.nodeAsString(termNode);
25
30
  localContext.trace("Verifying the '".concat(termString, "' term..."), termNode);
26
- var verifyTermFunctions = [
27
- verifyTermAsVariable,
28
- unifyTermWithConstructors,
29
- unifyTermWithBracketedConstructor
30
- ];
31
- termVerified = verifyTermFunctions.some(function(verifyTermFunction) {
32
- var termVerified = verifyTermFunction(termNode, terms, localContext, verifyAhead);
33
- if (termVerified) {
34
- return true;
35
- }
36
- });
31
+ if (!termVerified) {
32
+ var termVerifiedAsVariable = verifyTermAsVariable(termNode, terms, localContext, verifyAhead);
33
+ termVerified = termVerifiedAsVariable; ///
34
+ }
35
+ if (!termVerified) {
36
+ var termUnified = unifyTermFunctions.some(function(unifyTermFunction) {
37
+ var termUnified = unifyTermFunction(termNode, terms, localContext, verifyAhead);
38
+ if (termUnified) {
39
+ return true;
40
+ }
41
+ });
42
+ termVerified = termUnified; ///
43
+ }
37
44
  if (termVerified) {
38
45
  localContext.debug("...verified the '".concat(termString, "' term."), termNode);
39
46
  }
@@ -49,10 +56,10 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
49
56
  if (variableNode !== null) {
50
57
  var termString = localContext.nodeAsString(termNode);
51
58
  localContext.trace("Verifying the '".concat(termString, "' term as a variable..."), termNode);
52
- var variable = localContext.findVariableByVariableNode(variableNode);
53
- if (variable !== null) {
59
+ var variables = [], variableVerified = verifyVariable(variableNode, variables, localContext);
60
+ if (variableVerified) {
54
61
  var verifiedAhead;
55
- var type = variable.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
62
+ var firstVariable = (0, _array.first)(variables), variable = firstVariable, type = variable.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
56
63
  terms.push(term);
57
64
  verifiedAhead = verifyAhead();
58
65
  terms.pop();
@@ -64,54 +71,21 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
64
71
  }
65
72
  return termVerifiedAsVariable;
66
73
  }
67
- function unifyTermWithConstructors(termNode, terms, localContext, verifyAhead) {
68
- var termUnifiedWithConstructors = false;
69
- var variableNode = variableNodeQuery(termNode);
70
- if (variableNode === null) {
71
- var constructors = localContext.getConstructors();
72
- termUnifiedWithConstructors = constructors.some(function(constructor) {
73
- var termUnifiedWithConstructor = unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead);
74
- if (termUnifiedWithConstructor) {
75
- return true;
76
- }
77
- });
78
- }
79
- return termUnifiedWithConstructors;
80
- }
81
- function unifyTermWithBracketedConstructor(termNode, terms, localContext, verifyAhead) {
82
- var termUnifiedWithBracketedConstructor;
83
- var termString = localContext.nodeAsString(termNode), bracketedTerms = [];
84
- localContext.trace("Unifying the '".concat(termString, "' term with the bracketed constructor..."), termNode);
85
- termUnifiedWithBracketedConstructor = unifyTermWithConstructor(termNode, bracketedTerms, _bracketed.default, localContext, function() {
86
- var verifiedAhead;
87
- var bracketedTermNode = termNode; ///
88
- termNode = termNodeQuery(bracketedTermNode); ///
89
- var termVVerified = verifyTerm(termNode, terms, localContext, verifyAhead);
90
- verifiedAhead = termVVerified; ///
91
- return verifiedAhead;
92
- });
93
- if (termUnifiedWithBracketedConstructor) {
94
- localContext.debug("...unified the '".concat(termString, "' term with the bracketed constructor."), termNode);
95
- }
96
- return termUnifiedWithBracketedConstructor;
97
- }
98
- function unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead) {
99
- var termUnifiedWithConstructor = false;
100
- var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString(), constructorTermNode = constructor.getTermNode();
101
- localContext.trace("Unifying the '".concat(termString, "' term with the '").concat(constructorString, "' constructor..."), termNode);
102
- var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termWithConstructor.default.unify(termNodeA, constructorTermNodeB, localContext);
103
- if (unified) {
104
- var verifiedAhead;
105
- var type = constructor.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
106
- terms.push(term);
107
- verifiedAhead = verifyAhead();
108
- terms.pop();
109
- termUnifiedWithConstructor = verifiedAhead; ///
74
+ function verifyVariable(variableNode, variables, localContext) {
75
+ var variableVerified = false;
76
+ var variableString = localContext.nodeAsString(variableNode);
77
+ localContext.trace("Verifying the '".concat(variableString, "' variable..."), variableNode);
78
+ var variable = localContext.findVariableByVariableNode(variableNode);
79
+ if (variable === null) {
80
+ localContext.trace("The '".concat(variableString, "' variable is not present."), variableNode);
81
+ } else {
82
+ variables.push(variable);
83
+ variableVerified = true;
110
84
  }
111
- if (termUnifiedWithConstructor) {
112
- localContext.debug("...unified the '".concat(termString, "' term with the '").concat(constructorString, "' constructor."), termNode);
85
+ if (variableVerified) {
86
+ localContext.debug("...verified the '".concat(variableString, "' variable."), variableNode);
113
87
  }
114
- return termUnifiedWithConstructor;
88
+ return variableVerified;
115
89
  }
116
90
 
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1XaXRoQ29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cbiAgaWYgKHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgdGVybXMucG9wKCk7XG5cbiAgICB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvciA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyIsInVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm0iLCJUZXJtIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsInB1c2giLCJwb3AiLCJ0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtcyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtVlZlcmlmaWVkIiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0Q0E7OztlQUFBOzs7MkRBMUNpQjsyREFDQTtnRUFDZ0I7MEVBQ007cUJBRWI7Ozs7OztBQUUxQixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsU0FBU0UsV0FBV0MsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUM1RCxJQUFJQztJQUVKLElBQU1DLGFBQWFILGFBQWFJLFlBQVksQ0FBQ047SUFFN0NFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlMO0lBRTVELElBQU1RLHNCQUFzQjtRQUMxQkM7UUFDQUM7UUFDQUM7S0FDRDtJQUVEUCxlQUFlSSxvQkFBb0JJLElBQUksQ0FBQyxTQUFDQztRQUN2QyxJQUFNVCxlQUFlUyxtQkFBbUJiLFVBQVVDLE9BQU9DLGNBQWNDO1FBRXZFLElBQUlDLGNBQWM7WUFDaEIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSxjQUFjO1FBQ2hCRixhQUFhWSxLQUFLLENBQUMsQUFB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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyBmcm9tIFwiLi4vdW5pZnkvdGVybVdpdGhDb25zdHJ1Y3RvcnNcIjtcbmltcG9ydCB1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL3VuaWZ5L3Rlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5jb25zdCB1bmlmeVRlcm1GdW5jdGlvbnMgPSBbXG4gICAgICAgIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcixcbiAgICAgICAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyxcbiAgICAgIF07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCwgdGVybU5vZGUpO1xuXG4gIGlmICghdGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICB0ZXJtVmVyaWZpZWQgPSB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlOyAvLy9cbiAgfVxuXG4gIGlmICghdGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgdGVybVVuaWZpZWQgPSB1bmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodW5pZnlUZXJtRnVuY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1VbmlmaWVkID0gdW5pZnlUZXJtRnVuY3Rpb24odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgaWYgKHRlcm1VbmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGVybVZlcmlmaWVkID0gdGVybVVuaWZpZWQ7IC8vL1xuICB9XG5cbiAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWQ7XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICB2ZXJpZnlUZXJtXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmVyaWZ5VGVybTtcblxuZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS4uLmAsIHRlcm1Ob2RlKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHZhcmlhYmxlVmVyaWZpZWQgPSB2ZXJpZnlWYXJpYWJsZSh2YXJpYWJsZU5vZGUsIHZhcmlhYmxlcywgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmICh2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICB2YXJpYWJsZSA9IGZpcnN0VmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVZhcmlhYmxlKHZhcmlhYmxlTm9kZSwgdmFyaWFibGVzLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodmFyaWFibGVOb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmAsIHZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgdmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICBpZiAodmFyaWFibGUgPT09IG51bGwpIHtcbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmAsIHZhcmlhYmxlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyaWFibGVzLnB1c2godmFyaWFibGUpO1xuXG4gICAgdmFyaWFibGVWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICBpZiAodmFyaWFibGVWZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuYCwgdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZhcmlhYmxlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidW5pZnlUZXJtRnVuY3Rpb25zIiwidW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyIsInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZSIsInRlcm1zIiwibG9jYWxDb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJ0ZXJtVmVyaWZpZWQiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ0ZXJtVW5pZmllZCIsInNvbWUiLCJ1bmlmeVRlcm1GdW5jdGlvbiIsImRlYnVnIiwiT2JqZWN0IiwiYXNzaWduIiwic2hpbSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlcyIsInZhcmlhYmxlVmVyaWZpZWQiLCJ2ZXJpZnlWYXJpYWJsZSIsInZlcmlmaWVkQWhlYWQiLCJmaXJzdFZhcmlhYmxlIiwiZmlyc3QiLCJ2YXJpYWJsZSIsInR5cGUiLCJnZXRUeXBlIiwidGVybSIsIlRlcm0iLCJmcm9tVGVybU5vZGVBbmRUeXBlIiwicHVzaCIsInBvcCIsInZhcmlhYmxlU3RyaW5nIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFEQTs7O2VBQUE7OzsyREFuRGlCOzJEQUNBOzJFQUNxQjttRkFDUTtxQkFFeEI7cUJBQ0k7Ozs7OztBQUUxQixJQUFNQSxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsSUFBTUMscUJBQXFCO0lBQ25CQyxxQ0FBaUM7SUFDakNDLDZCQUF5QjtDQUMxQjtBQUVQLFNBQVNDLFdBQVdDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxZQUFZLEVBQUVDLFdBQVc7SUFDNUQsSUFBSUMsZUFBZTtJQUVuQixJQUFNQyxhQUFhSCxhQUFhSSxZQUFZLENBQUNOO0lBRTdDRSxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBNEIsT0FBWEYsWUFBVyxjQUFZTDtJQUU1RCxJQUFJLENBQUNJLGNBQWM7UUFDakIsSUFBTUkseUJBQXlCQyxxQkFBcUJULFVBQVVDLE9BQU9DLGNBQWNDO1FBRW5GQyxlQUFlSSx3QkFBd0IsR0FBRztJQUM1QztJQUVBLElBQUksQ0FBQ0osY0FBYztRQUNqQixJQUFNTSxjQUFjZCxtQkFBbUJlLElBQUksQ0FBQyxTQUFDQztZQUMzQyxJQUFNRixjQUFjRSxrQkFBa0JaLFVBQVVDLE9BQU9DLGNBQWNDO1lBRXJFLElBQUlPLGFBQWE7Z0JBQ2YsT0FBTztZQUNUO1FBQ0Y7UUFFQU4sZUFBZU0sYUFBYSxHQUFHO0lBQ2pDO0lBRUEsSUFBSU4sY0FBYztRQUNoQkYsYUFBYVcsS0FBSyxDQUFDLEFBQUMsb0JBQThCLE9BQVhSLFlBQVcsWUFBVUw7SUFDOUQ7SUFFQSxPQUFPSTtBQUNUO0FBRUFVLE9BQU9DLE1BQU0sQ0FBQ0MsYUFBSSxFQUFFO0lBQ2xCakIsWUFBQUE7QUFDRjtJQUVBLFdBQWVBO0FBRWYsU0FBU1UscUJBQXFCVCxRQUFRLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ3RFLElBQUlLLHlCQUF5QjtJQUU3QixJQUFNUyxlQUFldkIsa0JBQWtCTTtJQUV2QyxJQUFJaUIsaUJBQWlCLE1BQU07UUFDekIsSUFBTVosYUFBYUgsYUFBYUksWUFBWSxDQUFDTjtRQUU3Q0UsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQTRCLE9BQVhGLFlBQVcsNEJBQTBCTDtRQUUxRSxJQUFNa0IsWUFBWSxFQUFFLEVBQ2RDLG1CQUFtQkMsZUFBZUgsY0FBY0MsV0FBV2hCO1FBRWpFLElBQUlpQixrQkFBa0I7WUFDcEIsSUFBSUU7WUFFSixJQUFNQyxnQkFBZ0JDLElBQUFBLFlBQUssRUFBQ0wsWUFDdEJNLFdBQVdGLGVBQ1hHLE9BQU9ELFNBQVNFLE9BQU8sSUFDdkJDLE9BQU9DLGFBQUksQ0FBQ0MsbUJBQW1CLENBQUM3QixVQUFVeUI7WUFFaER4QixNQUFNNkIsSUFBSSxDQUFDSDtZQUVYTixnQkFBZ0JsQjtZQUVoQkYsTUFBTThCLEdBQUc7WUFFVHZCLHlCQUF5QmEsZUFBZSxHQUFHO1FBQzdDO1FBRUEsSUFBSWIsd0JBQXdCO1lBQzFCTixhQUFhVyxLQUFLLENBQUMsQUFBQyxvQkFBOEIsT0FBWFIsWUFBVywwQkFBd0JMO1FBQzVFO0lBQ0Y7SUFFQSxPQUFPUTtBQUNUO0FBRUEsU0FBU1ksZUFBZUgsWUFBWSxFQUFFQyxTQUFTLEVBQUVoQixZQUFZO0lBQzNELElBQUlpQixtQkFBbUI7SUFFdkIsSUFBTWEsaUJBQWlCOUIsYUFBYUksWUFBWSxDQUFDVztJQUVqRGYsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQWdDLE9BQWZ5QixnQkFBZSxrQkFBZ0JmO0lBRXBFLElBQU1PLFdBQVd0QixhQUFhK0IsMEJBQTBCLENBQUNoQjtJQUV6RCxJQUFJTyxhQUFhLE1BQU07UUFDckJ0QixhQUFhSyxLQUFLLENBQUMsQUFBQyxRQUFzQixPQUFmeUIsZ0JBQWUsK0JBQTZCZjtJQUN6RSxPQUFPO1FBQ0xDLFVBQVVZLElBQUksQ0FBQ047UUFFZkwsbUJBQW1CO0lBQ3JCO0lBRUEsSUFBSUEsa0JBQWtCO1FBQ3BCakIsYUFBYVcsS0FBSyxDQUFDLEFBQUMsb0JBQWtDLE9BQWZtQixnQkFBZSxnQkFBY2Y7SUFDdEU7SUFFQSxPQUFPRTtBQUNUIn0=
@@ -25,7 +25,7 @@ function verifyTermAsConstructor(termNode, typeNode, fileContext) {
25
25
  if (typeVerified) {
26
26
  var firstType = (0, _array.first)(types);
27
27
  type = firstType; ///
28
- termVerifiedAsConstructor = _termAsConstructor.default.verify(termNode, fileContext);
28
+ termVerifiedAsConstructor = _termAsConstructor.default.verifyTerm(termNode, fileContext);
29
29
  }
30
30
  if (termVerifiedAsConstructor) {
31
31
  var tokens = fileContext.getTokens(), constructor = _constructor.default.fromTermNodeTypeAndTokens(termNode, type, tokens);
@@ -55,4 +55,4 @@ function verifyType(typeNode, types, fileContext) {
55
55
  return typeVerified;
56
56
  }
57
57
 
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBDb25zdHJ1Y3RvciBmcm9tIFwiLi4vY29uc3RydWN0b3JcIjtcbmltcG9ydCB0ZXJtQXNDb25zdHJ1Y3RvclZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci90ZXJtQXNDb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzQ29uc3RydWN0b3IodGVybU5vZGUsIHR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGZpbGVDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgdHlwZVZlcmlmaWVkID0gdmVyaWZ5VHlwZSh0eXBlTm9kZSwgdHlwZXMsIGZpbGVDb250ZXh0KTtcblxuICBsZXQgdHlwZTtcblxuICBpZiAodHlwZVZlcmlmaWVkKSB7XG4gICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpO1xuXG4gICAgdHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yID0gdGVybUFzQ29uc3RydWN0b3JWZXJpZmllci52ZXJpZnkodGVybU5vZGUsIGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgdG9rZW5zID0gZmlsZUNvbnRleHQuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tVGVybU5vZGVUeXBlQW5kVG9rZW5zKHRlcm1Ob2RlLCB0eXBlLCB0b2tlbnMpO1xuXG4gICAgZmlsZUNvbnRleHQuYWRkQ29uc3RydWN0b3IoY29uc3RydWN0b3IpO1xuICB9XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVR5cGUodHlwZU5vZGUsIHR5cGVzLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdHlwZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKHR5cGVOb2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgdHlwZSA9IG51bGw7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOb2RlKHR5cGVOb2RlKTtcblxuICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICB0eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgICB0eXBlVmVyaWZpZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVOb2RlKTtcblxuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0eXBlTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR5cGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtQXNDb25zdHJ1Y3RvciIsInRlcm1Ob2RlIiwidHlwZU5vZGUiLCJmaWxlQ29udGV4dCIsInRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJ0eXBlcyIsInR5cGVWZXJpZmllZCIsInZlcmlmeVR5cGUiLCJ0eXBlIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJ0ZXJtQXNDb25zdHJ1Y3RvclZlcmlmaWVyIiwidmVyaWZ5IiwidG9rZW5zIiwiZ2V0VG9rZW5zIiwiY29uc3RydWN0b3IiLCJDb25zdHJ1Y3RvciIsImZyb21UZXJtTm9kZVR5cGVBbmRUb2tlbnMiLCJhZGRDb25zdHJ1Y3RvciIsInB1c2giLCJmaW5kVHlwZUJ5VHlwZU5vZGUiLCJ0eXBlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQXdCQTs7O2tFQUxBO3dFQUNjO3FCQUVoQjs7Ozs7O0FBRVAsU0FBU0Esd0JBQXdCQyxRQUFRLEVBQUVDLFFBQVEsRUFBRUMsV0FBVztJQUM3RSxJQUFJQyw0QkFBNEI7SUFFaEMsSUFBTUMsYUFBYUYsWUFBWUcsWUFBWSxDQUFDTDtJQUU1Q0UsWUFBWUksS0FBSyxDQUFDLEFBQUMsa0JBQTRCLE9BQVhGLFlBQVcsK0JBQTZCSjtJQUU1RSxJQUFNTyxRQUFRLEVBQUUsRUFDVkMsZUFBZUMsV0FBV1IsVUFBVU0sT0FBT0w7SUFFakQsSUFBSVE7SUFFSixJQUFJRixjQUFjO1FBQ2hCLElBQU1HLFlBQVlDLElBQUFBLFlBQUssRUFBQ0w7UUFFeEJHLE9BQU9DLFdBQVcsR0FBRztRQUVyQlIsNEJBQTRCVSwwQkFBeUIsQ0FBQ0MsTUFBTSxDQUFDZCxVQUFVRTtJQUN6RTtJQUVBLElBQUlDLDJCQUEyQjtRQUM3QixJQUFNWSxTQUFTYixZQUFZYyxTQUFTLElBQzlCQyxjQUFjQyxvQkFBVyxDQUFDQyx5QkFBeUIsQ0FBQ25CLFVBQVVVLE1BQU1LO1FBRTFFYixZQUFZa0IsY0FBYyxDQUFDSDtJQUM3QjtJQUVBLElBQUlkLDJCQUEyQjtRQUM3QkQsWUFBWUksS0FBSyxDQUFDLEFBQUMsb0JBQThCLE9BQVhGLFlBQVcsNkJBQTJCSjtJQUM5RTtJQUVBLE9BQU9HO0FBQ1Q7QUFFQSxTQUFTTSxXQUFXUixRQUFRLEVBQUVNLEtBQUssRUFBRUwsV0FBVztJQUM5QyxJQUFJTSxlQUFlO0lBRW5CLElBQUlQLGFBQWEsTUFBTTtRQUNyQixJQUFNUyxPQUFPO1FBRWJILE1BQU1jLElBQUksQ0FBQ1g7UUFFWEYsZUFBZTtJQUNqQixPQUFPO1FBQ0wsSUFBTUUsUUFBT1IsWUFBWW9CLGtCQUFrQixDQUFDckI7UUFFNUMsSUFBSVMsVUFBUyxNQUFNO1lBQ2pCSCxNQUFNYyxJQUFJLENBQUNYO1lBRVhGLGVBQWU7UUFDakIsT0FBTztZQUNMLElBQU1lLGFBQWFyQixZQUFZRyxZQUFZLENBQUNKO1lBRTVDQyxZQUFZSSxLQUFLLENBQUMsQUFBQyxRQUFrQixPQUFYaUIsWUFBVywyQkFBeUJ0QjtRQUNoRTtJQUNGO0lBRUEsT0FBT087QUFDVCJ9
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBDb25zdHJ1Y3RvciBmcm9tIFwiLi4vY29uc3RydWN0b3JcIjtcbmltcG9ydCB0ZXJtQXNDb25zdHJ1Y3RvclZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci90ZXJtQXNDb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzQ29uc3RydWN0b3IodGVybU5vZGUsIHR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGZpbGVDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgdHlwZVZlcmlmaWVkID0gdmVyaWZ5VHlwZSh0eXBlTm9kZSwgdHlwZXMsIGZpbGVDb250ZXh0KTtcblxuICBsZXQgdHlwZTtcblxuICBpZiAodHlwZVZlcmlmaWVkKSB7XG4gICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpO1xuXG4gICAgdHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yID0gdGVybUFzQ29uc3RydWN0b3JWZXJpZmllci52ZXJpZnlUZXJtKHRlcm1Ob2RlLCBmaWxlQ29udGV4dCk7XG4gIH1cblxuICBpZiAodGVybVZlcmlmaWVkQXNDb25zdHJ1Y3Rvcikge1xuICAgIGNvbnN0IHRva2VucyA9IGZpbGVDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbVRlcm1Ob2RlVHlwZUFuZFRva2Vucyh0ZXJtTm9kZSwgdHlwZSwgdG9rZW5zKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIGNvbnN0cnVjdG9yLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUeXBlKHR5cGVOb2RlLCB0eXBlcywgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHR5cGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHR5cGUgPSBudWxsO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcblxuICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgdHlwZXMucHVzaCh0eXBlKTtcblxuICAgICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCwgdHlwZU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VGVybUFzQ29uc3RydWN0b3IiLCJ0ZXJtTm9kZSIsInR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsImRlYnVnIiwidHlwZXMiLCJ0eXBlVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlIiwidHlwZSIsImZpcnN0VHlwZSIsImZpcnN0IiwidGVybUFzQ29uc3RydWN0b3JWZXJpZmllciIsInZlcmlmeVRlcm0iLCJ0b2tlbnMiLCJnZXRUb2tlbnMiLCJjb25zdHJ1Y3RvciIsIkNvbnN0cnVjdG9yIiwiZnJvbVRlcm1Ob2RlVHlwZUFuZFRva2VucyIsImFkZENvbnN0cnVjdG9yIiwicHVzaCIsImZpbmRUeXBlQnlUeXBlTm9kZSIsInR5cGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBd0JBOzs7a0VBTEE7d0VBQ2M7cUJBRWhCOzs7Ozs7QUFFUCxTQUFTQSx3QkFBd0JDLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxXQUFXO0lBQzdFLElBQUlDLDRCQUE0QjtJQUVoQyxJQUFNQyxhQUFhRixZQUFZRyxZQUFZLENBQUNMO0lBRTVDRSxZQUFZSSxLQUFLLENBQUMsQUFBQyxrQkFBNEIsT0FBWEYsWUFBVywrQkFBNkJKO0lBRTVFLElBQU1PLFFBQVEsRUFBRSxFQUNWQyxlQUFlQyxXQUFXUixVQUFVTSxPQUFPTDtJQUVqRCxJQUFJUTtJQUVKLElBQUlGLGNBQWM7UUFDaEIsSUFBTUcsWUFBWUMsSUFBQUEsWUFBSyxFQUFDTDtRQUV4QkcsT0FBT0MsV0FBVyxHQUFHO1FBRXJCUiw0QkFBNEJVLDBCQUF5QixDQUFDQyxVQUFVLENBQUNkLFVBQVVFO0lBQzdFO0lBRUEsSUFBSUMsMkJBQTJCO1FBQzdCLElBQU1ZLFNBQVNiLFlBQVljLFNBQVMsSUFDOUJDLGNBQWNDLG9CQUFXLENBQUNDLHlCQUF5QixDQUFDbkIsVUFBVVUsTUFBTUs7UUFFMUViLFlBQVlrQixjQUFjLENBQUNIO0lBQzdCO0lBRUEsSUFBSWQsMkJBQTJCO1FBQzdCRCxZQUFZSSxLQUFLLENBQUMsQUFBQyxvQkFBOEIsT0FBWEYsWUFBVyw2QkFBMkJKO0lBQzlFO0lBRUEsT0FBT0c7QUFDVDtBQUVBLFNBQVNNLFdBQVdSLFFBQVEsRUFBRU0sS0FBSyxFQUFFTCxXQUFXO0lBQzlDLElBQUlNLGVBQWU7SUFFbkIsSUFBSVAsYUFBYSxNQUFNO1FBQ3JCLElBQU1TLE9BQU87UUFFYkgsTUFBTWMsSUFBSSxDQUFDWDtRQUVYRixlQUFlO0lBQ2pCLE9BQU87UUFDTCxJQUFNRSxRQUFPUixZQUFZb0Isa0JBQWtCLENBQUNyQjtRQUU1QyxJQUFJUyxVQUFTLE1BQU07WUFDakJILE1BQU1jLElBQUksQ0FBQ1g7WUFFWEYsZUFBZTtRQUNqQixPQUFPO1lBQ0wsSUFBTWUsYUFBYXJCLFlBQVlHLFlBQVksQ0FBQ0o7WUFFNUNDLFlBQVlJLEtBQUssQ0FBQyxBQUFDLFFBQWtCLE9BQVhpQixZQUFXLDJCQUF5QnRCO1FBQ2hFO0lBQ0Y7SUFFQSxPQUFPTztBQUNUIn0=
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return verifyTermGivenType;
9
+ }
10
+ });
11
+ var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
12
+ var _array = require("../utilities/array");
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function verifyTermGivenType(termNode, type, localContext) {
19
+ var termVerifiedGivenType = false;
20
+ if (type !== null) {
21
+ var verifyTerm = _shim.default.verifyTerm, terms = [], termVerified = verifyTerm(termNode, terms, localContext, function() {
22
+ var verifiedAhead = false;
23
+ var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = term.getType(), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
24
+ if (termTypeEqualToOrSubTypeOfType) {
25
+ verifiedAhead = true;
26
+ }
27
+ return verifiedAhead;
28
+ });
29
+ termVerifiedGivenType = termVerified; ///
30
+ }
31
+ return termVerifiedGivenType;
32
+ }
33
+
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUdpdmVuVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVRlcm1HaXZlblR5cGUodGVybU5vZGUsIHR5cGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkR2l2ZW5UeXBlID0gZmFsc2U7XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IHZlcmlmeVRlcm0gfSA9IHNoaW0sXG4gICAgICAgICAgdGVybXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdFRlcm0gPSBmaXJzdCh0ZXJtcyksXG4gICAgICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtLCAvLy9cbiAgICAgICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICB0ZXJtVmVyaWZpZWRHaXZlblR5cGUgPSB0ZXJtVmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEdpdmVuVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtR2l2ZW5UeXBlIiwidGVybU5vZGUiLCJ0eXBlIiwibG9jYWxDb250ZXh0IiwidGVybVZlcmlmaWVkR2l2ZW5UeXBlIiwidmVyaWZ5VGVybSIsInNoaW0iLCJ0ZXJtcyIsInRlcm1WZXJpZmllZCIsInZlcmlmaWVkQWhlYWQiLCJmaXJzdFRlcm0iLCJmaXJzdCIsInRlcm0iLCJ0ZXJtVHlwZSIsImdldFR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUF3QkE7OzsyREFKUDtxQkFFSzs7Ozs7O0FBRVAsU0FBU0Esb0JBQW9CQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsWUFBWTtJQUN0RSxJQUFJQyx3QkFBd0I7SUFFNUIsSUFBSUYsU0FBUyxNQUFNO1FBQ2pCLElBQU0sQUFBRUcsYUFBZUMsYUFBSSxDQUFuQkQsWUFDRkUsUUFBUSxFQUFFLEVBQ1ZDLGVBQWVILFdBQVdKLFVBQVVNLE9BQU9KLGNBQWM7WUFDdkQsSUFBSU0sZ0JBQWdCO1lBRXBCLElBQU1DLFlBQVlDLElBQUFBLFlBQUssRUFBQ0osUUFDbEJLLE9BQU9GLFdBQ1BHLFdBQVdELEtBQUtFLE9BQU8sSUFDdkJDLGlDQUFpQ0YsU0FBU0csb0JBQW9CLENBQUNkO1lBRXJFLElBQUlhLGdDQUFnQztnQkFDbENOLGdCQUFnQjtZQUNsQjtZQUVBLE9BQU9BO1FBQ1Q7UUFFTkwsd0JBQXdCSSxjQUFjLEdBQUc7SUFDM0M7SUFFQSxPQUFPSjtBQUNUIn0=
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.960",
4
+ "version": "0.0.962",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import Variable from "../variable";
4
3
  import Equivalence from "../equivalence";
5
4
 
6
5
  import { last, reverse } from "../utilities/array";
@@ -235,26 +234,18 @@ class LocalContext {
235
234
 
236
235
  proofSteps = reverse(proofSteps); ///
237
236
 
238
- const localContextA = this, ///
239
- localContextB = localContext, ///
240
- statementNodeAB = statementNode, ///
241
- statementStringB = localContextA.nodeAsString(statementNodeAB);
242
-
243
- localContextB.trace(`Unifying the '${statementStringB}' statement...`, statementNodeAB);
244
-
245
237
  const equivalences = this.getEquivalences(),
238
+ localContextA = this, ///
239
+ localContextB = localContext, ///
240
+ statementNodeB = statementNode, ///
246
241
  statementUnified = proofSteps.some((proofStep) => {
247
- const statementUnified = proofStep.unifyStatement(statementNode, equivalences, localContextA, localContextB);
242
+ const statementUnified = proofStep.unifyStatement(statementNodeB, equivalences, localContextA, localContextB);
248
243
 
249
244
  if (statementUnified) {
250
245
  return true;
251
246
  }
252
247
  });
253
248
 
254
- if (statementUnified) {
255
- localContextB.debug(`...unified the '${statementStringB}' statement.`, statementNodeAB);
256
- }
257
-
258
249
  return statementUnified;
259
250
  }
260
251
 
package/src/proofStep.js CHANGED
@@ -17,22 +17,27 @@ export default class ProofStep {
17
17
  return this.statementNode;
18
18
  }
19
19
 
20
- unifyStatement(statementNode, equivalences, localContextA, localContextB) {
20
+ unifyStatement(statementNodeB, equivalences, localContextA, localContextB) {
21
21
  let statementUnified = false;
22
22
 
23
23
  if (this.statementNode !== null) {
24
24
  let statementUnifiedWithStatement = false;
25
25
 
26
26
  if (!statementUnifiedWithStatement) {
27
- const statementNodeA = statementNode, ///
28
- statementNodeB = this.statementNode; ///
27
+ const statementNodeA = this.statementNode; ///
29
28
 
30
29
  statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
31
30
  }
32
31
 
33
32
  if (!statementUnifiedWithStatement) {
34
- const statementNodeA = statementNode, ///
35
- statementNodeB = this.statementNode; ///
33
+ const statementNodeA = statementNodeB, ///
34
+ localContext = localContextA; ///
35
+
36
+ statementNodeB = this.statementNode; ///
37
+
38
+ localContextA = localContextB; ///
39
+
40
+ localContextB = localContext; ///
36
41
 
37
42
  statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
38
43
  }
@@ -29,14 +29,21 @@ export default class TermForVariableSubstitution extends Substitution {
29
29
  return node;
30
30
  }
31
31
 
32
- isTransformed(substitution) {
33
- const termNod = substitution.getTermNode(),
34
- variableNode = substitution.getVariableNode(),
35
- termNodeMatches = this.termNode.match(termNod),
36
- variableNodeMatches = this.variableNode.match(variableNode),
37
- transformed = ((!termNodeMatches) && (!variableNodeMatches));
38
-
39
- return transformed;
32
+ transformed(substitutions) {
33
+ let transformedSubstitution = null;
34
+
35
+ const transformedTermNode = transformTermNode(this.termNode, substitutions),
36
+ transformedVariableNode = transformVariableNode(this.variableNode, substitutions);
37
+
38
+ if ((transformedTermNode !== null) && (transformedVariableNode !== null)) {
39
+ const termNode = transformedTermNode, ///
40
+ variableNode = transformedVariableNode,
41
+ termForVariableSubstitution = new TermForVariableSubstitution(termNode, variableNode);
42
+
43
+ transformedSubstitution = termForVariableSubstitution; ///
44
+ }
45
+
46
+ return transformedSubstitution;
40
47
  }
41
48
 
42
49
  matchTermNode(termNode) {
@@ -95,22 +102,12 @@ export default class TermForVariableSubstitution extends Substitution {
95
102
  let termNode = substitution.getTermNode(),
96
103
  variableNode = substitution.getVariableNode();
97
104
 
98
- termNode = substituteTermNode(termNode, substitutions); ///
105
+ const transformedTermNode = transformTermNode(termNode, substitutions),
106
+ transformedVariableNode = transformVariableNode(variableNode, substitutions); ///
99
107
 
100
- variableNode = substituteVariableNode(variableNode, substitutions); ///
108
+ termNode = transformedTermNode; ///
101
109
 
102
- const termForVariableSubstitution = new TermForVariableSubstitution(variableNode, termNode);
103
-
104
- return termForVariableSubstitution;
105
- }
106
-
107
- static fromSubstitutionNodeAndSubstitutions(substitutionNode, substitutions) {
108
- let termNode = termNodeQuery(substitutionNode),
109
- variableNode = variableNodeQuery(substitutionNode);
110
-
111
- termNode = substituteTermNode(termNode, substitutions); ///
112
-
113
- variableNode = substituteVariableNode(variableNode, substitutions); ///
110
+ variableNode = transformedVariableNode; ///
114
111
 
115
112
  const termForVariableSubstitution = new TermForVariableSubstitution(variableNode, termNode);
116
113
 
@@ -118,7 +115,9 @@ export default class TermForVariableSubstitution extends Substitution {
118
115
  }
119
116
  }
120
117
 
121
- function substituteTermNode(termNode, substitutions) {
118
+ function transformTermNode(termNode, substitutions) {
119
+ let transformedTermNode = null;
120
+
122
121
  const termVariableNode = variableNodeQuery(termNode);
123
122
 
124
123
  if (termVariableNode !== null) {
@@ -126,31 +125,35 @@ function substituteTermNode(termNode, substitutions) {
126
125
  const substitutionMatchesVariableNode = substitution.matchVariableNode(termVariableNode);
127
126
 
128
127
  if (substitutionMatchesVariableNode) {
129
- termNode = substitution.getTermNode(); ///
128
+ const termNode = substitution.getTermNode();
129
+
130
+ transformedTermNode = termNode; ////
130
131
 
131
132
  return true;
132
133
  }
133
134
  });
134
135
  }
135
136
 
136
- return termNode;
137
+ return transformedTermNode;
137
138
  }
138
139
 
139
- function substituteVariableNode(variableNode, substitutions) {
140
+ function transformVariableNode(variableNode, substitutions) {
141
+ let transformedVariableNode = null;
142
+
140
143
  substitutions.someSubstitution((substitution) => {
141
144
  const substitutionMatchesVariableNode = substitution.matchVariableNode(variableNode);
142
145
 
143
146
  if (substitutionMatchesVariableNode) {
144
147
  const termNode = substitution.getTermNode(),
145
- termVariableNode = variableNodeQuery(termNode);
148
+ variableNode = variableNodeQuery(termNode);
146
149
 
147
- if (termVariableNode !== null) {
148
- variableNode = termVariableNode; ///
150
+ if (variableNode !== null) {
151
+ transformedVariableNode = variableNode; ///
149
152
 
150
153
  return true;
151
154
  }
152
155
  }
153
156
  });
154
157
 
155
- return variableNode;
158
+ return transformedVariableNode;
156
159
  }
@@ -12,12 +12,12 @@ const termNodeQuery = nodeQuery("/term!"),
12
12
  statementNodeQuery = nodeQuery("/statement!");
13
13
 
14
14
  class StatementWithCombinatorUnifier extends Unifier {
15
- unify(statementNode, combinatorStatementNode, localContext) {
15
+ unify(statementNode, combinatorStatementNode, assignments, derived, localContext) {
16
16
  let statementUnifiedWithCombinator;
17
17
 
18
18
  const nonTerminalNodeA = statementNode, ///
19
19
  nonTerminalNodeB = combinatorStatementNode, ///
20
- nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
20
+ nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, assignments, derived, localContext);
21
21
 
22
22
  statementUnifiedWithCombinator = nonTerminalNodeUnified; ///
23
23
 
@@ -28,10 +28,10 @@ class StatementWithCombinatorUnifier extends Unifier {
28
28
  {
29
29
  nodeQueryA: statementNodeQuery,
30
30
  nodeQueryB: metaTypeNodeQuery,
31
- unify: (statementNodeA, metaTypeNodeB, localContext) => {
31
+ unify: (statementNodeA, metaTypeNodeB, assignments, derived, localContext) => {
32
32
  const metaTypeNode = metaTypeNodeB, ///
33
33
  statementNode = statementNodeA, ///
34
- statementUnifiedWithMetaType = unifyStatementWithMetaType(statementNode, metaTypeNode, localContext);
34
+ statementUnifiedWithMetaType = unifyStatementWithMetaType(statementNode, metaTypeNode, assignments, derived, localContext);
35
35
 
36
36
  return statementUnifiedWithMetaType;
37
37
  }
@@ -39,7 +39,7 @@ class StatementWithCombinatorUnifier extends Unifier {
39
39
  {
40
40
  nodeQueryA: termNodeQuery,
41
41
  nodeQueryB: typeNodeQuery,
42
- unify: (termNodeA, typeNodeB, localContext) => {
42
+ unify: (termNodeA, typeNodeB, assignments, derived, localContext) => {
43
43
  const termNode = termNodeA, ///
44
44
  typeNode = typeNodeB, ///
45
45
  termUnifiedWithType = unifyTermWithType(termNode, typeNode, localContext);
@@ -1,30 +1,30 @@
1
1
  "use strict";
2
2
 
3
+ import Substitutions from "../substitutions";
3
4
  import metaLevelUnifier from "../unifier/metaLevel";
4
5
  import TermForVariableSubstitution from "../substitution/termForVariable";
5
6
 
6
7
  import { push } from "../utilities/array";
7
8
 
8
9
  export default function unifyStatementWithStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB) {
9
- let statementUnifiedWithtatement = false;
10
+ let statementUnifiedWithStatement = false;
10
11
 
11
- const termForVariableSubstitution = TermForVariableSubstitution.fromSubstitutionAndSubstitutions(substitution, substitutions),
12
- transformed = termForVariableSubstitution.isTransformed(substitution);
12
+ const transformedSubstitutions = Substitutions.fromNothing(),
13
+ transformedSubstitution = substitution.transformed(substitutions);
13
14
 
14
- let substitutionsA = []; ///
15
-
16
- if (transformed) {
17
- const substitutionA = termForVariableSubstitution; ///
18
-
19
- substitutionsA.push(substitutionA);
15
+ if (transformedSubstitution !== null) {
16
+ transformedSubstitutions.addSubstitution(transformedSubstitution, localContextA, localContextB);
20
17
  }
21
18
 
22
19
  const nodeA = statementNodeA, ///
23
20
  nodeB = statementNodeB, ///
24
- unified = metaLevelUnifier.unify(nodeA, nodeB, substitutionsA, localContextA, localContextB);
21
+ unified = metaLevelUnifier.unify(nodeA, nodeB, transformedSubstitutions, localContextA, localContextB);
25
22
 
26
23
  if (unified) {
27
- if (!transformed) {
24
+ if (transformedSubstitution === null) {
25
+
26
+ debugger
27
+
28
28
  const substitutionB = termForVariableSubstitution, ///
29
29
  substitutionsB = [
30
30
  substitutionB
@@ -35,10 +35,10 @@ export default function unifyStatementWithStatement(statementNodeA, statementNod
35
35
  push(substitutions, substitutionsA);
36
36
  }
37
37
 
38
- statementUnifiedWithtatement = true;
38
+ statementUnifiedWithStatement = true;
39
39
  }
40
40
 
41
- return statementUnifiedWithtatement;
41
+ return statementUnifiedWithStatement;
42
42
  }
43
43
 
44
44
  function transformSubstitutions(substitutionsA, substitutionsB) {
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import bracketedCombinator from "../ocmbinator/bracketed";
4
+ import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
5
+
6
+ export default function unifyStatementWithBracketedCombinator(statementNode, assignments, derived, localContext) {
7
+ let statementUnifiedWithBracketedCombinator;
8
+
9
+ const statementString = localContext.nodeAsString(statementNode);
10
+
11
+ localContext.trace(`Unifying the '${statementString}' statement with the bracketed combinator...`, statementNode);
12
+
13
+ const bracketedCombinatorStatementNode = bracketedCombinator.getStatementNode();
14
+
15
+ statementUnifiedWithBracketedCombinator = statementWithCombinatorUnifier.unify(statementNode, bracketedCombinatorStatementNode, assignments, derived, localContext);
16
+
17
+ if (statementUnifiedWithBracketedCombinator) {
18
+ localContext.debug(`...unified the '${statementString}' statement with the bracketed combinator.`, statementNode);
19
+ }
20
+
21
+ return statementUnifiedWithBracketedCombinator;
22
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
4
+
5
+ export default function unifyStatementWithCombinators(statementNode, assignments, derived, localContext) {
6
+ let statementUnifiedWithCombinators;
7
+
8
+ const combinators = localContext.getCombinators();
9
+
10
+ statementUnifiedWithCombinators = combinators.some((combinator) => {
11
+ const statementUnifiedWithCombinator = unifyStatementWithCombinator(statementNode, combinator, assignments, derived, localContext);
12
+
13
+ if (statementUnifiedWithCombinator) {
14
+ return true;
15
+ }
16
+ });
17
+
18
+ return statementUnifiedWithCombinators;
19
+ }
20
+
21
+ function unifyStatementWithCombinator(statementNode, combinator, assignments, derived, localContext) {
22
+ let statementUnifiedWithCombinator;
23
+
24
+ const statementString = localContext.nodeAsString(statementNode),
25
+ combinatorString = combinator.getString();
26
+
27
+ localContext.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`, statementNode);
28
+
29
+ const combinatorStatementNode = combinator.getStatementNode();
30
+
31
+ statementUnifiedWithCombinator = statementWithCombinatorUnifier.unify(statementNode, combinatorStatementNode, assignments, derived, localContext);
32
+
33
+ if (statementUnifiedWithCombinator) {
34
+ localContext.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`, statementNode);
35
+ }
36
+
37
+ return statementUnifiedWithCombinator;
38
+ }