occam-verify-cli 1.0.428 → 1.0.436

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 (123) hide show
  1. package/lib/context/file.js +1 -1
  2. package/lib/element/assertion.js +115 -24
  3. package/lib/element/assumption.js +120 -20
  4. package/lib/element/axiomLemmaTheoremConjecture.js +118 -30
  5. package/lib/element/conclusion.js +113 -25
  6. package/lib/element/declaration.js +112 -37
  7. package/lib/element/deduction.js +112 -66
  8. package/lib/element/derivation.js +114 -5
  9. package/lib/element/equality.js +119 -26
  10. package/lib/element/equivalence.js +121 -28
  11. package/lib/element/equivalences.js +122 -7
  12. package/lib/element/error.js +115 -32
  13. package/lib/element/frame.js +119 -59
  14. package/lib/element/hypothesis.js +115 -27
  15. package/lib/element/judgement.js +120 -33
  16. package/lib/element/label.js +116 -63
  17. package/lib/element/lemma.js +1 -9
  18. package/lib/element/metaLemma.js +1 -8
  19. package/lib/element/metaLemmaMetatheorem.js +117 -29
  20. package/lib/element/metaType.js +68 -61
  21. package/lib/element/metatheorem.js +1 -8
  22. package/lib/element/metavariable.js +122 -93
  23. package/lib/element/parameter.js +120 -20
  24. package/lib/element/premise.js +114 -35
  25. package/lib/element/procedureCall.js +117 -99
  26. package/lib/element/procedureReference.js +120 -20
  27. package/lib/element/proof.js +111 -55
  28. package/lib/element/property.js +121 -35
  29. package/lib/element/propertyRelation.js +116 -72
  30. package/lib/element/reference.js +120 -70
  31. package/lib/element/rule.js +116 -41
  32. package/lib/element/section.js +114 -133
  33. package/lib/element/signature.js +120 -20
  34. package/lib/element/statement/combinator/bracketed.js +4 -9
  35. package/lib/element/statement.js +110 -125
  36. package/lib/element/step.js +115 -27
  37. package/lib/element/subDerivation.js +111 -43
  38. package/lib/element/subproof.js +115 -20
  39. package/lib/element/substitution.js +115 -31
  40. package/lib/element/substitutions.js +120 -6
  41. package/lib/element/supposition.js +114 -35
  42. package/lib/element/term/constructor/bracketed.js +4 -8
  43. package/lib/element/term.js +111 -98
  44. package/lib/element/theorem.js +1 -8
  45. package/lib/element/type.js +71 -91
  46. package/lib/element/typePrefix.js +120 -20
  47. package/lib/element/variable.js +116 -111
  48. package/lib/element.js +67 -0
  49. package/lib/node/{nonsense.js → equivalences.js} +10 -10
  50. package/lib/node/frame.js +11 -5
  51. package/lib/node/procedureReference.js +6 -6
  52. package/lib/node/statement.js +11 -5
  53. package/lib/node/term.js +8 -1
  54. package/lib/nonTerminalNodeMap.js +3 -3
  55. package/lib/process/instantiate.js +8 -39
  56. package/lib/process/verify.js +22 -29
  57. package/lib/ruleNames.js +5 -5
  58. package/lib/utilities/brackets.js +11 -11
  59. package/lib/utilities/element.js +588 -94
  60. package/lib/utilities/instance.js +61 -0
  61. package/lib/utilities/string.js +73 -1
  62. package/package.json +1 -1
  63. package/src/context/file.js +1 -1
  64. package/src/element/assertion.js +4 -16
  65. package/src/element/assumption.js +5 -12
  66. package/src/element/axiomLemmaTheoremConjecture.js +4 -16
  67. package/src/element/conclusion.js +4 -16
  68. package/src/element/declaration.js +4 -16
  69. package/src/element/deduction.js +5 -19
  70. package/src/element/derivation.js +5 -2
  71. package/src/element/equality.js +4 -16
  72. package/src/element/equivalence.js +4 -16
  73. package/src/element/equivalences.js +12 -5
  74. package/src/element/error.js +4 -24
  75. package/src/element/frame.js +5 -56
  76. package/src/element/hypothesis.js +6 -23
  77. package/src/element/judgement.js +5 -30
  78. package/src/element/label.js +8 -19
  79. package/src/element/lemma.js +0 -7
  80. package/src/element/metaLemma.js +0 -7
  81. package/src/element/metaLemmaMetatheorem.js +4 -16
  82. package/src/element/metaType.js +23 -64
  83. package/src/element/metatheorem.js +0 -7
  84. package/src/element/metavariable.js +6 -94
  85. package/src/element/parameter.js +10 -18
  86. package/src/element/premise.js +4 -31
  87. package/src/element/procedureCall.js +5 -77
  88. package/src/element/procedureReference.js +7 -17
  89. package/src/element/proof.js +5 -17
  90. package/src/element/property.js +8 -30
  91. package/src/element/propertyRelation.js +5 -33
  92. package/src/element/reference.js +8 -72
  93. package/src/element/rule.js +4 -41
  94. package/src/element/section.js +4 -129
  95. package/src/element/signature.js +7 -13
  96. package/src/element/statement/combinator/bracketed.js +3 -9
  97. package/src/element/statement.js +3 -126
  98. package/src/element/step.js +4 -16
  99. package/src/element/subDerivation.js +5 -3
  100. package/src/element/subproof.js +5 -12
  101. package/src/element/substitution.js +4 -24
  102. package/src/element/substitutions.js +6 -2
  103. package/src/element/supposition.js +4 -31
  104. package/src/element/term/constructor/bracketed.js +4 -9
  105. package/src/element/term.js +6 -59
  106. package/src/element/theorem.js +0 -7
  107. package/src/element/type.js +9 -104
  108. package/src/element/typePrefix.js +8 -13
  109. package/src/element/variable.js +6 -109
  110. package/src/element.js +29 -0
  111. package/src/node/{nonsense.js → equivalences.js} +2 -2
  112. package/src/node/frame.js +10 -5
  113. package/src/node/procedureReference.js +4 -4
  114. package/src/node/statement.js +10 -5
  115. package/src/node/term.js +7 -0
  116. package/src/nonTerminalNodeMap.js +3 -3
  117. package/src/process/instantiate.js +4 -36
  118. package/src/process/verify.js +42 -47
  119. package/src/ruleNames.js +1 -1
  120. package/src/utilities/brackets.js +13 -13
  121. package/src/utilities/element.js +731 -129
  122. package/src/utilities/instance.js +53 -0
  123. package/src/utilities/string.js +97 -0
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get bracketedCombinatorStatementFromNothing () {
13
+ return bracketedCombinatorStatementFromNothing;
14
+ },
15
+ get bracketedConstructorTermFromNothing () {
16
+ return bracketedConstructorTermFromNothing;
17
+ }
18
+ });
19
+ var _nominal = /*#__PURE__*/ _interop_require_default(require("../context/nominal"));
20
+ var _constants = require("../constants");
21
+ var _metaTypeNames = require("../metaTypeNames");
22
+ var _instantiate = require("../process/instantiate");
23
+ var _element = require("../utilities/element");
24
+ function _interop_require_default(obj) {
25
+ return obj && obj.__esModule ? obj : {
26
+ default: obj
27
+ };
28
+ }
29
+ var bracketedConstructorTerm = null, bracketedCombinatorStatement = null;
30
+ function bracketedConstructorTermFromNothing() {
31
+ if (bracketedConstructorTerm === null) {
32
+ var context;
33
+ var string = "(".concat(_constants.BASE_TYPE_SYMBOL, ")");
34
+ context = _nominal.default; ///
35
+ var node = (0, _instantiate.instantiateTerm)(string, context), bracketedConstructorTermNode = node; ///
36
+ context = {
37
+ nodeAsString: function() {
38
+ return string;
39
+ }
40
+ };
41
+ bracketedConstructorTerm = (0, _element.termFromTermNode)(bracketedConstructorTermNode, context);
42
+ }
43
+ return bracketedConstructorTerm;
44
+ }
45
+ function bracketedCombinatorStatementFromNothing() {
46
+ if (bracketedCombinatorStatement === null) {
47
+ var context;
48
+ var string = "(".concat(_metaTypeNames.STATEMENT_META_TYPE_NAME, ")");
49
+ context = _nominal.default; ///
50
+ var node = (0, _instantiate.instantiateStatement)(string, context), bracketedCombinatorStatementNode = node; ///
51
+ context = {
52
+ nodeAsString: function() {
53
+ return string;
54
+ }
55
+ };
56
+ bracketedCombinatorStatement = (0, _element.statementFromStatementNode)(bracketedCombinatorStatementNode, context);
57
+ }
58
+ return bracketedCombinatorStatement;
59
+ }
60
+
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5zdGFuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBub21pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ub21pbmFsXCI7XG5cbmltcG9ydCB7IEJBU0VfVFlQRV9TWU1CT0wgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUgfSBmcm9tIFwiLi4vbWV0YVR5cGVOYW1lc1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUZXJtLCBpbnN0YW50aWF0ZVN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1Ob2RlLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5sZXQgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtID0gbnVsbCxcbiAgICBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50ID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybUZyb21Ob3RoaW5nKCkge1xuICBpZiAoYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtID09PSBudWxsKSB7XG4gICAgbGV0IGNvbnRleHQ7XG5cbiAgICBjb25zdCBzdHJpbmcgPSBgKCR7QkFTRV9UWVBFX1NZTUJPTH0pYDtcblxuICAgIGNvbnRleHQgPSBub21pbmFsQ29udGV4dDsgLy8vXG5cbiAgICBjb25zdCBub2RlID0gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIGNvbnRleHQgPSB7XG4gICAgICBub2RlQXNTdHJpbmc6ICgpID0+IHN0cmluZ1xuICAgIH07XG5cbiAgICBicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnRGcm9tTm90aGluZygpIHtcbiAgaWYgKGJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnQgPT09IG51bGwpIHtcbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnN0IHN0cmluZyA9IGAoJHtTVEFURU1FTlRfTUVUQV9UWVBFX05BTUV9KWA7XG5cbiAgICBjb250ZXh0ID0gbm9taW5hbENvbnRleHQ7IC8vL1xuXG4gICAgY29uc3Qgbm9kZSA9IGluc3RhbnRpYXRlU3RhdGVtZW50KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICBjb250ZXh0ID0ge1xuICAgICAgbm9kZUFzU3RyaW5nOiAoKSA9PiBzdHJpbmdcbiAgICB9O1xuXG4gICAgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKGJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnRGcm9tTm90aGluZyIsImJyYWNrZXRlZENvbnN0cnVjdG9yVGVybUZyb21Ob3RoaW5nIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtIiwiYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJCQVNFX1RZUEVfU1lNQk9MIiwibm9taW5hbENvbnRleHQiLCJub2RlIiwiaW5zdGFudGlhdGVUZXJtIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSIsIm5vZGVBc1N0cmluZyIsInRlcm1Gcm9tVGVybU5vZGUiLCJTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUiLCJpbnN0YW50aWF0ZVN0YXRlbWVudCIsImJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWlDZ0JBO2VBQUFBOztRQXJCQUM7ZUFBQUE7Ozs4REFWVzt5QkFFTTs2QkFDUTsyQkFDYTt1QkFDTzs7Ozs7O0FBRTdELElBQUlDLDJCQUEyQixNQUMzQkMsK0JBQStCO0FBRTVCLFNBQVNGO0lBQ2QsSUFBSUMsNkJBQTZCLE1BQU07UUFDckMsSUFBSUU7UUFFSixJQUFNQyxTQUFTLEFBQUMsSUFBb0IsT0FBakJDLDJCQUFnQixFQUFDO1FBRXBDRixVQUFVRyxnQkFBYyxFQUFFLEdBQUc7UUFFN0IsSUFBTUMsT0FBT0MsSUFBQUEsNEJBQWUsRUFBQ0osUUFBUUQsVUFDL0JNLCtCQUErQkYsTUFBTyxHQUFHO1FBRS9DSixVQUFVO1lBQ1JPLGNBQWM7dUJBQU1OOztRQUN0QjtRQUVBSCwyQkFBMkJVLElBQUFBLHlCQUFnQixFQUFDRiw4QkFBOEJOO0lBQzVFO0lBRUEsT0FBT0Y7QUFDVDtBQUVPLFNBQVNGO0lBQ2QsSUFBSUcsaUNBQWlDLE1BQU07UUFDekMsSUFBSUM7UUFFSixJQUFNQyxTQUFTLEFBQUMsSUFBNEIsT0FBekJRLHVDQUF3QixFQUFDO1FBRTVDVCxVQUFVRyxnQkFBYyxFQUFFLEdBQUc7UUFFN0IsSUFBTUMsT0FBT00sSUFBQUEsaUNBQW9CLEVBQUNULFFBQVFELFVBQ3BDVyxtQ0FBbUNQLE1BQU8sR0FBRztRQUVuREosVUFBVTtZQUNSTyxjQUFjO3VCQUFNTjs7UUFDdEI7UUFFQUYsK0JBQStCYSxJQUFBQSxtQ0FBMEIsRUFBQ0Qsa0NBQWtDWDtJQUM5RjtJQUVBLE9BQU9EO0FBQ1QifQ==
@@ -9,15 +9,39 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ get assumptionsStringFromAssumptions () {
13
+ return assumptionsStringFromAssumptions;
14
+ },
12
15
  get axiomLemmaTheoremConjectureStringFromLabelsSuppositionsAndDeduction () {
13
16
  return axiomLemmaTheoremConjectureStringFromLabelsSuppositionsAndDeduction;
14
17
  },
