occam-verify-cli 0.0.1067 → 0.0.1069

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 (137) hide show
  1. package/bin/action/verify.js +3 -2
  2. package/lib/assertion/contained.js +2 -2
  3. package/lib/assertion/defined.js +2 -2
  4. package/lib/assertion/subproof.js +3 -3
  5. package/lib/assignment/judgement.js +3 -3
  6. package/lib/axiom.js +11 -6
  7. package/lib/combinator.js +9 -9
  8. package/lib/conclusion.js +13 -10
  9. package/lib/conjecture.js +11 -6
  10. package/lib/consequent.js +13 -10
  11. package/lib/constructor.js +9 -9
  12. package/lib/context/file.js +34 -126
  13. package/lib/context/local.js +16 -5
  14. package/lib/context/release.js +2 -3
  15. package/lib/declaration.js +96 -2
  16. package/lib/equivalence.js +2 -2
  17. package/lib/frame.js +179 -98
  18. package/lib/index.js +22 -6
  19. package/lib/judgement.js +84 -5
  20. package/lib/label.js +12 -8
  21. package/lib/lemma.js +12 -12
  22. package/lib/metaLemma.js +120 -8
  23. package/lib/metaType.js +24 -3
  24. package/lib/metatheorem.js +145 -9
  25. package/lib/metavariable.js +128 -43
  26. package/lib/mixins/statement/qualified/unify.js +6 -10
  27. package/lib/mixins/statement/unify.js +4 -19
  28. package/lib/mixins/statement/verify.js +13 -13
  29. package/lib/mixins/term/unify.js +2 -2
  30. package/lib/premise.js +21 -13
  31. package/lib/reference.js +17 -17
  32. package/lib/rule.js +28 -40
  33. package/lib/statement/unqualified.js +34 -9
  34. package/lib/statement.js +7 -5
  35. package/lib/substitution/frameForMetavariable.js +75 -70
  36. package/lib/substitution/statementForMetavariable.js +83 -42
  37. package/lib/substitution/termForVariable.js +65 -68
  38. package/lib/substitution.js +46 -43
  39. package/lib/substitutions.js +52 -40
  40. package/lib/supposition.js +15 -11
  41. package/lib/term.js +6 -11
  42. package/lib/theorem.js +11 -6
  43. package/lib/topLevelAssertion.js +24 -42
  44. package/lib/type.js +5 -12
  45. package/lib/unifier/intrinsicLevel.js +4 -4
  46. package/lib/unifier/metaLevel.js +11 -7
  47. package/lib/unifier/metavariable.js +6 -6
  48. package/lib/unifier/statementWithCombinator.js +16 -16
  49. package/lib/unifier/termWithConstructor.js +7 -7
  50. package/lib/utilities/brackets.js +10 -10
  51. package/lib/utilities/json.js +493 -0
  52. package/lib/utilities/node.js +26 -19
  53. package/lib/utilities/release.js +53 -0
  54. package/lib/utilities/releaseContext.js +4 -15
  55. package/lib/utilities/tokens.js +8 -1
  56. package/lib/variable.js +14 -15
  57. package/lib/verifier/topLevel.js +5 -5
  58. package/package.json +1 -1
  59. package/src/assertion/contained.js +1 -1
  60. package/src/assertion/defined.js +1 -1
  61. package/src/assertion/subproof.js +2 -3
  62. package/src/assignment/judgement.js +3 -4
  63. package/src/axiom.js +14 -6
  64. package/src/combinator.js +12 -13
  65. package/src/conclusion.js +16 -13
  66. package/src/conjecture.js +14 -6
  67. package/src/consequent.js +16 -13
  68. package/src/constructor.js +11 -13
  69. package/src/context/file.js +94 -202
  70. package/src/context/local.js +8 -6
  71. package/src/context/release.js +2 -3
  72. package/src/declaration.js +126 -45
  73. package/src/equivalence.js +2 -2
  74. package/src/frame.js +225 -141
  75. package/src/index.js +17 -1
  76. package/src/judgement.js +109 -3
  77. package/src/label.js +15 -10
  78. package/src/lemma.js +17 -10
  79. package/src/metaLemma.js +102 -1
  80. package/src/metaType.js +29 -3
  81. package/src/metatheorem.js +143 -2
  82. package/src/metavariable.js +189 -66
  83. package/src/mixins/statement/qualified/unify.js +7 -19
  84. package/src/mixins/statement/unify.js +3 -25
  85. package/src/mixins/statement/verify.js +15 -13
  86. package/src/mixins/term/unify.js +1 -1
  87. package/src/premise.js +31 -16
  88. package/src/reference.js +18 -18
  89. package/src/rule.js +40 -58
  90. package/src/statement/unqualified.js +41 -11
  91. package/src/statement.js +6 -3
  92. package/src/substitution/frameForMetavariable.js +85 -98
  93. package/src/substitution/statementForMetavariable.js +109 -45
  94. package/src/substitution/termForVariable.js +83 -94
  95. package/src/substitution.js +36 -34
  96. package/src/substitutions.js +53 -46
  97. package/src/supposition.js +22 -14
  98. package/src/term.js +5 -15
  99. package/src/theorem.js +14 -6
  100. package/src/topLevelAssertion.js +38 -64
  101. package/src/type.js +5 -20
  102. package/src/unifier/intrinsicLevel.js +4 -3
  103. package/src/unifier/metaLevel.js +19 -7
  104. package/src/unifier/metavariable.js +5 -5
  105. package/src/unifier/statementWithCombinator.js +19 -19
  106. package/src/unifier/termWithConstructor.js +7 -7
  107. package/src/utilities/brackets.js +5 -5
  108. package/src/utilities/json.js +551 -0
  109. package/src/utilities/node.js +28 -23
  110. package/src/{verify → utilities}/release.js +5 -1
  111. package/src/utilities/releaseContext.js +2 -2
  112. package/src/utilities/tokens.js +10 -0
  113. package/src/variable.js +18 -19
  114. package/src/verifier/topLevel.js +6 -4
  115. package/lib/argument.js +0 -106
  116. package/lib/metaTypes.js +0 -19
  117. package/lib/unify/metavariableWithFrame.js +0 -40
  118. package/lib/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +0 -31
  119. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +0 -45
  120. package/lib/verify/declaration.js +0 -83
  121. package/lib/verify/frame.js +0 -120
  122. package/lib/verify/judgement.js +0 -88
  123. package/lib/verify/metaLemma.js +0 -49
  124. package/lib/verify/metatheorem.js +0 -48
  125. package/lib/verify/metavariableGivenMetaType.js +0 -44
  126. package/lib/verify/release.js +0 -50
  127. package/src/argument.js +0 -79
  128. package/src/metaTypes.js +0 -11
  129. package/src/unify/metavariableWithFrame.js +0 -40
  130. package/src/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +0 -27
  131. package/src/unify/statementWithSttaemetnGivenEquivalences.js +0 -51
  132. package/src/verify/declaration.js +0 -113
  133. package/src/verify/frame.js +0 -157
  134. package/src/verify/judgement.js +0 -127
  135. package/src/verify/metaLemma.js +0 -72
  136. package/src/verify/metatheorem.js +0 -67
  137. package/src/verify/metavariableGivenMetaType.js +0 -45