15
18
  get equivalenceStringFromTerms () {
16
19
  return equivalenceStringFromTerms;
17
20
  },
21
+ get hypothesesStringFromHypotheses () {
22
+ return hypothesesStringFromHypotheses;
23
+ },
18
24
  get labelsStringFromLabels () {
19
25
  return labelsStringFromLabels;
20
26
  },
27
+ get metaLemmaMetatheoremStringFromLabelSuppositionsAndDeduction () {
28
+ return metaLemmaMetatheoremStringFromLabelSuppositionsAndDeduction;
29
+ },
30
+ get parametersStringFromParameters () {
31
+ return parametersStringFromParameters;
32
+ },
33
+ get premisesStringFromPremises () {
34
+ return premisesStringFromPremises;
35
+ },
36
+ get procedureCallStringFromProcedureReferenceAndParameters () {
37
+ return procedureCallStringFromProcedureReferenceAndParameters;
38
+ },
39
+ get rulsStringFromLabelsPremisesAndConclusion () {
40
+ return rulsStringFromLabelsPremisesAndConclusion;
41
+ },
42
+ get sectionStringFromHypothesesAxiomLemmaTheoremAndConjecture () {
43
+ return sectionStringFromHypothesesAxiomLemmaTheoremAndConjecture;
44
+ },
21
45
  get signatureStringFromTerms () {
22
46
  return signatureStringFromTerms;
23
47
  },