@@ -13,15 +13,15 @@ var _error = /*#__PURE__*/ _interop_require_default(require("../error"));
13
13
  var _axiom = /*#__PURE__*/ _interop_require_default(require("../axiom"));
14
14
  var _lemma = /*#__PURE__*/ _interop_require_default(require("../lemma"));
15
15
  var _theorem = /*#__PURE__*/ _interop_require_default(require("../theorem"));
16
+ var _metaLemma = /*#__PURE__*/ _interop_require_default(require("../metaLemma"));
16
17
  var _conjecture = /*#__PURE__*/ _interop_require_default(require("../conjecture"));
18
+ var _metatheorem = /*#__PURE__*/ _interop_require_default(require("../metatheorem"));
17
19
  var _type = /*#__PURE__*/ _interop_require_default(require("../declaration/type"));
18
20
  var _variable = /*#__PURE__*/ _interop_require_default(require("../declaration/variable"));
19
21
  var _combinator = /*#__PURE__*/ _interop_require_default(require("../declaration/combinator"));
20
22
  var _constructor = /*#__PURE__*/ _interop_require_default(require("../declaration/constructor"));
21
23
  var _metavariable = /*#__PURE__*/ _interop_require_default(require("../declaration/metavariable"));
22
24
  var _verifier = /*#__PURE__*/ _interop_require_default(require("../verifier"));
23
- var _metaLemma = /*#__PURE__*/ _interop_require_default(require("../verify/metaLemma"));
24
- var _metatheorem = /*#__PURE__*/ _interop_require_default(require("../verify/metatheorem"));
25
25
  var _query = require("../utilities/query");