@@ -54,6 +78,22 @@ function labelsStringFromLabels(labels) {
54
78
  }, null);
55
79
  return labelsString;
56
80
  }
81
+ function premisesStringFromPremises(premises) {
82
+ var premisesString = premises.reduce(function(premisesString, premise) {
83
+ var premiseString = premise.getString();
84
+ premisesString = premisesString !== null ? "".concat(premisesString, ", ").concat(premiseString) : premiseString; ///
85
+ return premisesString;
86
+ }, null);
87
+ return premisesString;
88
+ }
89
+ function hypothesesStringFromHypotheses(hypotheses, context) {
90
+ var hypothesesString = hypotheses.reduce(function(hypothesesString, hypothesis) {
91
+ var hypothesisString = hypothesis.getString();
92
+ hypothesesString = hypothesesString !== null ? "".concat(hypothesesString, ", ").concat(hypothesisString) : hypothesisString; ///
93
+ return hypothesesString;
94
+ }, null);
95
+ return hypothesesString;
96
+ }
57
97
  function superTypesStringFromSuperTypes(superTypes) {
58
98
  var superTypesString = superTypes.reduce(function(superTypesString, superType) {
59
99
  if (superType !== _type.baseType) {
@@ -64,6 +104,22 @@ function superTypesStringFromSuperTypes(superTypes) {
64
104
  }, null);
65
105
  return superTypesString;
66
106
  }
107
+ function parametersStringFromParameters(parameters) {
108
+ var parametersString = parameters.reduce(function(parametersString, parameter) {
109
+ var parameterString = parameter.getString();
110
+ parametersString = parametersString === null ? parameterString : "".concat(parametersString, ", ").concat(parameterString);
111
+ return parametersString;
112
+ }, null);
113
+ return parametersString;
114
+ }
115
+ function assumptionsStringFromAssumptions(assumptions) {
116
+ var assumptionsString = assumptions.reduce(function(assumptionsString, assumption) {
117
+ var assumptionString = assumption.getString();
118
+ assumptionsString = assumptionsString === null ? assumptionString : "".concat(assumptionsString, ", ").concat(assumptionString);
119
+ return assumptionsString;
120
+ }, null);
121
+ return assumptionsString;
122
+ }
67
123
  function suppositionsStringFromSuppositions(suppositions) {
68
124
  var suppositionsString = suppositions.reduce(function(suppositionsString, supposition) {
69
125
  var suppositionString = supposition.getString();
@@ -84,6 +140,10 @@ function subproofStringFromSubproof(subproof) {
84
140
  var lastStep = subproof.getLastStep(), suppositions = subproof.getSuppositions(), lastStepString = lastStep.getString(), suppositionsString = suppositionsStringFromSuppositions(suppositions), subproofString = "[".concat(suppositionsString, "] ... ").concat(lastStepString);
85
141
  return subproofString;
86
142
  }
143
+ function rulsStringFromLabelsPremisesAndConclusion(labels, premises, conclusion) {
144
+ var premisesString = premisesStringFromPremises(premises), conclusionString = conclusion.getString(), labelsString = labelsStringFromLabels(labels), ruleString = premisesString !== null ? "".concat(labelsString, " :: [").concat(premisesString, "] ... ").concat(conclusionString) : "".concat(labelsString, " :: ").concat(conclusionString);
145
+ return ruleString;
146
+ }
87
147
  function typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixName, superTypes) {
88
148
  var typeString;
89
149
  typeString = typePrefixName !== null ? "".concat(typePrefixName).concat(typeName) : typeName;
@@ -93,6 +153,18 @@ function typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixN
93
153
  }
94
154
  return typeString;
95
155
  }
156
+ function procedureCallStringFromProcedureReferenceAndParameters(procedureReference, parameters) {
157
+ var procedureReferenceName = procedureReference.getName(), parametersString = parametersStringFromParameters(parameters), procedureCallString = "".concat(procedureReferenceName, "(").concat(parametersString, ")");
158
+ return procedureCallString;
159
+ }
160
+ function sectionStringFromHypothesesAxiomLemmaTheoremAndConjecture(hypotheses, axiom, lemma, theorem, conjecture, context) {
161
+ var axiomLemmaTheoremOrConjecture = axiom || lemma || theorem || conjecture, axiomLemmaTheoremOrConjectureString = axiomLemmaTheoremOrConjecture.getString(), hypothesesString = hypothesesStringFromHypotheses(hypotheses, context), sectionString = axiomLemmaTheoremOrConjectureString !== null ? "[".concat(hypothesesString, "]::: ").concat(axiomLemmaTheoremOrConjectureString) : "[".concat(hypothesesString, "]::: ");
162
+ return sectionString;
163
+ }
164
+ function metaLemmaMetatheoremStringFromLabelSuppositionsAndDeduction(label, suppositions, deduction) {
165
+ var suppositionsString = suppositionsStringFromSuppositions(suppositions), deductionString = deduction.getString(), labelString = label.getString(), metaLemmaMetatheoremString = suppositionsString !== null ? "".concat(labelString, " :: [").concat(suppositionsString, "] ... ").concat(deductionString) : "".concat(labelString, " :: ").concat(deductionString);
166
+ return metaLemmaMetatheoremString;
167
+ }
96
168
  function axiomLemmaTheoremConjectureStringFromLabelsSuppositionsAndDeduction(labels, suppositions, deduction) {
97
169
  var axiomLemmaTheoremConjectureString;
98
170
  var suppositionsString = suppositionsStringFromSuppositions(suppositions), deductionString = deduction.getString(), labelsString = labelsStringFromLabels(labels);
@@ -104,4 +176,4 @@ function axiomLemmaTheoremConjectureStringFromLabelsSuppositionsAndDeduction(lab
104
176
  return axiomLemmaTheoremConjectureString;
105
177
  }
106
178
 
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZSB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXMucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICR7dGVybVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICB0ZXJtU3RyaW5nO1xuXG4gICAgcmV0dXJuIHRlcm1zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gdGVybXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNTdHJpbmcgPSBsYWJlbHMucmVkdWNlKChsYWJlbHNTdHJpbmcsIGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKTtcblxuICAgIGxhYmVsc1N0cmluZyA9IChsYWJlbHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9LCAke2xhYmVsU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gbGFiZWxzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gbGFiZWxzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXMucmVkdWNlKChzdXBlclR5cGVzU3RyaW5nLCBzdXBlclR5cGUpID0+IHtcbiAgICBpZiAoc3VwZXJUeXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAnJHtzdXBlclR5cGVTdHJpbmd9J2AgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBlclR5cGVzU3RyaW5nfSwgJyR7c3VwZXJUeXBlU3RyaW5nfSdgO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9ucy5yZWR1Y2UoKHN1cHBvc2l0aW9uc1N0cmluZywgc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3VwcG9zaXRpb25zU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cHBvc2l0aW9uc1N0cmluZ30sICR7c3VwcG9zaXRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IGBbJHt0ZXJtc1N0cmluZ31dYDtcblxuICByZXR1cm4gc2lnbmF0dXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIGVxdWl2YWxlbmNlU3RyaW5nID0gdGVybXNTdHJpbmc7ICAvLy9cblxuICByZXR1cm4gZXF1aXZhbGVuY2VTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZihzdWJwcm9vZikge1xuICBjb25zdCBsYXN0U3RlcCA9IHN1YnByb29mLmdldExhc3RTdGVwKCksXG4gICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1YnByb29mLmdldFN1cHBvc2l0aW9ucygpLFxuICAgICAgICBsYXN0U3RlcFN0cmluZyA9IGxhc3RTdGVwLmdldFN0cmluZygpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIHN1YnByb29mU3RyaW5nID0gYFske3N1cHBvc2l0aW9uc1N0cmluZ31dIC4uLiAke2xhc3RTdGVwU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHN1YnByb29mU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21UeXBlTmFtZVR5cGVQcmVmaXhOYW1lQW5kU3VwZXJUeXBlcyh0eXBlTmFtZSwgdHlwZVByZWZpeE5hbWUsIHN1cGVyVHlwZXMpIHtcbiAgbGV0IHR5cGVTdHJpbmc7XG5cbiAgdHlwZVN0cmluZyA9ICh0eXBlUHJlZml4TmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHt0eXBlUHJlZml4TmFtZX0ke3R5cGVOYW1lfWA6XG4gICAgICAgICAgICAgICAgICAgdHlwZU5hbWU7XG5cbiAgY29uc3Qgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKTtcblxuICBpZiAoc3VwZXJUeXBlc1N0cmluZyAhPT0gbnVsbCkge1xuICAgIHR5cGVTdHJpbmcgPSBgJHt0eXBlU3RyaW5nfToke3N1cGVyVHlwZXNTdHJpbmd9YDtcbiAgfVxuXG4gIHJldHVybiB0eXBlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGxldCBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmc7XG5cbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKTtcblxuICBpZiAobGFiZWxzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XSAuLi4gJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcbiAgfSBlbHNlIHtcbiAgICBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XSAuLi4gJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZHVjdGlvblN0cmluZztcbiAgfVxuXG4gIHJldHVybiBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zIiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsInNpZ25hdHVyZVN0cmluZ0Zyb21UZXJtcyIsInN1YnByb29mU3RyaW5nRnJvbVN1YnByb29mIiwic3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzIiwic3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyIsInRlcm1zU3RyaW5nRnJvbVRlcm1zIiwidHlwZVN0cmluZ0Zyb21UeXBlTmFtZVR5cGVQcmVmaXhOYW1lQW5kU3VwZXJUeXBlcyIsInRlcm1zIiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsImxhYmVscyIsImxhYmVsc1N0cmluZyIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc1N0cmluZyIsInN1cGVyVHlwZSIsImJhc2VUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zU3RyaW5nIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInNpZ25hdHVyZVN0cmluZyIsImVxdWl2YWxlbmNlU3RyaW5nIiwic3VicHJvb2YiLCJsYXN0U3RlcCIsImdldExhc3RTdGVwIiwiZ2V0U3VwcG9zaXRpb25zIiwibGFzdFN0ZXBTdHJpbmciLCJzdWJwcm9vZlN0cmluZyIsInR5cGVOYW1lIiwidHlwZVByZWZpeE5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVkdWN0aW9uIiwiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nIiwiZGVkdWN0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFzR2dCQTtlQUFBQTs7UUFqQ0FDO2VBQUFBOztRQW5EQUM7ZUFBQUE7O1FBNENBQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBNUNBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQTVDQUM7ZUFBQUE7O1FBa0ZBQztlQUFBQTs7O29CQXBGUztBQUVsQixTQUFTRCxxQkFBcUJFLEtBQUs7SUFDeEMsSUFBTUMsY0FBY0QsTUFBTUUsTUFBTSxDQUFDLFNBQUNELGFBQWFFO1FBQzdDLElBQU1DLGFBQWFELEtBQUtFLFNBQVM7UUFFakNKLGNBQWMsQUFBQ0EsZ0JBQWdCLE9BQ2hCLEFBQUMsR0FBa0JHLE9BQWhCSCxhQUFZLE1BQWUsT0FBWEcsY0FDaEJBO1FBRWxCLE9BQU9IO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFTyxTQUFTUix1QkFBdUJhLE1BQU07SUFDM0MsSUFBTUMsZUFBZUQsT0FBT0osTUFBTSxDQUFDLFNBQUNLLGNBQWNDO1FBQ2hELElBQU1DLGNBQWNELE1BQU1ILFNBQVM7UUFFbkNFLGVBQWUsQUFBQ0EsaUJBQWlCLE9BQ2hCRSxjQUNDLEFBQUMsR0FBbUJBLE9BQWpCRixjQUFhLE1BQWdCLE9BQVpFO1FBRXRDLE9BQU9GO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFTyxTQUFTWCwrQkFBK0JjLFVBQVU7SUFDdkQsSUFBTUMsbUJBQW1CRCxXQUFXUixNQUFNLENBQUMsU0FBQ1Msa0JBQWtCQztRQUM1RCxJQUFJQSxjQUFjQyxjQUFRLEVBQUU7WUFDMUIsSUFBTUMsa0JBQWtCRixVQUFVUCxTQUFTO1lBRTNDTSxtQkFBbUIsQUFBQ0EscUJBQXFCLE9BQ3BCLEFBQUMsSUFBbUIsT0FBaEJHLGlCQUFnQixPQUNsQixBQUFDLEdBQXdCQSxPQUF0Qkgsa0JBQWlCLE9BQXFCLE9BQWhCRyxpQkFBZ0I7UUFDbEU7UUFFQSxPQUFPSDtJQUNULEdBQUc7SUFFSCxPQUFPQTtBQUNUO0FBRU8sU0FBU2QsbUNBQW1Da0IsWUFBWTtJQUM3RCxJQUFNQyxxQkFBcUJELGFBQWFiLE1BQU0sQ0FBQyxTQUFDYyxvQkFBb0JDO1FBQ2xFLElBQU1DLG9CQUFvQkQsWUFBWVosU0FBUztRQUUvQ1cscUJBQXFCLEFBQUNBLHVCQUF1QixPQUN0QkUsb0JBQ0MsQUFBQyxHQUF5QkEsT0FBdkJGLG9CQUFtQixNQUFzQixPQUFsQkU7UUFFbEQsT0FBT0Y7SUFDVCxHQUFHO0lBRUgsT0FBT0E7QUFDVDtBQUVPLFNBQVN0Qix5QkFBeUJNLEtBQUs7SUFDNUMsSUFBTUMsY0FBY0gscUJBQXFCRSxRQUNuQ21CLGtCQUFrQixBQUFDLElBQWUsT0FBWmxCLGFBQVk7SUFFeEMsT0FBT2tCO0FBQ1Q7QUFFTyxTQUFTM0IsMkJBQTJCUSxLQUFLO0lBQzlDLElBQU1DLGNBQWNILHFCQUFxQkUsUUFDbkNvQixvQkFBb0JuQixhQUFjLEdBQUc7SUFFM0MsT0FBT21CO0FBQ1Q7QUFFTyxTQUFTekIsMkJBQTJCMEIsUUFBUTtJQUNqRCxJQUFNQyxXQUFXRCxTQUFTRSxXQUFXLElBQy9CUixlQUFlTSxTQUFTRyxlQUFlLElBQ3ZDQyxpQkFBaUJILFNBQVNqQixTQUFTLElBQ25DVyxxQkFBcUJuQixtQ0FBbUNrQixlQUN4RFcsaUJBQWlCLEFBQUMsSUFBOEJELE9BQTNCVCxvQkFBbUIsVUFBdUIsT0FBZlM7SUFFdEQsT0FBT0M7QUFDVDtBQUVPLFNBQVMzQixrREFBa0Q0QixRQUFRLEVBQUVDLGNBQWMsRUFBRWxCLFVBQVU7SUFDcEcsSUFBSW1CO0lBRUpBLGFBQWEsQUFBQ0QsbUJBQW1CLE9BQ2xCLEFBQUMsR0FBbUJELE9BQWpCQyxnQkFBMEIsT0FBVEQsWUFDbEJBO0lBRWpCLElBQU1oQixtQkFBbUJmLCtCQUErQmM7SUFFeEQsSUFBSUMscUJBQXFCLE1BQU07UUFDN0JrQixhQUFhLEFBQUMsR0FBZ0JsQixPQUFka0IsWUFBVyxLQUFvQixPQUFqQmxCO0lBQ2hDO0lBRUEsT0FBT2tCO0FBQ1Q7QUFFTyxTQUFTdEMsb0VBQW9FZSxNQUFNLEVBQUVTLFlBQVksRUFBRWUsU0FBUztJQUNqSCxJQUFJQztJQUVKLElBQU1mLHFCQUFxQm5CLG1DQUFtQ2tCLGVBQ3hEaUIsa0JBQWtCRixVQUFVekIsU0FBUyxJQUNyQ0UsZUFBZWQsdUJBQXVCYTtJQUU1QyxJQUFJQyxpQkFBaUIsTUFBTTtRQUN6QndCLG9DQUFvQyxBQUFDZix1QkFBdUIsT0FDdEIsQUFBQyxHQUFzQkEsT0FBcEJULGNBQWEsU0FBa0N5QixPQUEzQmhCLG9CQUFtQixVQUF3QixPQUFoQmdCLG1CQUNoRCxBQUFDLEdBQXFCQSxPQUFuQnpCLGNBQWEsUUFBc0IsT0FBaEJ5QjtJQUNoRSxPQUFPO1FBQ0xELG9DQUFvQyxBQUFDZix1QkFBdUIsT0FDdkIsQUFBQyxJQUE4QmdCLE9BQTNCaEIsb0JBQW1CLFVBQXdCLE9BQWhCZ0IsbUJBQzVCQTtJQUMxQztJQUVBLE9BQU9EO0FBQ1QifQ==
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZSB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXMucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICR7dGVybVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICB0ZXJtU3RyaW5nO1xuXG4gICAgcmV0dXJuIHRlcm1zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gdGVybXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNTdHJpbmcgPSBsYWJlbHMucmVkdWNlKChsYWJlbHNTdHJpbmcsIGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKTtcblxuICAgIGxhYmVsc1N0cmluZyA9IChsYWJlbHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9LCAke2xhYmVsU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gbGFiZWxzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gbGFiZWxzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlcy5yZWR1Y2UoKHByZW1pc2VzU3RyaW5nLCBwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHByZW1pc2UuZ2V0U3RyaW5nKCk7XG5cbiAgICBwcmVtaXNlc1N0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVtaXNlc1N0cmluZ30sICR7cHJlbWlzZVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVtaXNlU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwcmVtaXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyhoeXBvdGhlc2VzLCBjb250ZXh0KSB7XG4gIGNvbnN0IGh5cG90aGVzZXNTdHJpbmcgPSBoeXBvdGhlc2VzLnJlZHVjZSgoaHlwb3RoZXNlc1N0cmluZywgaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpO1xuXG4gICAgaHlwb3RoZXNlc1N0cmluZyA9IChoeXBvdGhlc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2h5cG90aGVzZXNTdHJpbmd9LCAke2h5cG90aGVzaXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHlwb3RoZXNpc1N0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXMucmVkdWNlKChzdXBlclR5cGVzU3RyaW5nLCBzdXBlclR5cGUpID0+IHtcbiAgICBpZiAoc3VwZXJUeXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAnJHtzdXBlclR5cGVTdHJpbmd9J2AgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBlclR5cGVzU3RyaW5nfSwgJyR7c3VwZXJUeXBlU3RyaW5nfSdgO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLnJlZHVjZSgocGFyYW1ldGVyc1N0cmluZywgcGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVyU3RyaW5nID0gcGFyYW1ldGVyLmdldFN0cmluZygpO1xuXG4gICAgcGFyYW1ldGVyc1N0cmluZyA9IChwYXJhbWV0ZXJzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyU3RyaW5nIDogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3BhcmFtZXRlcnNTdHJpbmd9LCAke3BhcmFtZXRlclN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNTdHJpbmdGcm9tQXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNTdHJpbmcgPSBhc3N1bXB0aW9ucy5yZWR1Y2UoKGFzc3VtcHRpb25zU3RyaW5nLCBhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvblN0cmluZyA9IGFzc3VtcHRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBhc3N1bXB0aW9uc1N0cmluZyA9IChhc3N1bXB0aW9uc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhc3N1bXB0aW9uU3RyaW5nIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHthc3N1bXB0aW9uc1N0cmluZ30sICR7YXNzdW1wdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnMucmVkdWNlKChzdXBwb3NpdGlvbnNTdHJpbmcsIHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBwb3NpdGlvbnNTdHJpbmd9LCAke3N1cHBvc2l0aW9uU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpLFxuICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpLFxuICAgICAgICBlcXVpdmFsZW5jZVN0cmluZyA9IHRlcm1zU3RyaW5nOyAgLy8vXG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VicHJvb2ZTdHJpbmdGcm9tU3VicHJvb2Yoc3VicHJvb2YpIHtcbiAgY29uc3QgbGFzdFN0ZXAgPSBzdWJwcm9vZi5nZXRMYXN0U3RlcCgpLFxuICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdWJwcm9vZi5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgbGFzdFN0ZXBTdHJpbmcgPSBsYXN0U3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBzdWJwcm9vZlN0cmluZyA9IGBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XSAuLi4gJHtsYXN0U3RlcFN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uKGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgY29uc3QgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcyksXG4gICAgICAgIGNvbmNsdXNpb25TdHJpbmcgPSBjb25jbHVzaW9uLmdldFN0cmluZygpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyksXG4gICAgICAgIHJ1bGVTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiBbJHtwcmVtaXNlc1N0cmluZ31dIC4uLiAke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tVHlwZU5hbWVUeXBlUHJlZml4TmFtZUFuZFN1cGVyVHlwZXModHlwZU5hbWUsIHR5cGVQcmVmaXhOYW1lLCBzdXBlclR5cGVzKSB7XG4gIGxldCB0eXBlU3RyaW5nO1xuXG4gIHR5cGVTdHJpbmcgPSAodHlwZVByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7dHlwZVByZWZpeE5hbWV9JHt0eXBlTmFtZX1gOlxuICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lO1xuXG4gIGNvbnN0IHN1cGVyVHlwZXNTdHJpbmcgPSBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcyk7XG5cbiAgaWYgKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpIHtcbiAgICB0eXBlU3RyaW5nID0gYCR7dHlwZVN0cmluZ306JHtzdXBlclR5cGVzU3RyaW5nfWA7XG4gIH1cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxTdHJpbmdGcm9tUHJvY2VkdXJlUmVmZXJlbmNlQW5kUGFyYW1ldGVycyhwcm9jZWR1cmVSZWZlcmVuY2UsIHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlTmFtZSA9IHByb2NlZHVyZVJlZmVyZW5jZS5nZXROYW1lKCksXG4gICAgICAgIHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzU3RyaW5nRnJvbVBhcmFtZXRlcnMocGFyYW1ldGVycyksXG4gICAgICAgIHByb2NlZHVyZUNhbGxTdHJpbmcgPSBgJHtwcm9jZWR1cmVSZWZlcmVuY2VOYW1lfSgke3BhcmFtZXRlcnNTdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNBeGlvbUxlbW1hVGhlb3JlbUFuZENvbmplY3R1cmUoaHlwb3RoZXNlcywgYXhpb20sIGxlbW1hLCB0aGVvcmVtLCBjb25qZWN0dXJlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlID0gKGF4aW9tIHx8IGxlbW1hIHx8IHRoZW9yZW0gfHwgY29uamVjdHVyZSksXG4gICAgICAgIGF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlU3RyaW5nID0gYXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgIGh5cG90aGVzZXNTdHJpbmcgPSBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcywgY29udGV4dCksXG4gICAgICAgIHNlY3Rpb25TdHJpbmcgPSAoYXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYFske2h5cG90aGVzZXNTdHJpbmd9XTo6OiAke2F4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogYDtcblxuICByZXR1cm4gc2VjdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYU1ldGF0aGVvcmVtU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YUxlbW1hTWV0YXRoZW9yZW1TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0gLi4uICR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gbWV0YUxlbW1hTWV0YXRoZW9yZW1TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmdGcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgbGV0IGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZztcblxuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpO1xuXG4gIGlmIChsYWJlbHNTdHJpbmcgIT09IG51bGwpIHtcbiAgICBheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dIC4uLiAke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuICB9IGVsc2Uge1xuICAgIGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFske3N1cHBvc2l0aW9uc1N0cmluZ31dIC4uLiAke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyIsImF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZ0Zyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyIsImxhYmVsc1N0cmluZ0Zyb21MYWJlbHMiLCJtZXRhTGVtbWFNZXRhdGhlb3JlbVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24iLCJzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNBeGlvbUxlbW1hVGhlb3JlbUFuZENvbmplY3R1cmUiLCJzaWduYXR1cmVTdHJpbmdGcm9tVGVybXMiLCJzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZiIsInN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyIsInN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInR5cGVTdHJpbmdGcm9tVHlwZU5hbWVUeXBlUHJlZml4TmFtZUFuZFN1cGVyVHlwZXMiLCJ0ZXJtcyIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJsYWJlbHMiLCJsYWJlbHNTdHJpbmciLCJsYWJlbCIsImxhYmVsU3RyaW5nIiwicHJlbWlzZXMiLCJwcmVtaXNlc1N0cmluZyIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiaHlwb3RoZXNlcyIsImNvbnRleHQiLCJoeXBvdGhlc2VzU3RyaW5nIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNTdHJpbmciLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc1N0cmluZyIsInN1cGVyVHlwZSIsImJhc2VUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcnNTdHJpbmciLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJTdHJpbmciLCJhc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zU3RyaW5nIiwiYXNzdW1wdGlvbiIsImFzc3VtcHRpb25TdHJpbmciLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNTdHJpbmciLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJzdWJwcm9vZiIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJnZXRTdXBwb3NpdGlvbnMiLCJsYXN0U3RlcFN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiY29uY2x1c2lvbiIsImNvbmNsdXNpb25TdHJpbmciLCJydWxlU3RyaW5nIiwidHlwZU5hbWUiLCJ0eXBlUHJlZml4TmFtZSIsInR5cGVTdHJpbmciLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJheGlvbSIsImxlbW1hIiwidGhlb3JlbSIsImNvbmplY3R1cmUiLCJheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSIsImF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlU3RyaW5nIiwic2VjdGlvblN0cmluZyIsImRlZHVjdGlvbiIsImRlZHVjdGlvblN0cmluZyIsIm1ldGFMZW1tYU1ldGF0aGVvcmVtU3RyaW5nIiwiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEwRmdCQTtlQUFBQTs7UUE2R0FDO2VBQUFBOztRQTFFQUM7ZUFBQUE7O1FBL0VBQztlQUFBQTs7UUE1QkFDO2VBQUFBOztRQTBLQUM7ZUFBQUE7O1FBaEhBQztlQUFBQTs7UUE1Q0FDO2VBQUFBOztRQXlJQUM7ZUFBQUE7O1FBM0JBQztlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQTNEQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQXhFQUM7ZUFBQUE7O1FBNENBQztlQUFBQTs7UUFwR0FDO2VBQUFBOztRQXFKQUM7ZUFBQUE7OztvQkF2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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.428",
4
+ "version": "1.0.436",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -25,9 +25,9 @@ import { typesFromJSON,
25
25
  metaLemmasFromNothing,
26
26
  theoremsToTheoremsJSON,
27
27
  variablesToVariablesJSON,
28
- typePrefixesToTypePrefixesJSON,
29
28
  conjecturesToConjecturesJSON,
30
29
  combinatorsToCombinatorsJSON,
30
+ typePrefixesToTypePrefixesJSON,
31
31
  constructorsToConstructorsJSON,
32
32
  metatheoremsToMetatheoremsJSON,
33
33
  metavariablesToMetavariablesJSON } from "../utilities/json";
@@ -1,22 +1,10 @@
1
1
  "use strict";
2
2
 
3
- export default class Assertion {
4
- constructor(context, string, node) {
5
- this.context = context;
6
- this.string = string;
7
- this.node = node;
8
- }
9
-
10
- getContext() {
11
- return this.context;
12
- }
3
+ import Element from "../element";
13
4
 
14
- getString() {
15
- return this.string;
16
- }
17
-
18
- getNode() {
19
- return this.node;
5
+ export default class Assertion extends Element {
6
+ constructor(context, string, node) {
7
+ super(context, string, node);
20
8
  }
21
9
 
22
10
  matchAssertionNode(assertionNode) { return this.node.match(assertionNode); }
@@ -1,27 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
 
5
6
  import { define } from "../elements";
6
7
  import { unifyStatementIntrinsically } from "../process/unify";
7
8
  import { referenceFromJSON, referenceToReferenceJSON } from "../utilities/json";
8
9
 
9
- export default define(class Assumption {
10
- constructor(string, node, statement, reference) {
11
- this.string = string;
12
- this.node = node;
10
+ export default define(class Assumption extends Element {
11
+ constructor(context, string, node, statement, reference) {
12
+ super(context, string, node);
13
+
13
14
  this.statement = statement;
14
15
  this.reference = reference;
15
16
  }
16
17
 
17
- getString() {
18
- return this.string;
19
- }
20
-
21
- getNode() {
22
- return this.node;
23
- }
24
-
25
18
  getStatement() {
26
19
  return this.statement;
27
20
  }
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
+ import Element from "../element";
5
6
  import elements from "../elements";
6
7
  import LocalContext from "../context/local";
7
8
 
@@ -18,11 +19,10 @@ import { labelsFromJSON,
18
19
 
19
20
  const { extract, reverse, correlate, backwardsEvery } = arrayUtilities;
20
21
 
21
- export default class AxiomLemmaTheoremConjecture {
22
+ export default class AxiomLemmaTheoremConjecture extends Element {
22
23
  constructor(context, string, node, labels, suppositions, deduction, proof, signature, hypotheses) {
23
- this.context = context;
24
- this.string = string;
25
- this.node = node;
24
+ super(context, string, node);
25
+
26
26
  this.labels = labels;
27
27
  this.suppositions = suppositions;
28
28
  this.deduction = deduction;
@@ -31,18 +31,6 @@ export default class AxiomLemmaTheoremConjecture {
31
31
  this.hypotheses = hypotheses;
32
32
  }
33
33
 
34
- getContext() {
35
- return this.context;
36
- }
37
-
38
- getNode() {
39
- return this.node;
40
- }
41
-
42
- getString() {
43
- return this.string;
44
- }
45
-
46
34
  getLabels() {
47
35
  return this.labels;
48
36
  }
@@ -1,28 +1,16 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import TemporaryContext from "../context/temporary";
4
5
 
5
6
  import { define } from "../elements";
6
7
  import { termsFromJSON, framesFromJSON, statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
7
8
 
8
- export default define(class Conclusion {
9
+ export default define(class Conclusion extends Element {
9
10
  constructor(context, string, node, statement) {
10
- this.context = context;
11
- this.string = string;
12
- this.node = node;
13
- this.statement = statement;
14
- }
15
-
16
- getContext() {
17
- return this.context;
18
- }
11
+ super(context, string, node);
19
12
 
20
- getNode() {
21
- return this.node;
22
- }
23
-
24
- getString() {
25
- return this.string;
13
+ this.statement = statement;
26
14
  }
27
15
 
28
16
  getStatement() {
@@ -1,21 +1,9 @@
1
1
  "use strict";
2
2
 
3
- export default class Declaration {
4
- constructor(context, string, node) {
5
- this.context = context;
6
- this.string = string;
7
- this.node = node;
8
- }
9
-
10
- getContext() {
11
- return this.context;
12
- }
3
+ import Element from "../element";
13
4
 
14
- getString() {
15
- return this.string;
16
- }
17
-
18
- getNode() {
19
- return this.node;
5
+ export default class Declaration extends Element {
6
+ constructor(context, string, node) {
7
+ super(context, string, node);
20
8
  }
21
9
  }
@@ -1,30 +1,16 @@
1
1
  "use strict";
2
2
 
3
- import elements from "../elements";
3
+ import Element from "../element";
4
4
  import TemporaryContext from "../context/temporary";
5
5
 
6
6
  import { define } from "../elements";
7
7
  import { termsFromJSON, framesFromJSON, statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
8
8
 
9
- export default define(class Deduction {
10
- constructor(context, string, statement) {
11
- this.context = context;
12
- this.string = string;
13
- this.node = node;
14
- this.string = string;
15
- this.statement = statement;
16
- }
17
-
18
- getContext() {
19
- return this.context;
20
- }
9
+ export default define(class Deduction extends Element {
10
+ constructor(context, string, node, statement) {
11
+ super(context, string, node);
21
12
 
22
- getString() {
23
- return this.string;
24
- }
25
-
26
- getNode() {
27
- return this.node;
13
+ this.statement = statement;
28
14
  }
29
15
 
30
16
  getStatement() {
@@ -2,14 +2,17 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
+ import Element from "../element";
5
6
  import assignAssignments from "../process/assign";
6
7
 
7
8
  import { define } from "../elements";
8
9
 
9
10
  const { last } = arrayUtilities;
10
11
 
11
- export default define(class Derivation {
12
- constructor(stepsOrSubproofs) {
12
+ export default define(class Derivation extends Element {
13
+ constructor(context, string, node, stepsOrSubproofs) {
14
+ super(context, string, node);
15
+
13
16
  this.stepsOrSubproofs = stepsOrSubproofs;
14
17
  }
15
18
 
@@ -1,32 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
 
5
6
  import { define } from "../elements";
6
7
  import { equateTerms } from "../process/equate";
7
8
  import { equalityAssignmentFromEquality, variableAssignmentFromVariable } from "../process/assign";
8
9
 
9
- export default define(class Equality {
10
+ export default define(class Equality extends Element {
10
11
  constructor(context, string, node, leftTerm, rightTerm) {
11
- this.context = context;
12
- this.string = string;
13
- this.node = node;
12
+ super(context, string, node);
13
+
14
14
  this.leftTerm = leftTerm;
15
15
  this.rightTerm = rightTerm;
16
16
  }
17
17
 
18
- getContext() {
19
- return this.context;
20
- }
21
-
22
- getString() {
23
- return this.string;
24
- }
25
-
26
- getNode() {
27
- return this.node;
28
- }
29
-
30
18
  getLeftTerm() {
31
19
  return this.leftTerm;
32
20
  }
@@ -2,6 +2,8 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
+ import Element from "../element";
6
+
5
7
  import { define } from "../elements";
6
8
  import { termsStringFromTerms } from "../utilities/string";
7
9
  import { instantiateEquivalence } from "../process/instantiate";
@@ -10,26 +12,12 @@ import { equalivanceFromEquivalenceNode } from "../utilities/element";
10
12
 
11
13
  const { compress } = arrayUtilities;
12
14
 
13
- export default define(class Equivalence {
15
+ export default define(class Equivalence extends Element {
14
16
  constructor(context, string, node, terms) {
15
- this.context = context;
16
- this.string = string;
17
- this.node = node;
17
+ super(context, string, node);
18
18
  this.terms = terms;
19
19
  }
20
20
 
21
- getContext() {
22
- return this.context;
23
- }
24
-
25
- getString() {
26
- return this.string;
27
- }
28
-
29
- getNode() {
30
- return this.node;
31
- }
32
-
33
21
  getTerms() {
34
22
  return this.terms;
35
23
  }
@@ -2,13 +2,18 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
+ import Element from "../element";
6
+
5
7
  import { define } from "../elements";
8
+ import { EMPTY_STRING } from "../constants";
6
9
  import { variablesFromTerm } from "./term";
7
10
 
8
11
  const { push, separate } = arrayUtilities;
9
12
 
10
- export default define(class Equivalences {
11
- constructor(array) {
13
+ export default define(class Equivalences extends Element {
14
+ constructor(context, string, node, array) {
15
+ super(context, string, node);
16
+
12
17
  this.array = array;
13
18
  }
14
19
 
@@ -185,9 +190,11 @@ export default define(class Equivalences {
185
190
  return equivalences;
186
191
  }
187
192
 
188
- static fromNothing() {
189
- const array = [],
190
- equivalences = new Equivalences(array);
193
+ static fromNothing(context) {
194
+ const string = EMPTY_STRING,
195
+ node = null,
196
+ array = [],
197
+ equivalences = new Equivalences(context, string, node, array);
191
198
 
192
199
  return equivalences;
193
200
  }
@@ -1,24 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class Error {
7
+ export default define(class Error extends Element {
6
8
  constructor(context, string, node) {
7
- this.context = context;
8
- this.string = string;
9
- this.node = node;
10
- }
11
-
12
- getContext() {
13
- return this.context;
14
- }
15
-
16
- getString() {
17
- return this.string;
18
- }
19
-
20
- getNode() {
21
- return this.node;
9
+ super(context, string, node);
22
10
  }
23
11
 
24
12
  verify() {
@@ -32,12 +20,4 @@ export default define(class Error {
32
20
  }
33
21
 
34
22
  static name = "Error";
35
-
36
- static fromErrorNode(errorNode, context) {
37
- const node = errorNode, ///
38
- string = context.nodeAsString(node),
39
- error = new Error(context, string, node);
40
-
41
- return error;
42
- }
43
23
  });