26
26
  function _assert_this_initialized(self) {
27
27
  if (self === void 0) {
@@ -173,7 +173,7 @@ _define_property(TopLevelVerifier, "maps", [
173
173
  {
174
174
  nodeQuery: metaLemmaNodeQuery,
175
175
  verify: function(metaLemmaNode, fileContext) {
176
- var metaLemmaVerified = (0, _metaLemma.default)(metaLemmaNode, fileContext);
176
+ var metaLemma = _metaLemma.default.fromMetaLemmaNode(metaLemmaNode, fileContext), metaLemmaVerified = metaLemma.verify();
177
177
  return metaLemmaVerified;
178
178
  }
179
179
  },
@@ -187,7 +187,7 @@ _define_property(TopLevelVerifier, "maps", [
187
187
  {
188
188
  nodeQuery: metatheoremNodeQuery,
189
189
  verify: function(metatheoremNode, fileContext) {
190
- var metatheoremVerified = (0, _metatheorem.default)(metatheoremNode, fileContext);
190
+ var metatheorem = _metatheorem.default.fromMetatheoremNode(metatheoremNode, fileContext), metatheoremVerified = metatheorem.verify();
191
191
  return metatheoremVerified;
192
192
  }
193
193
  },
@@ -230,4 +230,4 @@ _define_property(TopLevelVerifier, "maps", [
230
230
  var topLevelVerifier = new TopLevelVerifier();
231
231
  var _default = topLevelVerifier;
232
232
 
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci90b3BMZXZlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFJ1bGUgZnJvbSBcIi4uL3J1bGVcIjtcbmltcG9ydCBFcnJvciBmcm9tIFwiLi4vZXJyb3JcIjtcbmltcG9ydCBBeGlvbSBmcm9tIFwiLi4vYXhpb21cIjtcbmltcG9ydCBMZW1tYSBmcm9tIFwiLi4vbGVtbWFcIjtcbmltcG9ydCBUaGVvcmVtIGZyb20gXCIuLi90aGVvcmVtXCI7XG5pbXBvcnQgQ29uamVjdHVyZSBmcm9tIFwiLi4vY29uamVjdHVyZVwiO1xuaW1wb3J0IFR5cGVEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb24vdHlwZVwiO1xuaW1wb3J0IFZhcmlhYmxlRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uL3ZhcmlhYmxlXCI7XG5pbXBvcnQgQ29tYmluYXRvckRlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvbi9jb21iaW5hdG9yXCI7XG5pbXBvcnQgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb24vY29uc3RydWN0b3JcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlXCI7XG5cbmltcG9ydCBWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXJcIjtcbmltcG9ydCB2ZXJpZnlNZXRhTGVtbWEgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhTGVtbWFcIjtcbmltcG9ydCB2ZXJpZnlNZXRhdGhlb3JlbSBmcm9tIFwiLi4vdmVyaWZ5L21ldGF0aGVvcmVtXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgZXJyb3JOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXJyb3JcIiksXG4gICAgICBydWxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3J1bGVcIiksXG4gICAgICBheGlvbU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9heGlvbVwiKSxcbiAgICAgIGxlbW1hTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2xlbW1hXCIpLFxuICAgICAgdGhlb3JlbU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90aGVvcmVtXCIpLFxuICAgICAgbWV0YUxlbW1hTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFMZW1tYVwiKSxcbiAgICAgIGNvbmplY3R1cmVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uamVjdHVyZVwiKSxcbiAgICAgIG1ldGF0aGVvcmVtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF0aGVvcmVtXCIpLFxuICAgICAgdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVEZWNsYXJhdGlvblwiKSxcbiAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb21iaW5hdG9yRGVjbGFyYXRpb25cIiksXG4gICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvbnN0cnVjdG9yRGVjbGFyYXRpb25cIiksXG4gICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGVEZWNsYXJhdGlvblwiKTtcblxuY2xhc3MgVG9wTGV2ZWxWZXJpZmllciBleHRlbmRzIFZlcmlmaWVyIHtcbiAgdmVyaWZ5KG5vZGUsIGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkQXRUb3BMZXZlbDtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICB2ZXJpZmllZEF0VG9wTGV2ZWwgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuXG4gICAgcmV0dXJuIHZlcmlmaWVkQXRUb3BMZXZlbDtcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogZXJyb3JOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChlcnJvck5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gRXJyb3IuZnJvbUVycm9yTm9kZShlcnJvck5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgZXJyb3JWZXJpZmllZCA9IGVycm9yLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiBlcnJvclZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBydWxlTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAocnVsZU5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGUgPSBSdWxlLmZyb21SdWxlTm9kZShydWxlTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICBydWxlVmVyaWZpZWQgPSBydWxlLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiBydWxlVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGF4aW9tTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAoYXhpb21Ob2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBheGlvbSA9IEF4aW9tLmZyb21BeGlvbU5vZGUoYXhpb21Ob2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIGF4aW9tVmVyaWZpZWQgPSBheGlvbS52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gYXhpb21WZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogbGVtbWFOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChsZW1tYU5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbW1hID0gTGVtbWEuZnJvbUxlbW1hTm9kZShsZW1tYU5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgbGVtbWFWZXJpZmllZCA9IGxlbW1hLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiBsZW1tYVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0aGVvcmVtTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodGhlb3JlbU5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZW9yZW0gPSBUaGVvcmVtLmZyb21UaGVvcmVtTm9kZSh0aGVvcmVtTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICB0aGVvcmVtVmVyaWZpZWQgPSB0aGVvcmVtLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiB0aGVvcmVtVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGFMZW1tYU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKG1ldGFMZW1tYU5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGFMZW1tYVZlcmlmaWVkID0gdmVyaWZ5TWV0YUxlbW1hKG1ldGFMZW1tYU5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gbWV0YUxlbW1hVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGNvbmplY3R1cmVOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChjb25qZWN0dXJlTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUNvbmplY3R1cmVOb2RlKGNvbmplY3R1cmVOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIGNvbmplY3R1cmVWZXJpZmllZCA9IGNvbmplY3R1cmUudmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbmplY3R1cmVWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogbWV0YXRoZW9yZW1Ob2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChtZXRhdGhlb3JlbU5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGF0aGVvcmVtVmVyaWZpZWQgPSB2ZXJpZnlNZXRhdGhlb3JlbShtZXRhdGhlb3JlbU5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gbWV0YXRoZW9yZW1WZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodHlwZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdHlwZURlY2xhcmF0aW9uID0gVHlwZURlY2xhcmF0aW9uLmZyb21UeXBlRGVjbGFyYXRpb25Ob2RlKHR5cGVEZWNsYXJhdGlvbk5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZURlY2xhcmF0aW9uVmVyaWZpZWQgPSB0eXBlRGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVEZWNsYXJhdGlvblZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb24gPSBWYXJpYWJsZURlY2xhcmF0aW9uLmZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZWQgPSB2YXJpYWJsZURlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiB2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmF0b3JEZWNsYXJhdGlvbiA9IENvbWJpbmF0b3JEZWNsYXJhdGlvbi5mcm9tQ29tYmluYXRvckRlY2xhcmF0aW9uTm9kZShjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvblZlcmlmaWVkID0gY29tYmluYXRvckRlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb25WZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JEZWNsYXJhdGlvbi5mcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvblZlcmlmaWVkID0gY29uc3RydWN0b3JEZWNsYXJhdGlvbi52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvblZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24gPSBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbi5mcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVkID0gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCB0b3BMZXZlbFZlcmlmaWVyID0gbmV3IFRvcExldmVsVmVyaWZpZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgdG9wTGV2ZWxWZXJpZmllcjtcbiJdLCJuYW1lcyI6WyJlcnJvck5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJ1bGVOb2RlUXVlcnkiLCJheGlvbU5vZGVRdWVyeSIsImxlbW1hTm9kZVF1ZXJ5IiwidGhlb3JlbU5vZGVRdWVyeSIsIm1ldGFMZW1tYU5vZGVRdWVyeSIsImNvbmplY3R1cmVOb2RlUXVlcnkiLCJtZXRhdGhlb3JlbU5vZGVRdWVyeSIsInR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJUb3BMZXZlbFZlcmlmaWVyIiwidmVyaWZ5Iiwibm9kZSIsImZpbGVDb250ZXh0IiwidmVyaWZpZWRBdFRvcExldmVsIiwibm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJWZXJpZmllciIsIm1hcHMiLCJlcnJvck5vZGUiLCJlcnJvciIsIkVycm9yIiwiZnJvbUVycm9yTm9kZSIsImVycm9yVmVyaWZpZWQiLCJydWxlTm9kZSIsInJ1bGUiLCJSdWxlIiwiZnJvbVJ1bGVOb2RlIiwicnVsZVZlcmlmaWVkIiwiYXhpb21Ob2RlIiwiYXhpb20iLCJBeGlvbSIsImZyb21BeGlvbU5vZGUiLCJheGlvbVZlcmlmaWVkIiwibGVtbWFOb2RlIiwibGVtbWEiLCJMZW1tYSIsImZyb21MZW1tYU5vZGUiLCJsZW1tYVZlcmlmaWVkIiwidGhlb3JlbU5vZGUiLCJ0aGVvcmVtIiwiVGhlb3JlbSIsImZyb21UaGVvcmVtTm9kZSIsInRoZW9yZW1WZXJpZmllZCIsIm1ldGFMZW1tYU5vZGUiLCJtZXRhTGVtbWFWZXJpZmllZCIsInZlcmlmeU1ldGFMZW1tYSIsImNvbmplY3R1cmVOb2RlIiwiY29uamVjdHVyZSIsIkNvbmplY3R1cmUiLCJmcm9tQ29uamVjdHVyZU5vZGUiLCJjb25qZWN0dXJlVmVyaWZpZWQiLCJtZXRhdGhlb3JlbU5vZGUiLCJtZXRhdGhlb3JlbVZlcmlmaWVkIiwidmVyaWZ5TWV0YXRoZW9yZW0iLCJ0eXBlRGVjbGFyYXRpb25Ob2RlIiwidHlwZURlY2xhcmF0aW9uIiwiVHlwZURlY2xhcmF0aW9uIiwiZnJvbVR5cGVEZWNsYXJhdGlvbk5vZGUiLCJ0eXBlRGVjbGFyYXRpb25WZXJpZmllZCIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbiIsIlZhcmlhYmxlRGVjbGFyYXRpb24iLCJmcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZWQiLCJjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uIiwiQ29tYmluYXRvckRlY2xhcmF0aW9uIiwiZnJvbUNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUiLCJjb21iaW5hdG9yRGVjbGFyYXRpb25WZXJpZmllZCIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbiIsIkNvbnN0cnVjdG9yRGVjbGFyYXRpb24iLCJmcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbiIsIk1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwiZnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZWQiLCJ0b3BMZXZlbFZlcmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF1S0E7OztlQUFBOzs7MkRBcktpQjs0REFDQzs0REFDQTs0REFDQTs4REFDRTtpRUFDRzsyREFDSzsrREFDSTtpRUFDRTtrRUFDQzttRUFDQzsrREFFZjtnRUFDTztrRUFDRTtxQkFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFBTUEsaUJBQWlCQyxJQUFBQSxnQkFBUyxFQUFDLFdBQzNCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsVUFDMUJFLGlCQUFpQkYsSUFBQUEsZ0JBQVMsRUFBQyxXQUMzQkcsaUJBQWlCSCxJQUFBQSxnQkFBUyxFQUFDLFdBQzNCSSxtQkFBbUJKLElB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
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci90b3BMZXZlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFJ1bGUgZnJvbSBcIi4uL3J1bGVcIjtcbmltcG9ydCBFcnJvciBmcm9tIFwiLi4vZXJyb3JcIjtcbmltcG9ydCBBeGlvbSBmcm9tIFwiLi4vYXhpb21cIjtcbmltcG9ydCBMZW1tYSBmcm9tIFwiLi4vbGVtbWFcIjtcbmltcG9ydCBUaGVvcmVtIGZyb20gXCIuLi90aGVvcmVtXCI7XG5pbXBvcnQgTWV0YUxlbW1hIGZyb20gXCIuLi9tZXRhTGVtbWFcIjtcbmltcG9ydCBDb25qZWN0dXJlIGZyb20gXCIuLi9jb25qZWN0dXJlXCI7XG5pbXBvcnQgTWV0YXRoZW9yZW0gZnJvbSBcIi4uL21ldGF0aGVvcmVtXCI7XG5pbXBvcnQgVHlwZURlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvbi90eXBlXCI7XG5pbXBvcnQgVmFyaWFibGVEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb24vdmFyaWFibGVcIjtcbmltcG9ydCBDb21iaW5hdG9yRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uL2NvbWJpbmF0b3JcIjtcbmltcG9ydCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvbi9jb25zdHJ1Y3RvclwiO1xuaW1wb3J0IE1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvbi9tZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGVycm9yTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2Vycm9yXCIpLFxuICAgICAgcnVsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9ydWxlXCIpLFxuICAgICAgYXhpb21Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb21cIiksXG4gICAgICBsZW1tYU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9sZW1tYVwiKSxcbiAgICAgIHRoZW9yZW1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbVwiKSxcbiAgICAgIG1ldGFMZW1tYU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhTGVtbWFcIiksXG4gICAgICBjb25qZWN0dXJlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvbmplY3R1cmVcIiksXG4gICAgICBtZXRhdGhlb3JlbU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdGhlb3JlbVwiKSxcbiAgICAgIHR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlRGVjbGFyYXRpb25cIiksXG4gICAgICB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3ZhcmlhYmxlRGVjbGFyYXRpb25cIiksXG4gICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29tYmluYXRvckRlY2xhcmF0aW9uXCIpLFxuICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25cIik7XG5cbmNsYXNzIFRvcExldmVsVmVyaWZpZXIgZXh0ZW5kcyBWZXJpZmllciB7XG4gIHZlcmlmeShub2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZEF0VG9wTGV2ZWw7XG5cbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgdmVyaWZpZWRBdFRvcExldmVsID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7ICAvLy9cblxuICAgIHJldHVybiB2ZXJpZmllZEF0VG9wTGV2ZWw7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGVycm9yTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAoZXJyb3JOb2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IEVycm9yLmZyb21FcnJvck5vZGUoZXJyb3JOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIGVycm9yVmVyaWZpZWQgPSBlcnJvci52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gZXJyb3JWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogcnVsZU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKHJ1bGVOb2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBydWxlID0gUnVsZS5mcm9tUnVsZU5vZGUocnVsZU5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgcnVsZVZlcmlmaWVkID0gcnVsZS52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gcnVsZVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBheGlvbU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKGF4aW9tTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBBeGlvbS5mcm9tQXhpb21Ob2RlKGF4aW9tTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICBheGlvbVZlcmlmaWVkID0gYXhpb20udmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIGF4aW9tVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGxlbW1hTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAobGVtbWFOb2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsZW1tYSA9IExlbW1hLmZyb21MZW1tYU5vZGUobGVtbWFOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIGxlbW1hVmVyaWZpZWQgPSBsZW1tYS52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gbGVtbWFWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdGhlb3JlbU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKHRoZW9yZW1Ob2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0aGVvcmVtID0gVGhlb3JlbS5mcm9tVGhlb3JlbU5vZGUodGhlb3JlbU5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgdGhlb3JlbVZlcmlmaWVkID0gdGhlb3JlbS52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gdGhlb3JlbVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBtZXRhTGVtbWFOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChtZXRhTGVtbWFOb2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhTGVtbWEgPSBNZXRhTGVtbWEuZnJvbU1ldGFMZW1tYU5vZGUobWV0YUxlbW1hTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICBtZXRhTGVtbWFWZXJpZmllZCA9IG1ldGFMZW1tYS52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gbWV0YUxlbW1hVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGNvbmplY3R1cmVOb2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChjb25qZWN0dXJlTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUNvbmplY3R1cmVOb2RlKGNvbmplY3R1cmVOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIGNvbmplY3R1cmVWZXJpZmllZCA9IGNvbmplY3R1cmUudmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbmplY3R1cmVWZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogbWV0YXRoZW9yZW1Ob2RlUXVlcnksXG4gICAgICB2ZXJpZnk6IChtZXRhdGhlb3JlbU5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGF0aGVvcmVtID0gTWV0YXRoZW9yZW0uZnJvbU1ldGF0aGVvcmVtTm9kZShtZXRhdGhlb3JlbU5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgbWV0YXRoZW9yZW1WZXJpZmllZCA9IG1ldGF0aGVvcmVtLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiBtZXRhdGhlb3JlbVZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh0eXBlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlRGVjbGFyYXRpb24gPSBUeXBlRGVjbGFyYXRpb24uZnJvbVR5cGVEZWNsYXJhdGlvbk5vZGUodHlwZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICB0eXBlRGVjbGFyYXRpb25WZXJpZmllZCA9IHR5cGVEZWNsYXJhdGlvbi52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gdHlwZURlY2xhcmF0aW9uVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICB2ZXJpZnk6ICh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvbiA9IFZhcmlhYmxlRGVjbGFyYXRpb24uZnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllZCA9IHZhcmlhYmxlRGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAoY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29tYmluYXRvckRlY2xhcmF0aW9uID0gQ29tYmluYXRvckRlY2xhcmF0aW9uLmZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlKGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICAgICAgY29tYmluYXRvckRlY2xhcmF0aW9uVmVyaWZpZWQgPSBjb21iaW5hdG9yRGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmF0b3JEZWNsYXJhdGlvblZlcmlmaWVkO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb24gPSBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLmZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZShjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZWQgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZWQ7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbiA9IE1ldGF2YXJpYWJsZURlY2xhcmF0aW9uLmZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZWQgPSBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbi52ZXJpZnkoKTtcblxuICAgICAgICByZXR1cm4gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllZDtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHRvcExldmVsVmVyaWZpZXIgPSBuZXcgVG9wTGV2ZWxWZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCB0b3BMZXZlbFZlcmlmaWVyO1xuIl0sIm5hbWVzIjpbImVycm9yTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicnVsZU5vZGVRdWVyeSIsImF4aW9tTm9kZVF1ZXJ5IiwibGVtbWFOb2RlUXVlcnkiLCJ0aGVvcmVtTm9kZVF1ZXJ5IiwibWV0YUxlbW1hTm9kZVF1ZXJ5IiwiY29uamVjdHVyZU5vZGVRdWVyeSIsIm1ldGF0aGVvcmVtTm9kZVF1ZXJ5IiwidHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsIlRvcExldmVsVmVyaWZpZXIiLCJ2ZXJpZnkiLCJub2RlIiwiZmlsZUNvbnRleHQiLCJ2ZXJpZmllZEF0VG9wTGV2ZWwiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIlZlcmlmaWVyIiwibWFwcyIsImVycm9yTm9kZSIsImVycm9yIiwiRXJyb3IiLCJmcm9tRXJyb3JOb2RlIiwiZXJyb3JWZXJpZmllZCIsInJ1bGVOb2RlIiwicnVsZSIsIlJ1bGUiLCJmcm9tUnVsZU5vZGUiLCJydWxlVmVyaWZpZWQiLCJheGlvbU5vZGUiLCJheGlvbSIsIkF4aW9tIiwiZnJvbUF4aW9tTm9kZSIsImF4aW9tVmVyaWZpZWQiLCJsZW1tYU5vZGUiLCJsZW1tYSIsIkxlbW1hIiwiZnJvbUxlbW1hTm9kZSIsImxlbW1hVmVyaWZpZWQiLCJ0aGVvcmVtTm9kZSIsInRoZW9yZW0iLCJUaGVvcmVtIiwiZnJvbVRoZW9yZW1Ob2RlIiwidGhlb3JlbVZlcmlmaWVkIiwibWV0YUxlbW1hTm9kZSIsIm1ldGFMZW1tYSIsIk1ldGFMZW1tYSIsImZyb21NZXRhTGVtbWFOb2RlIiwibWV0YUxlbW1hVmVyaWZpZWQiLCJjb25qZWN0dXJlTm9kZSIsImNvbmplY3R1cmUiLCJDb25qZWN0dXJlIiwiZnJvbUNvbmplY3R1cmVOb2RlIiwiY29uamVjdHVyZVZlcmlmaWVkIiwibWV0YXRoZW9yZW1Ob2RlIiwibWV0YXRoZW9yZW0iLCJNZXRhdGhlb3JlbSIsImZyb21NZXRhdGhlb3JlbU5vZGUiLCJtZXRhdGhlb3JlbVZlcmlmaWVkIiwidHlwZURlY2xhcmF0aW9uTm9kZSIsInR5cGVEZWNsYXJhdGlvbiIsIlR5cGVEZWNsYXJhdGlvbiIsImZyb21UeXBlRGVjbGFyYXRpb25Ob2RlIiwidHlwZURlY2xhcmF0aW9uVmVyaWZpZWQiLCJ2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsInZhcmlhYmxlRGVjbGFyYXRpb24iLCJWYXJpYWJsZURlY2xhcmF0aW9uIiwiZnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVkIiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbiIsIkNvbWJpbmF0b3JEZWNsYXJhdGlvbiIsImZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uVmVyaWZpZWQiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb24iLCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwiZnJvbUNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvblZlcmlmaWVkIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb24iLCJNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiIsImZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVkIiwidG9wTGV2ZWxWZXJpZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBeUtBOzs7ZUFBQTs7OzJEQXZLaUI7NERBQ0M7NERBQ0E7NERBQ0E7OERBQ0U7Z0VBQ0U7aUVBQ0M7a0VBQ0M7MkRBQ0k7K0RBQ0k7aUVBQ0U7a0VBQ0M7bUVBQ0M7K0RBRWY7cUJBRUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGlCQUFpQkMsSUFBQUEsZ0JBQVMsRUFBQyxXQUMzQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLFVBQzFCRSxpQkFBaUJGLElBQUFBLGdCQUFTLEVBQUMsV0FDM0JHLGlCQUFpQkgsSUFBQUEsZ0JBQVMsRUFBQyxXQUMzQkksbUJBQW1CSixJQUFBQSxnQkFBUyxFQUFDLGFBQzdCSyxxQkFBcUJMLElBQUFBLGdCQUFTLEVBQUMsZUFDL0JNLHNCQUFzQk4sSUFBQUEsZ0JBQVMsRUFBQyxnQkFDaENPLHVCQUF1QlAsSUFBQUEsZ0JBQVMsRUFBQyxpQkFDakNRLDJCQUEyQlIsSUFBQUEsZ0JBQVMsRUFBQyxxQkFDckNTLCtCQUErQlQsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDekNVLGlDQUFpQ1YsSUFBQUEsZ0JBQVMsRUFBQywyQkFDM0NXLGtDQUFrQ1gsSUFBQUEsZ0JBQVMsRUFBQyw0QkFDNUNZLG1DQUFtQ1osSUFBQUEsZ0JBQVMsRUFBQztBQUVuRCxJQUFBLEFBQU1hLGlDQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtpQ0FBQUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9DLElBQUksRUFBRUMsV0FBVztnQkFDdEIsSUFBSUM7Z0JBRUosSUFBTUMsa0JBQWtCSCxNQUNsQkksMEJBQTBCLElBQUksQ0FBQ0MscUJBQXFCLENBQUNGLGlCQUFpQkY7Z0JBRTVFQyxxQkFBcUJFLHlCQUEwQixHQUFHO2dCQUVsRCxPQUFPRjtZQUNUOzs7V0FWSUo7RUFBeUJRLGlCQUFRO0FBWXJDLGlCQVpJUixrQkFZR1MsUUFBTztJQUNaO1FBQ0V0QixXQUFXRDtRQUNYZSxRQUFRLFNBQUNTLFdBQVdQO1lBQ2xCLElBQU1RLFFBQVFDLGNBQUssQ0FBQ0MsYUFBYSxDQUFDSCxXQUFXUCxjQUN2Q1csZ0JBQWdCSCxNQUFNVixNQUFNO1lBRWxDLE9BQU9hO1FBQ1Q7SUFDRjtJQUNBO1FBQ0UzQixXQUFXQztRQUNYYSxRQUFRLFNBQUNjLFVBQVVaO1lBQ2pCLElBQU1hLE9BQU9DLGFBQUksQ0FBQ0MsWUFBWSxDQUFDSCxVQUFVWixjQUNuQ2dCLGVBQWVILEtBQUtmLE1BQU07WUFFaEMsT0FBT2tCO1FBQ1Q7SUFDRjtJQUNBO1FBQ0VoQyxXQUFXRTtRQUNYWSxRQUFRLFNBQUNtQixXQUFXakI7WUFDbEIsSUFBTWtCLFFBQVFDLGNBQUssQ0FBQ0MsYUFBYSxDQUFDSCxXQUFXakIsY0FDdkNxQixnQkFBZ0JILE1BQU1wQixNQUFNO1lBRWxDLE9BQU91QjtRQUNUO0lBQ0Y7SUFDQTtRQUNFckMsV0FBV0c7UUFDWFcsUUFBUSxTQUFDd0IsV0FBV3RCO1lBQ2xCLElBQU11QixRQUFRQyxjQUFLLENBQUNDLGFBQWEsQ0FBQ0gsV0FBV3RCLGNBQ3ZDMEIsZ0JBQWdCSCxNQUFNekIsTUFBTTtZQUVsQyxPQUFPNEI7UUFDVDtJQUNGO0lBQ0E7UUFDRTFDLFdBQVdJO1FBQ1hVLFFBQVEsU0FBQzZCLGFBQWEzQjtZQUNwQixJQUFNNEIsVUFBVUMsZ0JBQU8sQ0FBQ0MsZUFBZSxDQUFDSCxhQUFhM0IsY0FDL0MrQixrQkFBa0JILFFBQVE5QixNQUFNO1lBRXRDLE9BQU9pQztRQUNUO0lBQ0Y7SUFDQTtRQUNFL0MsV0FBV0s7UUFDWFMsUUFBUSxTQUFDa0MsZUFBZWhDO1lBQ3RCLElBQU1pQyxZQUFZQyxrQkFBUyxDQUFDQyxpQkFBaUIsQ0FBQ0gsZUFBZWhDLGNBQ3ZEb0Msb0JBQW9CSCxVQUFVbkMsTUFBTTtZQUUxQyxPQUFPc0M7UUFDVDtJQUNGO0lBQ0E7UUFDRXBELFdBQVdNO1FBQ1hRLFFBQVEsU0FBQ3VDLGdCQUFnQnJDO1lBQ3ZCLElBQU1zQyxhQUFhQyxtQkFBVSxDQUFDQyxrQkFBa0IsQ0FBQ0gsZ0JBQWdCckMsY0FDM0R5QyxxQkFBcUJILFdBQVd4QyxNQUFNO1lBRTVDLE9BQU8yQztRQUNUO0lBQ0Y7SUFDQTtRQUNFekQsV0FBV087UUFDWE8sUUFBUSxTQUFDNEMsaUJBQWlCMUM7WUFDeEIsSUFBTTJDLGNBQWNDLG9CQUFXLENBQUNDLG1CQUFtQixDQUFDSCxpQkFBaUIxQyxjQUMvRDhDLHNCQUFzQkgsWUFBWTdDLE1BQU07WUFFOUMsT0FBT2dEO1FBQ1Q7SUFDRjtJQUNBO1FBQ0U5RCxXQUFXUTtRQUNYTSxRQUFRLFNBQUNpRCxxQkFBcUIvQztZQUM1QixJQUFNZ0Qsa0JBQWtCQyxhQUFlLENBQUNDLHVCQUF1QixDQUFDSCxxQkFBcUIvQyxjQUMvRW1ELDBCQUEwQkgsZ0JBQWdCbEQsTUFBTTtZQUV0RCxPQUFPcUQ7UUFDVDtJQUNGO0lBQ0E7UUFDRW5FLFdBQVdTO1FBQ1hLLFFBQVEsU0FBQ3NELHlCQUF5QnBEO1lBQ2hDLElBQU1xRCxzQkFBc0JDLGlCQUFtQixDQUFDQywyQkFBMkIsQ0FBQ0gseUJBQXlCcEQsY0FDL0Z3RCw4QkFBOEJILG9CQUFvQnZELE1BQU07WUFFOUQsT0FBTzBEO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V4RSxXQUFXVTtRQUNYSSxRQUFRLFNBQUMyRCwyQkFBMkJ6RDtZQUNsQyxJQUFNMEQsd0JBQXdCQyxtQkFBcUIsQ0FBQ0MsNkJBQTZCLENBQUNILDJCQUEyQnpELGNBQ3ZHNkQsZ0NBQWdDSCxzQkFBc0I1RCxNQUFNO1lBRWxFLE9BQU8rRDtRQUNUO0lBQ0Y7SUFDQTtRQUNFN0UsV0FBV1c7UUFDWEcsUUFBUSxTQUFDZ0UsNEJBQTRCOUQ7WUFDbkMsSUFBTStELHlCQUF5QkMsb0JBQXNCLENBQUNDLDhCQUE4QixDQUFDSCw0QkFBNEI5RCxjQUMzR2tFLGlDQUFpQ0gsdUJBQXVCakUsTUFBTTtZQUVwRSxPQUFPb0U7UUFDVDtJQUNGO0lBQ0E7UUFDRWxGLFdBQVdZO1FBQ1hFLFFBQVEsU0FBQ3FFLDZCQUE2Qm5FO1lBQ3BDLElBQU1vRSwwQkFBMEJDLHFCQUF1QixDQUFDQywrQkFBK0IsQ0FBQ0gsNkJBQTZCbkUsY0FDL0d1RSxrQ0FBa0NILHdCQUF3QnRFLE1BQU07WUFFdEUsT0FBT3lFO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBTUMsbUJBQW1CLElBQUkzRTtJQUU3QixXQUFlMkUifQ==
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.1067",
4
+ "version": "0.0.1069",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -62,7 +62,7 @@ export default class ContainedAssertion {
62
62
  }
63
63
 
64
64
  if (this.frame !== null) {
65
- frameVerified = this.frame.verify(localContext);
65
+ frameVerified = this.frame.verify(assignments, stated, localContext);
66
66
  }
67
67
 
68
68
  statementVerified = this.statement.verify(assignments, stated, localContext);
@@ -56,7 +56,7 @@ export default class DefinedAssertion {
56
56
  }
57
57
 
58
58
  if (this.frame!== null) {
59
- frameVerified = this.frame.verify(localContext);
59
+ frameVerified = this.frame.verify(assignments, stated, localContext);
60
60
  }
61
61
 
62
62
  if (termVerified && frameVerified) {
@@ -128,7 +128,7 @@ export default class SubproofAssertion {
128
128
  return subproofUnified;
129
129
  }
130
130
 
131
- static fromStatementNode(statementNode, fileContext) {
131
+ static fromStatementNode(statementNode, localContext) {
132
132
  let subproofAssertion = null;
133
133
 
134
134
  const subproofAssertionNode = subproofAssertionNodeQuery(statementNode);
@@ -136,9 +136,8 @@ export default class SubproofAssertion {
136
136
  if (subproofAssertionNode !== null) {
137
137
  const { Statement } = shim,
138
138
  statementNodes = statementNodesQuery(subproofAssertionNode),
139
- statement = Statement.fromStatementNode(statementNode, fileContext),
139
+ statement = Statement.fromStatementNode(statementNode, localContext),
140
140
  statementString = statement.getString(),
141
- localContext = LocalContext.fromFileContext(fileContext),
142
141
  statements = statementNodes.map((statementNode) => {
143
142
  const statement = Statement.fromStatementNode(statementNode, localContext);
144
143
 
@@ -11,13 +11,12 @@ export default class JudgementAssignment {
11
11
 
12
12
  assign(localContext) {
13
13
  const judgementAdded = localContext.addJudgement(this.judgement),
14
- judgementNode = this.judgement.getNode(),
15
- judgementString = localContext.nodeAsString(judgementNode),
14
+ judgementString = this.judgement.getString(),
16
15
  judgementAssigned = judgementAdded; ///
17
16
 
18
17
  judgementAssigned ?
19
- localContext.trace(`Assigned the '${judgementString}' judgement.`, judgementNode) :
20
- localContext.debug(`Unable to assign the '${judgementString}' judgement.`, judgementNode);
18
+ localContext.trace(`Assigned the '${judgementString}' judgement.`) :
19
+ localContext.debug(`Unable to assign the '${judgementString}' judgement.`);
21
20
 
22
21
  return judgementAssigned;
23
22
  }
package/src/axiom.js CHANGED
@@ -1,25 +1,26 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "./shim";
3
4
  import Label from "./label";
4
5
  import Consequent from "./consequent";
5
6
  import Supposition from "./supposition";
6
7
  import LocalContext from "./context/local";
7
8
  import TopLevelAssertion from "./topLevelAssertion";
8
9
 
10
+ import { stringFromLabels } from "./topLevelAssertion";
9
11
  import { nodeQuery, nodesQuery } from "./utilities/query";
10
- import { labelsStringFromLabels } from "./topLevelAssertion";
11
12
 
12
13
  const labelNodesQuery = nodesQuery("/axiom/label"),
13
14
  consequentNodeQuery = nodeQuery("/axiom/consequent"),
14
15
  suppositionNodesQuery = nodesQuery("/axiom/supposition");
15
16
 
16
- export default class Axiom extends TopLevelAssertion {
17
+ class Axiom extends TopLevelAssertion {
17
18
  verify() {
18
19
  let verified = false;
19
20
 
20
- const labelsString = labelsStringFromLabels(this.labels);
21
+ const axiomString = this.string; ///
21
22
 
22
- this.fileContext.trace(`Verifying the '${labelsString}' axiom...`);
23
+ this.fileContext.trace(`Verifying the '${axiomString}' axiom...`);
23
24
 
24
25
  const labelsVerifiedAtTopLevel = this.labels.every((label) => {
25
26
  const labelVVerifiedAtTopLevel = label.verifyAtTopLevel(this.fileContext);
@@ -53,7 +54,7 @@ export default class Axiom extends TopLevelAssertion {
53
54
  }
54
55
 
55
56
  if (verified) {
56
- this.fileContext.debug(`...verified the '${labelsString}' axiom.`);
57
+ this.fileContext.debug(`...verified the '${axiomString}' axiom.`);
57
58
  }
58
59
 
59
60
  return verified;
@@ -76,9 +77,16 @@ export default class Axiom extends TopLevelAssertion {
76
77
  return supposition;
77
78
  }),
78
79
  consequent = Consequent.fromConsequentNode(consequentNode, fileContext),
80
+ string = stringFromLabels(labels),
79
81
  proof = null,
80
- axiom = new Axiom(fileContext, labels, suppositions, consequent, proof);
82
+ axiom = new Axiom(fileContext, string, labels, suppositions, consequent, proof);
81
83
 
82
84
  return axiom;
83
85
  }
84
86
  }
87
+
88
+ Object.assign(shim, {
89
+ Axiom
90
+ });
91
+
92
+ export default Axiom;
package/src/combinator.js CHANGED
@@ -4,10 +4,11 @@ import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
5
 
6
6
  import { nodeQuery } from "./utilities/query";
7
+ import { statementFromJSON, statementToStatementJSON } from "./utilities/json";
7
8
 
8
9
  const statementNodeQuery = nodeQuery("/combinatorDeclaration/statement");
9
10
 
10
- export default class Combinator {
11
+ class Combinator {
11
12
  constructor(statement) {
12
13
  this.statement = statement;
13
14
  }
@@ -43,7 +44,7 @@ export default class Combinator {
43
44
  }
44
45
 
45
46
  toJSON() {
46
- const statementJSON = this.statement.toJSON(),
47
+ const statementJSON = statementToStatementJSON(this.statement),
47
48
  statement = statementJSON, ///
48
49
  json = {
49
50
  statement
@@ -53,17 +54,8 @@ export default class Combinator {
53
54
  }
54
55
 
55
56
  static fromJSON(json, fileContext) {
56
- let { statement } = json;
57
-
58
- const statementJSON = statement; ///
59
-
60
- json = statementJSON; ///
61
-
62
- const { Statement } = shim;
63
-
64
- statement = Statement.fromJSON(json, fileContext);
65
-
66
- const combinator = new Combinator(statement);
57
+ const statement = statementFromJSON(json, fileContext),
58
+ combinator = new Combinator(statement);
67
59
 
68
60
  return combinator;
69
61
  }
@@ -78,3 +70,10 @@ export default class Combinator {
78
70
  return combinator;
79
71
  }
80
72
  }
73
+
74
+ Object.assign(shim, {
75
+ Combinator
76
+ });
77
+
78
+ export default Combinator;
79
+
package/src/conclusion.js CHANGED
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "./shim";
3
4
  import LocalContext from "./context/local";
4
5
  import UnqualifiedStatement from "./statement/unqualified";
5
6
 
6
7
  import { nodeQuery } from "./utilities/query";
8
+ import { unqualifiedStatementFromJSON, unqualifiedStatementToUnqualifiedStatementJSON } from "./utilities/json";
7
9
 
8
10
  const unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement");
9
11
 
10
- export default class Conclusion {
12
+ class Conclusion {
11
13
  constructor(fileContext, unqualifiedStatement) {
12
14
  this.fileContext = fileContext;
13
15
  this.unqualifiedStatement = unqualifiedStatement;
@@ -31,18 +33,18 @@ export default class Conclusion {
31
33
  const statementString = statement.getString(),
32
34
  conclusionString = this.getString();
33
35
 
34
- localContext.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
35
-
36
- const localContextB = localContext;
36
+ const localContextB = localContext; ///
37
37
 
38
38
  localContext = LocalContext.fromFileContext(this.fileContext);
39
39
 
40
40
  const localContextA = localContext; ///
41
41
 
42
+ localContextB.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
43
+
42
44
  statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, localContextA, localContextB);
43
45
 
44
46
  if (statementUnified) {
45
- localContext.debug(`...unified the '${statementString}' statement with the '${conclusionString}' conclusion.`);
47
+ localContextB.debug(`...unified the '${statementString}' statement with the '${conclusionString}' conclusion.`);
46
48
  }
47
49
 
48
50
  return statementUnified;
@@ -71,7 +73,7 @@ export default class Conclusion {
71
73
  }
72
74
 
73
75
  toJSON() {
74
- const unqualifiedStatementJSON = this.unqualifiedStatement.toJSON(),
76
+ const unqualifiedStatementJSON = unqualifiedStatementToUnqualifiedStatementJSON(this.unqualifiedStatement),
75
77
  unqualifiedStatement = unqualifiedStatementJSON, ///
76
78
  json = {
77
79
  unqualifiedStatement
@@ -81,13 +83,8 @@ export default class Conclusion {
81
83
  }
82
84
 
83
85
  static fromJSON(json, fileContext) {
84
- let { unqualifiedStatement } = json;
85
-
86
- json = unqualifiedStatement; ///
87
-
88
- unqualifiedStatement = UnqualifiedStatement.fromJSON(json, fileContext);
89
-
90
- const conclusion = new Conclusion(fileContext, unqualifiedStatement);
86
+ const unqualifiedStatement = unqualifiedStatementFromJSON(json, fileContext),
87
+ conclusion = new Conclusion(fileContext, unqualifiedStatement);
91
88
 
92
89
  return conclusion;
93
90
  }
@@ -100,3 +97,9 @@ export default class Conclusion {
100
97
  return conclusion;
101
98
  }
102
99
  }
100
+
101
+ Object.assign(shim, {
102
+ Conclusion
103
+ });
104
+
105
+ export default Conclusion;
package/src/conjecture.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "./shim";
3
4
  import Label from "./label";
4
5
  import Proof from "./proof";
5
6
  import Consequent from "./consequent";
@@ -8,21 +9,21 @@ import LocalContext from "./context/local";
8
9
  import Substitutions from "./substitutions";
9
10
  import TopLevelAssertion from "./topLevelAssertion";
10
11
 
12
+ import { stringFromLabels } from "./topLevelAssertion";
11
13
  import { nodeQuery, nodesQuery } from "./utilities/query";
12
- import { labelsStringFromLabels } from "./topLevelAssertion";
13
14
 
14
15
  const proofNodeQuery = nodeQuery("/conjecture/proof"),
15
16
  labelNodesQuery = nodesQuery("/conjecture/label"),
16
17
  consequentNodeQuery = nodeQuery("/conjecture/consequent"),
17
18
  suppositionNodesQuery = nodesQuery("/conjecture/supposition");
18
19
 
19
- export default class Conjecture extends TopLevelAssertion {
20
+ class Conjecture extends TopLevelAssertion {
20
21
  verify() {
21
22
  let verified = false;
22
23
 
23
- const labelsString = labelsStringFromLabels(this.labels);
24
+ const conjectureString = this.string; ///
24
25
 
25
- this.fileContext.trace(`Verifying the '${labelsString}' conjecture...`);
26
+ this.fileContext.trace(`Verifying the '${conjectureString}' conjecture...`);
26
27
 
27
28
  const labelsVerifiedAtTopLevel = this.labels.every((label) => {
28
29
  const labelVVerifiedAtTopLevel = label.verifyAtTopLevel(this.fileContext);
@@ -62,7 +63,7 @@ export default class Conjecture extends TopLevelAssertion {
62
63
  }
63
64
 
64
65
  if (verified) {
65
- this.fileContext.debug(`...verified the '${labelsString}' conjecture.`);
66
+ this.fileContext.debug(`...verified the '${conjectureString}' conjecture.`);
66
67
  }
67
68
 
68
69
  return verified;
@@ -86,9 +87,16 @@ export default class Conjecture extends TopLevelAssertion {
86
87
  return supposition;
87
88
  }),
88
89
  consequent = Consequent.fromConsequentNode(consequentNode, fileContext),
90
+ string = stringFromLabels(labels),
89
91
  proof = Proof.fromProofNode(proofNode, fileContext),
90
- conjecture = new Conjecture(fileContext, labels, suppositions, consequent, proof);
92
+ conjecture = new Conjecture(fileContext, string, labels, suppositions, consequent, proof);
91
93
 
92
94
  return conjecture;
93
95
  }
94
96
  }
97
+
98
+ Object.assign(shim, {
99
+ Conjecture
100
+ });
101
+
102
+ export default Conjecture;
package/src/consequent.js CHANGED
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "./shim";
3
4
  import LocalContext from "./context/local";
4
5
  import UnqualifiedStatement from "./statement/unqualified";
5
6
 
6
7
  import { nodeQuery } from "./utilities/query";
8
+ import { unqualifiedStatementFromJSON, unqualifiedStatementToUnqualifiedStatementJSON } from "./utilities/json";
7
9
 
8
10
  const unqualifiedStatementNodeQuery = nodeQuery("/consequent/unqualifiedStatement");
9
11
 
10
- export default class Consequent {
12
+ class Consequent {
11
13
  constructor(fileContext, unqualifiedStatement) {
12
14
  this.fileContext = fileContext;
13
15
  this.unqualifiedStatement = unqualifiedStatement;
@@ -31,18 +33,18 @@ export default class Consequent {
31
33
  const statementString = statement.getString(),
32
34
  consequentString = this.getString();
33
35
 
34
- localContext.trace(`Unifying the '${statementString}' statement with the '${consequentString}' consequent...`);
35
-
36
- const localContextB = localContext;
36
+ const localContextB = localContext; ///
37
37
 
38
38
  localContext = LocalContext.fromFileContext(this.fileContext);
39
39
 
40
40
  const localContextA = localContext; ///
41
41
 
42
+ localContextB.trace(`Unifying the '${statementString}' statement with the '${consequentString}' consequent...`);
43
+
42
44
  statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, localContextA, localContextB);
43
45
 
44
46
  if (statementUnified) {
45
- localContext.debug(`...unified the '${statementString}' statement with the '${consequentString}' consequent.`);
47
+ localContextB.debug(`...unified the '${statementString}' statement with the '${consequentString}' consequent.`);
46
48
  }
47
49
 
48
50
  return statementUnified;
@@ -71,7 +73,7 @@ export default class Consequent {
71
73
  }
72
74
 
73
75
  toJSON() {
74
- const unqualifiedStatementJSON = this.unqualifiedStatement.toJSON(),
76
+ const unqualifiedStatementJSON = unqualifiedStatementToUnqualifiedStatementJSON(this.unqualifiedStatement),
75
77
  unqualifiedStatement = unqualifiedStatementJSON, ///
76
78
  json = {
77
79
  unqualifiedStatement
@@ -81,13 +83,8 @@ export default class Consequent {
81
83
  }
82
84
 
83
85
  static fromJSON(json, fileContext) {
84
- let { unqualifiedStatement } = json;
85
-
86
- json = unqualifiedStatement; ///
87
-
88
- unqualifiedStatement = UnqualifiedStatement.fromJSON(json, fileContext);
89
-
90
- const consequent = new Consequent(fileContext, unqualifiedStatement);
86
+ const unqualifiedStatement = unqualifiedStatementFromJSON(json, fileContext),
87
+ consequent = new Consequent(fileContext, unqualifiedStatement);
91
88
 
92
89
  return consequent;
93
90
  }
@@ -100,3 +97,9 @@ export default class Consequent {
100
97
  return consequent;
101
98
  }
102
99
  }
100
+
101
+ Object.assign(shim, {
102
+ Consequent
103
+ });
104
+
105
+ export default Consequent;
@@ -4,11 +4,12 @@ import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
5
 
6
6
  import { nodeQuery } from "./utilities/query";
7
+ import { termFromJSON, termToTermJSON } from "./utilities/json";
7
8
 
8
9
  const termNodeQuery = nodeQuery("/constructorDeclaration/term"),
9
10
  typeNodeQuery = nodeQuery("/constructorDeclaration/type");
10
11
 
11
- export default class Constructor {
12
+ class Constructor {
12
13
  constructor(string, term) {
13
14
  this.string = string;
14
15
  this.term = term;
@@ -45,7 +46,7 @@ export default class Constructor {
45
46
  }
46
47
 
47
48
  toJSON() {
48
- const termJSON = this.term.toJSON(),
49
+ const termJSON = termToTermJSON(this.term),
49
50
  term = termJSON, ///
50
51
  json = {
51
52
  term
@@ -55,17 +56,8 @@ export default class Constructor {
55
56
  }
56
57
 
57
58
  static fromJSON(json, fileContext) {
58
- let { term } = json;
59
-
60
- const termJSON = term; ///
61
-
62
- json = termJSON; ///
63
-
64
- const { Term } = shim;
65
-
66
- term = Term.fromJSON(json, fileContext);
67
-
68
- const type = term.getType(),
59
+ const term = termFromJSON(json, fileContext),
60
+ type = term.getType(),
69
61
  string = stringFromTermAndType(term, type),
70
62
  constructor = new Constructor(string, term);
71
63
 
@@ -86,6 +78,12 @@ export default class Constructor {
86
78
  }
87
79
  }
88
80
 
81
+ Object.assign(shim, {
82
+ Constructor
83
+ });
84
+
85
+ export default Constructor;
86
+
89
87
  export function stringFromTermAndType(term, type) {
90
88
  let string;
91
89