occam-verify-cli 0.0.1111 → 0.0.1114

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 (197) hide show
  1. package/lib/combinator/bracketed.js +15 -65
  2. package/lib/combinator.js +4 -8
  3. package/lib/constructor/bracketed.js +24 -101
  4. package/lib/constructor.js +4 -8
  5. package/lib/context/file.js +41 -12
  6. package/lib/context/local.js +45 -25
  7. package/lib/context/release.js +2 -2
  8. package/lib/dom/assertion/contained.js +287 -0
  9. package/lib/dom/assertion/defined.js +266 -0
  10. package/lib/dom/assertion/subproof.js +210 -0
  11. package/lib/dom/assertion/type.js +240 -0
  12. package/lib/{axiom.js → dom/axiom.js} +18 -8
  13. package/lib/dom/conclusion.js +171 -0
  14. package/lib/{conjecture.js → dom/conjecture.js} +18 -8
  15. package/lib/dom/consequent.js +171 -0
  16. package/lib/dom/declaration/combinator.js +105 -0
  17. package/lib/dom/declaration/constructor.js +140 -0
  18. package/lib/dom/declaration/metavariable.js +154 -0
  19. package/lib/dom/declaration/type.js +140 -0
  20. package/lib/dom/declaration/variable.js +155 -0
  21. package/lib/{declaration.js → dom/declaration.js} +62 -18
  22. package/lib/dom/derivation.js +137 -0
  23. package/lib/dom/equality.js +260 -0
  24. package/lib/dom/error.js +85 -0
  25. package/lib/dom/frame.js +372 -0
  26. package/lib/dom/judgement.js +198 -0
  27. package/lib/dom/label.js +190 -0
  28. package/lib/{lemma.js → dom/lemma.js} +19 -9
  29. package/lib/{metaLemma.js → dom/metaLemma.js} +19 -9
  30. package/lib/dom/metaType.js +261 -0
  31. package/lib/dom/metatheorem.js +273 -0
  32. package/lib/dom/metavariable.js +463 -0
  33. package/lib/dom/premise.js +221 -0
  34. package/lib/dom/proof.js +154 -0
  35. package/lib/dom/proofStep.js +239 -0
  36. package/lib/dom/reference.js +218 -0
  37. package/lib/dom/rule.js +311 -0
  38. package/lib/dom/statement.js +379 -0
  39. package/lib/dom/subDerivation.js +137 -0
  40. package/lib/dom/subproof.js +211 -0
  41. package/lib/dom/supposition.js +221 -0
  42. package/lib/dom/term.js +354 -0
  43. package/lib/{theorem.js → dom/theorem.js} +18 -8
  44. package/lib/dom/topLevelAssertion.js +306 -0
  45. package/lib/dom/type.js +327 -0
  46. package/lib/dom/variable.js +328 -0
  47. package/lib/dom.js +27 -0
  48. package/lib/equivalences.js +307 -0
  49. package/lib/index.js +40 -35
  50. package/lib/mixins/proofStep/unify.js +86 -0
  51. package/lib/mixins/statement/verify.js +27 -2
  52. package/lib/mixins/term/verify.js +24 -4
  53. package/lib/substitution/frame.js +3 -3
  54. package/lib/substitution/statement.js +17 -16
  55. package/lib/substitution/term.js +10 -7
  56. package/lib/substitution.js +4 -31
  57. package/lib/substitutions.js +24 -56
  58. package/lib/unifier/equality.js +2 -3
  59. package/lib/unifier/label.js +3 -3
  60. package/lib/unifier/metaLevel.js +9 -8
  61. package/lib/unifier/metavariable.js +3 -3
  62. package/lib/unifier/statementWithCombinator.js +5 -5
  63. package/lib/unifier/termWithConstructor.js +3 -3
  64. package/lib/utilities/json.js +26 -40
  65. package/lib/utilities/string.js +6 -8
  66. package/lib/utilities/subproof.js +2 -2
  67. package/lib/utilities/substitutions.js +7 -6
  68. package/lib/utilities/verification.js +22 -14
  69. package/lib/verifier/combinator.js +4 -4
  70. package/lib/verifier/constructor.js +3 -3
  71. package/lib/verifier/topLevel.js +15 -21
  72. package/package.json +1 -1
  73. package/src/combinator/bracketed.js +11 -4
  74. package/src/combinator.js +3 -10
  75. package/src/constructor/bracketed.js +17 -5
  76. package/src/constructor.js +3 -9
  77. package/src/context/file.js +42 -11
  78. package/src/context/local.js +26 -34
  79. package/src/context/release.js +1 -1
  80. package/src/{assertion → dom/assertion}/contained.js +11 -8
  81. package/src/{assertion → dom/assertion}/defined.js +14 -11
  82. package/src/{assertion → dom/assertion}/subproof.js +11 -62
  83. package/src/{assertion → dom/assertion}/type.js +11 -8
  84. package/src/{axiom.js → dom/axiom.js} +6 -9
  85. package/src/dom/conclusion.js +95 -0
  86. package/src/{conjecture.js → dom/conjecture.js} +5 -8
  87. package/src/dom/consequent.js +95 -0
  88. package/src/{declaration → dom/declaration}/combinator.js +8 -5
  89. package/src/{declaration → dom/declaration}/constructor.js +8 -4
  90. package/src/{declaration → dom/declaration}/metavariable.js +8 -5
  91. package/src/{declaration → dom/declaration}/type.js +8 -4
  92. package/src/{declaration → dom/declaration}/variable.js +9 -6
  93. package/src/{declaration.js → dom/declaration.js} +11 -16
  94. package/src/{derivation.js → dom/derivation.js} +9 -12
  95. package/src/{equality.js → dom/equality.js} +11 -14
  96. package/src/{error.js → dom/error.js} +6 -3
  97. package/src/{frame.js → dom/frame.js} +14 -23
  98. package/src/{judgement.js → dom/judgement.js} +8 -11
  99. package/src/{label.js → dom/label.js} +9 -16
  100. package/src/{lemma.js → dom/lemma.js} +5 -9
  101. package/src/{metaLemma.js → dom/metaLemma.js} +6 -9
  102. package/src/{metaType.js → dom/metaType.js} +7 -10
  103. package/src/{metatheorem.js → dom/metatheorem.js} +6 -10
  104. package/src/{metavariable.js → dom/metavariable.js} +79 -77
  105. package/src/dom/premise.js +173 -0
  106. package/src/{proof.js → dom/proof.js} +8 -11
  107. package/src/dom/proofStep.js +173 -0
  108. package/src/{reference.js → dom/reference.js} +48 -20
  109. package/src/{rule.js → dom/rule.js} +13 -17
  110. package/src/{statement.js → dom/statement.js} +142 -71
  111. package/src/{subDerivation.js → dom/subDerivation.js} +9 -12
  112. package/src/{subproof.js → dom/subproof.js} +14 -47
  113. package/src/dom/supposition.js +173 -0
  114. package/src/{term.js → dom/term.js} +24 -45
  115. package/src/{theorem.js → dom/theorem.js} +5 -8
  116. package/src/{topLevelAssertion.js → dom/topLevelAssertion.js} +12 -14
  117. package/src/{type.js → dom/type.js} +9 -12
  118. package/src/{variable.js → dom/variable.js} +20 -28
  119. package/src/dom.js +13 -0
  120. package/src/equivalences.js +278 -0
  121. package/src/index.js +39 -34
  122. package/src/mixins/proofStep/unify.js +115 -0
  123. package/src/mixins/statement/verify.js +33 -1
  124. package/src/mixins/term/verify.js +33 -3
  125. package/src/substitution/frame.js +2 -2
  126. package/src/substitution/statement.js +20 -18
  127. package/src/substitution/term.js +12 -5
  128. package/src/substitution.js +4 -29
  129. package/src/substitutions.js +35 -73
  130. package/src/unifier/equality.js +1 -2
  131. package/src/unifier/label.js +2 -2
  132. package/src/unifier/metaLevel.js +9 -7
  133. package/src/unifier/metavariable.js +2 -2
  134. package/src/unifier/statementWithCombinator.js +4 -4
  135. package/src/unifier/termWithConstructor.js +2 -2
  136. package/src/utilities/json.js +23 -42
  137. package/src/utilities/string.js +8 -6
  138. package/src/utilities/subproof.js +2 -2
  139. package/src/utilities/substitutions.js +7 -5
  140. package/src/utilities/verification.js +29 -13
  141. package/src/verifier/combinator.js +3 -3
  142. package/src/verifier/constructor.js +3 -3
  143. package/src/verifier/topLevel.js +20 -21
  144. package/lib/assertion/contained.js +0 -232
  145. package/lib/assertion/defined.js +0 -211
  146. package/lib/assertion/subproof.js +0 -203
  147. package/lib/assertion/type.js +0 -185
  148. package/lib/conclusion.js +0 -130
  149. package/lib/consequent.js +0 -130
  150. package/lib/declaration/combinator.js +0 -90
  151. package/lib/declaration/constructor.js +0 -90
  152. package/lib/declaration/metavariable.js +0 -104
  153. package/lib/declaration/type.js +0 -90
  154. package/lib/declaration/variable.js +0 -105
  155. package/lib/derivation.js +0 -91
  156. package/lib/equality.js +0 -209
  157. package/lib/error.js +0 -70
  158. package/lib/frame.js +0 -331
  159. package/lib/judgement.js +0 -147
  160. package/lib/label.js +0 -141
  161. package/lib/metaType.js +0 -255
  162. package/lib/metatheorem.js +0 -263
  163. package/lib/metavariable.js +0 -399
  164. package/lib/mixins/statement/qualified/unify.js +0 -69
  165. package/lib/mixins/statement/unify.js +0 -42
  166. package/lib/mixins/statement/unifyIndependenntly.js +0 -46
  167. package/lib/mixins/term/unify.js +0 -40
  168. package/lib/premise.js +0 -184
  169. package/lib/proof.js +0 -103
  170. package/lib/proofStep.js +0 -179
  171. package/lib/reference.js +0 -145
  172. package/lib/rule.js +0 -259
  173. package/lib/shim.js +0 -14
  174. package/lib/statement/qualified.js +0 -152
  175. package/lib/statement/unqualified.js +0 -175
  176. package/lib/statement.js +0 -270
  177. package/lib/subDerivation.js +0 -91
  178. package/lib/subproof.js +0 -181
  179. package/lib/supposition.js +0 -184
  180. package/lib/term.js +0 -318
  181. package/lib/topLevelAssertion.js +0 -305
  182. package/lib/type.js +0 -321
  183. package/lib/utilities/equivalences.js +0 -178
  184. package/lib/variable.js +0 -281
  185. package/src/conclusion.js +0 -96
  186. package/src/consequent.js +0 -96
  187. package/src/mixins/statement/qualified/unify.js +0 -103
  188. package/src/mixins/statement/unify.js +0 -41
  189. package/src/mixins/statement/unifyIndependenntly.js +0 -58
  190. package/src/mixins/term/unify.js +0 -36
  191. package/src/premise.js +0 -183
  192. package/src/proofStep.js +0 -181
  193. package/src/shim.js +0 -5
  194. package/src/statement/qualified.js +0 -133
  195. package/src/statement/unqualified.js +0 -166
  196. package/src/supposition.js +0 -183
  197. package/src/utilities/equivalences.js +0 -183
package/lib/variable.js DELETED
@@ -1,281 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _shim = /*#__PURE__*/ _interop_require_default(require("./shim"));
12
- var _local = /*#__PURE__*/ _interop_require_default(require("./context/local"));
13
- var _term = /*#__PURE__*/ _interop_require_default(require("./substitution/term"));
14
- var _query = require("./utilities/query");
15
- var _type = require("./type");
16
- var _name = require("./utilities/name");
17
- var _json = require("./utilities/json");
18
- var _variable = require("./nodeAndTokens/variable");
19
- function _class_call_check(instance, Constructor) {
20
- if (!(instance instanceof Constructor)) {
21
- throw new TypeError("Cannot call a class as a function");
22
- }
23
- }
24
- function _defineProperties(target, props) {
25
- for(var i = 0; i < props.length; i++){
26
- var descriptor = props[i];
27
- descriptor.enumerable = descriptor.enumerable || false;
28
- descriptor.configurable = true;
29
- if ("value" in descriptor) descriptor.writable = true;
30
- Object.defineProperty(target, descriptor.key, descriptor);
31
- }
32
- }
33
- function _create_class(Constructor, protoProps, staticProps) {
34
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
35
- if (staticProps) _defineProperties(Constructor, staticProps);
36
- return Constructor;
37
- }
38
- function _interop_require_default(obj) {
39
- return obj && obj.__esModule ? obj : {
40
- default: obj
41
- };
42
- }
43
- var termVariableNodeQuery = (0, _query.nodeQuery)("/term/variable!"), variableDeclarationTypeNodeQuery = (0, _query.nodeQuery)("/variableDeclaration/type"), variableDeclarationVariableNodeQuery = (0, _query.nodeQuery)("/variableDeclaration/variable");
44
- var Variable = /*#__PURE__*/ function() {
45
- function Variable(string, node, name, type) {
46
- _class_call_check(this, Variable);
47
- this.string = string;
48
- this.node = node;
49
- this.name = name;
50
- this.type = type;
51
- }
52
- _create_class(Variable, [
53
- {
54
- key: "getString",
55
- value: function getString() {
56
- return this.string;
57
- }
58
- },
59
- {
60
- key: "getNode",
61
- value: function getNode() {
62
- return this.node;
63
- }
64
- },
65
- {
66
- key: "getName",
67
- value: function getName() {
68
- return this.name;
69
- }
70
- },
71
- {
72
- key: "getType",
73
- value: function getType() {
74
- return this.type;
75
- }
76
- },
77
- {
78
- key: "setType",
79
- value: function setType(type) {
80
- this.type = type;
81
- }
82
- },
83
- {
84
- key: "matchVariableName",
85
- value: function matchVariableName(variableName) {
86
- var nameMatches = variableName === this.name;
87
- return nameMatches;
88
- }
89
- },
90
- {
91
- key: "isEqualTo",
92
- value: function isEqualTo(variable) {
93
- var equalTo = false;
94
- if (variable !== null) {
95
- var variableString = variable.getString();
96
- equalTo = variableString === this.string;
97
- }
98
- return equalTo;
99
- }
100
- },
101
- {
102
- key: "isEssentiallyEqualToTerm",
103
- value: function isEssentiallyEqualToTerm(term, generalContext, specificContext) {
104
- var essentiallyEqualToTerm = false;
105
- var generalContextFilePath = generalContext.getFilePath(), specificContextFilePath = specificContext.getFilePath();
106
- if (generalContextFilePath === specificContextFilePath) {
107
- var termString = term.getString();
108
- if (termString === this.string) {
109
- essentiallyEqualToTerm = true;
110
- }
111
- }
112
- return essentiallyEqualToTerm;
113
- }
114
- },
115
- {
116
- key: "verify",
117
- value: function verify(context) {
118
- var verified;
119
- var variableString = this.string; ///
120
- context.trace("Verifying the '".concat(variableString, "' variable..."));
121
- var variableName = this.name, variable = context.findVariableByVariableName(variableName);
122
- if (variable !== null) {
123
- var type = variable.getType();
124
- this.type = type;
125
- verified = true;
126
- } else {
127
- context.debug("The '".concat(variableString, "' variable is not present."));
128
- }
129
- if (verified) {
130
- var typeName = this.type.getName();
131
- context.debug("...verified the '".concat(variableString, ":").concat(typeName, "' variable."));
132
- }
133
- return verified;
134
- }
135
- },
136
- {
137
- key: "verifyType",
138
- value: function verifyType(fileContext) {
139
- var typeVerified;
140
- if (this.type === _type.objectType) {
141
- typeVerified = true;
142
- } else {
143
- var typeName = this.type.getName();
144
- fileContext.trace("Verifying the '".concat(typeName, "' type..."));
145
- var type = fileContext.findTypeByTypeName(typeName);
146
- if (type === null) {
147
- fileContext.debug("The '".concat(typeName, "' type is missing."));
148
- } else {
149
- this.type = type; ///
150
- typeVerified = true;
151
- }
152
- if (typeVerified) {
153
- fileContext.debug("...verified the '".concat(typeName, "' type."));
154
- }
155
- }
156
- return typeVerified;
157
- }
158
- },
159
- {
160
- key: "verifyWhenDeclared",
161
- value: function verifyWhenDeclared(fileContext) {
162
- var verifiedWhenDeclared;
163
- var variableString = this.string; ///
164
- fileContext.trace("Verifying the '".concat(variableString, "' variable when declared..."));
165
- var variableName = this.name, variablePresent = fileContext.isVariablePresentByVariableName(variableName);
166
- if (variablePresent) {
167
- fileContext.debug("The '".concat(variableName, "' variable is already present."));
168
- } else {
169
- var metavariableName = this.name, metavariablePresent = fileContext.isMetavariablePresentByMetavariableName(metavariableName);
170
- if (metavariablePresent) {
171
- fileContext.debug("A '".concat(metavariableName, "' variable is already present."));
172
- } else {
173
- var typeVerified = this.verifyType(fileContext);
174
- verifiedWhenDeclared = typeVerified; ///
175
- }
176
- }
177
- if (verifiedWhenDeclared) {
178
- fileContext.debug("...verified the '".concat(variableString, "' variable when declared."));
179
- }
180
- return verifiedWhenDeclared;
181
- }
182
- },
183
- {
184
- key: "unifyTerm",
185
- value: function unifyTerm(term, substitutions, generalContext, specificContext) {
186
- var contextsReversed = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
187
- var termUnified = false;
188
- var termString = term.getString(), variableString = this.string; ///
189
- specificContext.trace("Unifying the '".concat(termString, "' term with the '").concat(variableString, "' variable..."));
190
- var essentiallyEqualToTerm = this.isEssentiallyEqualToTerm(term, generalContext, specificContext);
191
- if (essentiallyEqualToTerm) {
192
- termUnified = true;
193
- } else {
194
- var variable = this, substitutionPresent = substitutions.isSubstitutionPresentByVariable(variable);
195
- if (substitutionPresent) {
196
- var substitution = substitutions.findSubstitutionByVariable(variable), substitutionTermEqualToTerm = substitution.isTermEqualTo(term);
197
- if (substitutionTermEqualToTerm) {
198
- termUnified = true;
199
- }
200
- } else {
201
- var context = contextsReversed ? generalContext : specificContext;
202
- var variable1 = this, termSubstitution = _term.default.fromTernAndVariable(term, variable1, context), substitution1 = termSubstitution; ///
203
- context = specificContext; ///
204
- substitutions.addSubstitution(substitution1, context);
205
- termUnified = true;
206
- }
207
- }
208
- if (termUnified) {
209
- specificContext.debug("...unified the '".concat(termString, "' term with the '").concat(variableString, "' variable."));
210
- }
211
- return termUnified;
212
- }
213
- },
214
- {
215
- key: "toJSON",
216
- value: function toJSON() {
217
- var typeJSON = (0, _json.typeToTypeJSON)(this.type), string = this.string, type = typeJSON, json = {
218
- type: type,
219
- string: string
220
- };
221
- return json;
222
- }
223
- }
224
- ], [
225
- {
226
- key: "fromJSON",
227
- value: function fromJSON(json, fileContext) {
228
- var string = json.string, localContext = _local.default.fromFileContext(fileContext), context = localContext, variableString = string, variableNode = (0, _variable.variableNodeFromVariableString)(variableString, context), variableName = (0, _name.variableNameFromVariableNode)(variableNode), node = variableNode, name = variableName, type = (0, _json.typeFromJSON)(json, fileContext), variable = new Variable(string, node, name, type);
229
- return variable;
230
- }
231
- },
232
- {
233
- key: "fromTermNode",
234
- value: function fromTermNode(termNode, context) {
235
- var variable = null;
236
- var termVariableNode = termVariableNodeQuery(termNode);
237
- if (termVariableNode !== null) {
238
- var variableNode = termVariableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), node = variableNode, string = context.nodeAsString(node), name = variableName, type = null;
239
- variable = new Variable(string, node, name, type);
240
- }
241
- return variable;
242
- }
243
- },
244
- {
245
- key: "fromVariableNode",
246
- value: function fromVariableNode(variableNode, context) {
247
- var variable = null;
248
- if (variableNode !== null) {
249
- var node = variableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), string = context.nodeAsString(node), name = variableName, type = null;
250
- variable = new Variable(string, node, name, type);
251
- }
252
- return variable;
253
- }
254
- },
255
- {
256
- key: "fromVariableNodeAndType",
257
- value: function fromVariableNodeAndType(variableNode, type, context) {
258
- var variable = null;
259
- if (variableNode !== null) {
260
- var node = variableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), string = context.nodeAsString(node), name = variableName; ///
261
- variable = new Variable(string, node, name, type);
262
- }
263
- return variable;
264
- }
265
- },
266
- {
267
- key: "fromVariableDeclarationNode",
268
- value: function fromVariableDeclarationNode(variableDeclarationNode, fileContext) {
269
- var Type = _shim.default.Type, variableDeclarationTypeNode = variableDeclarationTypeNodeQuery(variableDeclarationNode), variableDeclarationVariableNode = variableDeclarationVariableNodeQuery(variableDeclarationNode), typeNode = variableDeclarationTypeNode, variableNode = variableDeclarationVariableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), context = _local.default.fromFileContext(fileContext), variableString = fileContext.nodeAsString(variableNode), string = variableString, node = variableNode, name = variableName, type = Type.fromTypeNode(typeNode, context), variable = new Variable(string, node, name, type);
270
- return variable;
271
- }
272
- }
273
- ]);
274
- return Variable;
275
- }();
276
- Object.assign(_shim.default, {
277
- Variable: Variable
278
- });
279
- var _default = Variable;
280
-
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgVGVybVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi90eXBlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlfSBmcm9tIFwiLi91dGlsaXRpZXMvbmFtZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmcgfSBmcm9tIFwiLi9ub2RlQW5kVG9rZW5zL3ZhcmlhYmxlXCI7XG5cbmNvbnN0IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKSxcbiAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25UeXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3ZhcmlhYmxlRGVjbGFyYXRpb24vdHlwZVwiKSxcbiAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YXJpYWJsZURlY2xhcmF0aW9uL3ZhcmlhYmxlXCIpO1xuXG5jbGFzcyBWYXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBtYXRjaFZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lTWF0Y2hlcyA9ICh2YXJpYWJsZU5hbWUgPT09IHRoaXMubmFtZSk7XG5cbiAgICByZXR1cm4gbmFtZU1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8odmFyaWFibGUpIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgICBlcXVhbFRvID0gKHZhcmlhYmxlU3RyaW5nID09PSB0aGlzLnN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0Vzc2VudGlhbGx5RXF1YWxUb1Rlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBlc3NlbnRpYWxseUVxdWFsVG9UZXJtID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dEZpbGVQYXRoID0gZ2VuZXJhbENvbnRleHQuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHRGaWxlUGF0aCA9IHNwZWNpZmljQ29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgaWYgKGdlbmVyYWxDb250ZXh0RmlsZVBhdGggPT09IHNwZWNpZmljQ29udGV4dEZpbGVQYXRoKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgICAgaWYgKHRlcm1TdHJpbmcgPT09IHRoaXMuc3RyaW5nKSB7XG4gICAgICAgIGVzc2VudGlhbGx5RXF1YWxUb1Rlcm0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlc3NlbnRpYWxseUVxdWFsVG9UZXJtO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQ7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdGhpcy5uYW1lLFxuICAgICAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICB2ZXJpZmllZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9OiR7dHlwZU5hbWV9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlUeXBlKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHR5cGVWZXJpZmllZDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKTtcblxuICAgICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZU5hbWV9JyB0eXBlLi4uYCk7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVOYW1lfScgdHlwZSBpcyBtaXNzaW5nLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTsgLy8vXG5cbiAgICAgICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVWZXJpZmllZCkge1xuICAgICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVOYW1lfScgdHlwZS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5V2hlbkRlY2xhcmVkKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkV2hlbkRlY2xhcmVkO1xuXG4gICAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHRoaXMubmFtZSwgLy8vXG4gICAgICAgICAgdmFyaWFibGVQcmVzZW50ID0gZmlsZUNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZU5hbWV9JyB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm5hbWUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYEEgJyR7bWV0YXZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5VHlwZShmaWxlQ29udGV4dCk7XG5cbiAgICAgICAgdmVyaWZpZWRXaGVuRGVjbGFyZWQgPSB0eXBlVmVyaWZpZWQ7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRXaGVuRGVjbGFyZWQpIHtcbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSB3aGVuIGRlY2xhcmVkLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZFdoZW5EZWNsYXJlZDtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0c1JldmVyc2VkID0gZmFsc2UpIHtcbiAgICBsZXQgdGVybVVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgZXNzZW50aWFsbHlFcXVhbFRvVGVybSA9IHRoaXMuaXNFc3NlbnRpYWxseUVxdWFsVG9UZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGVzc2VudGlhbGx5RXF1YWxUb1Rlcm0pIHtcbiAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFyaWFibGUgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvblByZXNlbnQgPSBzdWJzdGl0dXRpb25zLmlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5VmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uUHJlc2VudCkge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlKHZhcmlhYmxlKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uVGVybUVxdWFsVG9UZXJtID0gc3Vic3RpdHV0aW9uLmlzVGVybUVxdWFsVG8odGVybSk7XG5cbiAgICAgICAgaWYgKHN1YnN0aXR1dGlvblRlcm1FcXVhbFRvVGVybSkge1xuICAgICAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbnRleHQgPSBjb250ZXh0c1JldmVyc2VkID9cbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tVGVybkFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gdGVybVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZWQ7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuc3RyaW5nLFxuICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmcodmFyaWFibGVTdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLFxuICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBjb25zdCB0ZXJtVmFyaWFibGVOb2RlID0gdGVybVZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICAgIGlmICh0ZXJtVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0ZXJtVmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuXG4gICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuXG4gICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlQW5kVHlwZSh2YXJpYWJsZU5vZGUsIHR5cGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gICAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lOyAgLy8vXG5cbiAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IFR5cGUgfSA9IHNoaW0sXG4gICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvblR5cGVOb2RlID0gdmFyaWFibGVEZWNsYXJhdGlvblR5cGVOb2RlUXVlcnkodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGUgPSB2YXJpYWJsZURlY2xhcmF0aW9uVmFyaWFibGVOb2RlUXVlcnkodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOb2RlID0gdmFyaWFibGVEZWNsYXJhdGlvblR5cGVOb2RlLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZURlY2xhcmF0aW9uVmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgY29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgc3RyaW5nID0gdmFyaWFibGVTdHJpbmcsICAvLy9cbiAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUoc3RyaW5nLCBub2RlLCBuYW1lLCB0eXBlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgVmFyaWFibGVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBWYXJpYWJsZTtcbiJdLCJuYW1lcyI6WyJ0ZXJtVmFyaWFibGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZURlY2xhcmF0aW9uVHlwZU5vZGVRdWVyeSIsInZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGVRdWVyeSIsIlZhcmlhYmxlIiwic3RyaW5nIiwibm9kZSIsIm5hbWUiLCJ0eXBlIiwiZ2V0U3RyaW5nIiwiZ2V0Tm9kZSIsImdldE5hbWUiLCJnZXRUeXBlIiwic2V0VHlwZSIsIm1hdGNoVmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lIiwibmFtZU1hdGNoZXMiLCJpc0VxdWFsVG8iLCJ2YXJpYWJsZSIsImVxdWFsVG8iLCJ2YXJpYWJsZVN0cmluZyIsImlzRXNzZW50aWFsbHlFcXVhbFRvVGVybSIsInRlcm0iLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImVzc2VudGlhbGx5RXF1YWxUb1Rlcm0iLCJnZW5lcmFsQ29udGV4dEZpbGVQYXRoIiwiZ2V0RmlsZVBhdGgiLCJzcGVjaWZpY0NvbnRleHRGaWxlUGF0aCIsInRlcm1TdHJpbmciLCJ2ZXJpZnkiLCJjb250ZXh0IiwidmVyaWZpZWQiLCJ0cmFjZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwiZGVidWciLCJ0eXBlTmFtZSIsInZlcmlmeVR5cGUiLCJmaWxlQ29udGV4dCIsInR5cGVWZXJpZmllZCIsIm9iamVjdFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ2ZXJpZnlXaGVuRGVjbGFyZWQiLCJ2ZXJpZmllZFdoZW5EZWNsYXJlZCIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsInVuaWZ5VGVybSIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0c1JldmVyc2VkIiwidGVybVVuaWZpZWQiLCJzdWJzdGl0dXRpb25QcmVzZW50IiwiaXNTdWJzdGl0dXRpb25QcmVzZW50QnlWYXJpYWJsZSIsInN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlIiwic3Vic3RpdHV0aW9uVGVybUVxdWFsVG9UZXJtIiwiaXNUZXJtRXF1YWxUbyIsInRlcm1TdWJzdGl0dXRpb24iLCJUZXJtU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm5BbmRWYXJpYWJsZSIsImFkZFN1YnN0aXR1dGlvbiIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJsb2NhbENvbnRleHQiLCJMb2NhbENvbnRleHQiLCJmcm9tRmlsZUNvbnRleHQiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmciLCJ2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIiwidHlwZUZyb21KU09OIiwiZnJvbVRlcm1Ob2RlIiwidGVybU5vZGUiLCJ0ZXJtVmFyaWFibGVOb2RlIiwibm9kZUFzU3RyaW5nIiwiZnJvbVZhcmlhYmxlTm9kZSIsImZyb21WYXJpYWJsZU5vZGVBbmRUeXBlIiwiZnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJUeXBlIiwic2hpbSIsInZhcmlhYmxlRGVjbGFyYXRpb25UeXBlTm9kZSIsInZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGUiLCJ0eXBlTm9kZSIsImZyb21UeXBlTm9kZSIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBMlRBOzs7ZUFBQTs7OzJEQXpUaUI7NERBQ1E7MkRBQ0k7cUJBRUg7b0JBQ0M7b0JBQ2lCO29CQUNDO3dCQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRS9DLElBQU1BLHdCQUF3QkMsSUFBQUEsZ0JBQVMsRUFBQyxvQkFDbENDLG1DQUFtQ0QsSUFBQUEsZ0JBQVMsRUFBQyw4QkFDN0NFLHVDQUF1Q0YsSUFBQUEsZ0JBQVMsRUFBQztBQUV2RCxJQUFBLEFBQU1HLHlCQUFOO2FBQU1BLFNBQ1FDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLElBQUk7Z0NBRGhDSjtRQUVGLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTs7a0JBTFZKOztZQVFKSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLE1BQU07WUFDcEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLElBQUk7WUFDbEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLElBQUk7WUFDbEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNKLElBQUk7WUFDbEI7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsUUFBUUwsSUFBSTtnQkFDVixJQUFJLENBQUNBLElBQUksR0FBR0E7WUFDZDs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0JDLFlBQVk7Z0JBQzVCLElBQU1DLGNBQWVELGlCQUFpQixJQUFJLENBQUNSLElBQUk7Z0JBRS9DLE9BQU9TO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUMsUUFBUTtnQkFDaEIsSUFBSUMsVUFBVTtnQkFFZCxJQUFJRCxhQUFhLE1BQU07b0JBQ3JCLElBQU1FLGlCQUFpQkYsU0FBU1QsU0FBUztvQkFFekNVLFVBQVdDLG1CQUFtQixJQUFJLENBQUNmLE1BQU07Z0JBQzNDO2dCQUVBLE9BQU9jO1lBQ1Q7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEseUJBQXlCQyxJQUFJLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTtnQkFDNUQsSUFBSUMseUJBQXlCO2dCQUU3QixJQUFNQyx5QkFBeUJILGVBQWVJLFdBQVcsSUFDbkRDLDBCQUEwQkosZ0JBQWdCRyxXQUFXO2dCQUUzRCxJQUFJRCwyQkFBMkJFLHlCQUF5QjtvQkFDdEQsSUFBTUMsYUFBYVAsS0FBS2IsU0FBUztvQkFFakMsSUFBSW9CLGVBQWUsSUFBSSxDQUFDeEIsTUFBTSxFQUFFO3dCQUM5Qm9CLHlCQUF5QjtvQkFDM0I7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxPQUFPO2dCQUNaLElBQUlDO2dCQUVKLElBQU1aLGlCQUFpQixJQUFJLENBQUNmLE1BQU0sRUFBRSxHQUFHO2dCQUV2QzBCLFFBQVFFLEtBQUssQ0FBQyxBQUFDLGtCQUFnQyxPQUFmYixnQkFBZTtnQkFFL0MsSUFBTUwsZUFBZSxJQUFJLENBQUNSLElBQUksRUFDeEJXLFdBQVdhLFFBQVFHLDBCQUEwQixDQUFDbkI7Z0JBRXBELElBQUlHLGFBQWEsTUFBTTtvQkFDckIsSUFBTVYsT0FBT1UsU0FBU04sT0FBTztvQkFFN0IsSUFBSSxDQUFDSixJQUFJLEdBQUdBO29CQUVad0IsV0FBVztnQkFDYixPQUFPO29CQUNMRCxRQUFRSSxLQUFLLENBQUMsQUFBQyxRQUFzQixPQUFmZixnQkFBZTtnQkFDdkM7Z0JBRUEsSUFBSVksVUFBVTtvQkFDWixJQUFNSSxXQUFXLElBQUksQ0FBQzVCLElBQUksQ0FBQ0csT0FBTztvQkFFbENvQixRQUFRSSxLQUFLLENBQUMsQUFBQyxvQkFBcUNDLE9BQWxCaEIsZ0JBQWUsS0FBWSxPQUFUZ0IsVUFBUztnQkFDL0Q7Z0JBRUEsT0FBT0o7WUFDVDs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXQyxXQUFXO2dCQUNwQixJQUFJQztnQkFFSixJQUFJLElBQUksQ0FBQy9CLElBQUksS0FBS2dDLGdCQUFVLEVBQUU7b0JBQzVCRCxlQUFlO2dCQUNqQixPQUFPO29CQUNMLElBQU1ILFdBQVcsSUFBSSxDQUFDNUIsSUFBSSxDQUFDRyxPQUFPO29CQUVsQzJCLFlBQVlMLEtBQUssQ0FBQyxBQUFDLGtCQUEwQixPQUFURyxVQUFTO29CQUU3QyxJQUFNNUIsT0FBTzhCLFlBQVlHLGtCQUFrQixDQUFDTDtvQkFFNUMsSUFBSTVCLFNBQVMsTUFBTTt3QkFDakI4QixZQUFZSCxLQUFLLENBQUMsQUFBQyxRQUFnQixPQUFUQyxVQUFTO29CQUNyQyxPQUFPO3dCQUNMLElBQUksQ0FBQzVCLElBQUksR0FBR0EsTUFBTSxHQUFHO3dCQUVyQitCLGVBQWU7b0JBQ2pCO29CQUVBLElBQUlBLGNBQWM7d0JBQ2hCRCxZQUFZSCxLQUFLLENBQUMsQUFBQyxvQkFBNEIsT0FBVEMsVUFBUztvQkFDakQ7Z0JBQ0Y7Z0JBRUEsT0FBT0c7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJKLFdBQVc7Z0JBQzVCLElBQUlLO2dCQUVKLElBQU12QixpQkFBaUIsSUFBSSxDQUFDZixNQUFNLEVBQUUsR0FBRztnQkFFdkNpQyxZQUFZTCxLQUFLLENBQUMsQUFBQyxrQkFBZ0MsT0FBZmIsZ0JBQWU7Z0JBRW5ELElBQU1MLGVBQWUsSUFBSSxDQUFDUixJQUFJLEVBQ3hCcUMsa0JBQWtCTixZQUFZTywrQkFBK0IsQ0FBQzlCO2dCQUVwRSxJQUFJNkIsaUJBQWlCO29CQUNuQk4sWUFBWUgsS0FBSyxDQUFDLEFBQUMsUUFBb0IsT0FBYnBCLGNBQWE7Z0JBQ3pDLE9BQU87b0JBQ0wsSUFBTStCLG1CQUFtQixJQUFJLENBQUN2QyxJQUFJLEVBQzVCd0Msc0JBQXNCVCxZQUFZVSx1Q0FBdUMsQ0FBQ0Y7b0JBRWhGLElBQUlDLHFCQUFxQjt3QkFDdkJULFlBQVlILEtBQUssQ0FBQyxBQUFDLE1BQXNCLE9BQWpCVyxrQkFBaUI7b0JBQzNDLE9BQU87d0JBQ0wsSUFBTVAsZUFBZSxJQUFJLENBQUNGLFVBQVUsQ0FBQ0M7d0JBRXJDSyx1QkFBdUJKLGNBQWUsR0FBRztvQkFDM0M7Z0JBQ0Y7Z0JBRUEsSUFBSUksc0JBQXNCO29CQUN4QkwsWUFBWUgsS0FBSyxDQUFDLEFBQUMsb0JBQWtDLE9BQWZmLGdCQUFlO2dCQUN2RDtnQkFFQSxPQUFPdUI7WUFDVDs7O1lBRUFNLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVM0IsSUFBSSxFQUFFNEIsYUFBYSxFQUFFM0IsY0FBYyxFQUFFQyxlQUFlO29CQUFFMkIsbUJBQUFBLGlFQUFtQjtnQkFDakYsSUFBSUMsY0FBYztnQkFFbEIsSUFBTXZCLGFBQWFQLEtBQUtiLFNBQVMsSUFDM0JXLGlCQUFpQixJQUFJLENBQUNmLE1BQU0sRUFBRSxHQUFHO2dCQUV2Q21CLGdCQUFnQlMsS0FBSyxDQUFDLEFBQUMsaUJBQThDYixPQUE5QlMsWUFBVyxxQkFBa0MsT0FBZlQsZ0JBQWU7Z0JBRXBGLElBQU1LLHlCQUF5QixJQUFJLENBQUNKLHdCQUF3QixDQUFDQyxNQUFNQyxnQkFBZ0JDO2dCQUVuRixJQUFJQyx3QkFBd0I7b0JBQzFCMkIsY0FBYztnQkFDaEIsT0FBTztvQkFDTCxJQUFNbEMsV0FBVyxJQUFJLEVBQ2ZtQyxzQkFBc0JILGNBQWNJLCtCQUErQixDQUFDcEM7b0JBRTFFLElBQUltQyxxQkFBcUI7d0JBQ3ZCLElBQU1FLGVBQWVMLGNBQWNNLDBCQUEwQixDQUFDdEMsV0FDeER1Qyw4QkFBOEJGLGFBQWFHLGFBQWEsQ0FBQ3BDO3dCQUUvRCxJQUFJbUMsNkJBQTZCOzRCQUMvQkwsY0FBYzt3QkFDaEI7b0JBQ0YsT0FBTzt3QkFDTCxJQUFJckIsVUFBVW9CLG1CQUNFNUIsaUJBQ0VDO3dCQUVsQixJQUFNTixZQUFXLElBQUksRUFDZnlDLG1CQUFtQkMsYUFBZ0IsQ0FBQ0MsbUJBQW1CLENBQUN2QyxNQUFNSixXQUFVYSxVQUN4RXdCLGdCQUFlSSxrQkFBbUIsR0FBRzt3QkFFM0M1QixVQUFVUCxpQkFBa0IsR0FBRzt3QkFFL0IwQixjQUFjWSxlQUFlLENBQUNQLGVBQWN4Qjt3QkFFNUNxQixjQUFjO29CQUNoQjtnQkFDRjtnQkFFQSxJQUFJQSxhQUFhO29CQUNmNUIsZ0JBQWdCVyxLQUFLLENBQUMsQUFBQyxtQkFBZ0RmLE9BQTlCUyxZQUFXLHFCQUFrQyxPQUFmVCxnQkFBZTtnQkFDeEY7Z0JBRUEsT0FBT2dDO1lBQ1Q7OztZQUVBVyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsV0FBV0MsSUFBQUEsb0JBQWMsRUFBQyxJQUFJLENBQUN6RCxJQUFJLEdBQ25DSCxTQUFTLElBQUksQ0FBQ0EsTUFBTSxFQUNwQkcsT0FBT3dELFVBQ1BFLE9BQU87b0JBQ0wxRCxNQUFBQTtvQkFDQUgsUUFBQUE7Z0JBQ0Y7Z0JBRU4sT0FBTzZEO1lBQ1Q7Ozs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsU0FBU0QsSUFBSSxFQUFFNUIsV0FBVztnQkFDL0IsSUFBTSxBQUFFakMsU0FBVzZELEtBQVg3RCxRQUNGK0QsZUFBZUMsY0FBWSxDQUFDQyxlQUFlLENBQUNoQyxjQUM1Q1AsVUFBVXFDLGNBQ1ZoRCxpQkFBaUJmLFFBQ2pCa0UsZUFBZUMsSUFBQUEsd0NBQThCLEVBQUNwRCxnQkFBZ0JXLFVBQzlEaEIsZUFBZTBELElBQUFBLGtDQUE0QixFQUFDRixlQUM1Q2pFLE9BQU9pRSxjQUNQaEUsT0FBT1EsY0FDUFAsT0FBT2tFLElBQUFBLGtCQUFZLEVBQUNSLE1BQU01QixjQUMxQnBCLFdBQVcsSUE3TmZkLFNBNk40QkMsUUFBUUMsTUFBTUMsTUFBTUM7Z0JBRWxELE9BQU9VO1lBQ1Q7OztZQUVPeUQsS0FBQUE7bUJBQVAsU0FBT0EsYUFBYUMsUUFBUSxFQUFFN0MsT0FBTztnQkFDbkMsSUFBSWIsV0FBVztnQkFFZixJQUFNMkQsbUJBQW1CN0Usc0JBQXNCNEU7Z0JBRS9DLElBQUlDLHFCQUFxQixNQUFNO29CQUM3QixJQUFNTixlQUFlTSxrQkFDZjlELGVBQWUwRCxJQUFBQSxrQ0FBNEIsRUFBQ0YsZUFDNUNqRSxPQUFPaUUsY0FDUGxFLFNBQVMwQixRQUFRK0MsWUFBWSxDQUFDeEUsT0FDOUJDLE9BQU9RLGNBQ1BQLE9BQU87b0JBRWJVLFdBQVcsSUEvT1hkLFNBK093QkMsUUFBUUMsTUFBTUMsTUFBTUM7Z0JBQzlDO2dCQUVBLE9BQU9VO1lBQ1Q7OztZQUVPNkQsS0FBQUE7bUJBQVAsU0FBT0EsaUJBQWlCUixZQUFZLEVBQUV4QyxPQUFPO2dCQUMzQyxJQUFJYixXQUFXO2dCQUVmLElBQUlxRCxpQkFBaUIsTUFBTTtvQkFDekIsSUFBTWpFLE9BQU9pRSxjQUNQeEQsZUFBZTBELElBQUFBLGtDQUE0QixFQUFDRixlQUM1Q2xFLFNBQVMwQixRQUFRK0MsWUFBWSxDQUFDeEUsT0FDOUJDLE9BQU9RLGNBQ1BQLE9BQU87b0JBRWJVLFdBQVcsSUEvUFhkLFNBK1B3QkMsUUFBUUMsTUFBTUMsTUFBTUM7Z0JBQzlDO2dCQUVBLE9BQU9VO1lBQ1Q7OztZQUVPOEQsS0FBQUE7bUJBQVAsU0FBT0Esd0JBQXdCVCxZQUFZLEVBQUUvRCxJQUFJLEVBQUV1QixPQUFPO2dCQUN4RCxJQUFJYixXQUFXO2dCQUVmLElBQUlxRCxpQkFBaUIsTUFBTTtvQkFDekIsSUFBTWpFLE9BQU9pRSxjQUNQeEQsZUFBZTBELElBQUFBLGtDQUE0QixFQUFDRixlQUM1Q2xFLFNBQVMwQixRQUFRK0MsWUFBWSxDQUFDeEUsT0FDOUJDLE9BQU9RLGNBQWUsR0FBRztvQkFFL0JHLFdBQVcsSUE5UVhkLFNBOFF3QkMsUUFBUUMsTUFBTUMsTUFBTUM7Z0JBQzlDO2dCQUVBLE9BQU9VO1lBQ1Q7OztZQUVPK0QsS0FBQUE7bUJBQVAsU0FBT0EsNEJBQTRCQyx1QkFBdUIsRUFBRTVDLFdBQVc7Z0JBQ3JFLElBQU0sQUFBRTZDLE9BQVNDLGFBQUksQ0FBYkQsTUFDRkUsOEJBQThCbkYsaUNBQWlDZ0YsMEJBQy9ESSxrQ0FBa0NuRixxQ0FBcUMrRSwwQkFDdkVLLFdBQVdGLDZCQUNYZCxlQUFlZSxpQ0FDZnZFLGVBQWUwRCxJQUFBQSxrQ0FBNEIsRUFBQ0YsZUFDNUN4QyxVQUFVc0MsY0FBWSxDQUFDQyxlQUFlLENBQUNoQyxjQUN2Q2xCLGlCQUFpQmtCLFlBQVl3QyxZQUFZLENBQUNQLGVBQzFDbEUsU0FBU2UsZ0JBQ1RkLE9BQU9pRSxjQUNQaEUsT0FBT1EsY0FDUFAsT0FBTzJFLEtBQUtLLFlBQVksQ0FBQ0QsVUFBVXhELFVBQ25DYixXQUFXLElBalNmZCxTQWlTNEJDLFFBQVFDLE1BQU1DLE1BQU1DO2dCQUVsRCxPQUFPVTtZQUNUOzs7V0FwU0lkOztBQXVTTnFGLE9BQU9DLE1BQU0sQ0FBQ04sYUFBSSxFQUFFO0lBQ2xCaEYsVUFBQUE7QUFDRjtJQUVBLFdBQWVBIn0=
package/src/conclusion.js DELETED
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- import shim from "./shim";
4
-
5
- import { nodeQuery } from "./utilities/query";
6
- import { unqualifiedStatementFromJSON, unqualifiedStatementToUnqualifiedStatementJSON } from "./utilities/json";
7
-
8
- const unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement");
9
-
10
- class Conclusion {
11
- constructor(unqualifiedStatement) {
12
- this.unqualifiedStatement = unqualifiedStatement;
13
- }
14
-
15
- getUnqualifiedStatement() {
16
- return this.unqualifiedStatement;
17
- }
18
-
19
- getString() { return this.unqualifiedStatement.getString(); }
20
-
21
- getStatement() { return this.unqualifiedStatement.getStatement(); }
22
-
23
- matchStatementNode(statementNode) { return this.unqualifiedStatement.matchStatementNode(statementNode); }
24
-
25
- unifyStatement(statement, substitutions, generalContext, specificContext) {
26
- let statementUnified;
27
-
28
- const conclusion = this, ///
29
- statementString = statement.getString(),
30
- conclusionString = conclusion.getString();
31
-
32
- specificContext.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
33
-
34
- statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, generalContext, specificContext);
35
-
36
- if (statementUnified) {
37
- specificContext.debug(`...unified the '${statementString}' statement with the '${conclusionString}' conclusion.`);
38
- }
39
-
40
- return statementUnified;
41
- }
42
-
43
- verify(context) {
44
- let verified = false;
45
-
46
- const conclusionString = this.getString(); ///
47
-
48
- context.trace(`Verifying the '${conclusionString}' conclusion...`);
49
-
50
- const stated = true,
51
- assignments = [],
52
- unqualifiedStatementVerified = this.unqualifiedStatement.verify(assignments, stated, context);
53
-
54
- if (unqualifiedStatementVerified) {
55
- verified = true;
56
- }
57
-
58
- if (verified) {
59
- context.debug(`...verified the '${conclusionString}' conclusion.`);
60
- }
61
-
62
- return verified;
63
- }
64
-
65
- toJSON() {
66
- const unqualifiedStatementJSON = unqualifiedStatementToUnqualifiedStatementJSON(this.unqualifiedStatement),
67
- unqualifiedStatement = unqualifiedStatementJSON, ///
68
- json = {
69
- unqualifiedStatement
70
- };
71
-
72
- return json;
73
- }
74
-
75
- static fromJSON(json, fileContext) {
76
- const unqualifiedStatement = unqualifiedStatementFromJSON(json, fileContext),
77
- conclusion = new Conclusion(unqualifiedStatement);
78
-
79
- return conclusion;
80
- }
81
-
82
- static fromConclusionNode(conclusionNode, fileContext) {
83
- const { UnqualifiedStatement } = shim,
84
- unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode),
85
- unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext),
86
- conclusion = new Conclusion(unqualifiedStatement);
87
-
88
- return conclusion;
89
- }
90
- }
91
-
92
- Object.assign(shim, {
93
- Conclusion
94
- });
95
-
96
- export default Conclusion;
package/src/consequent.js DELETED
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- import shim from "./shim";
4
-
5
- import { nodeQuery } from "./utilities/query";
6
- import { unqualifiedStatementFromJSON, unqualifiedStatementToUnqualifiedStatementJSON } from "./utilities/json";
7
-
8
- const unqualifiedStatementNodeQuery = nodeQuery("/consequent/unqualifiedStatement");
9
-
10
- class Consequent {
11
- constructor(unqualifiedStatement) {
12
- this.unqualifiedStatement = unqualifiedStatement;
13
- }
14
-
15
- getUnqualifiedStatement() {
16
- return this.unqualifiedStatement;
17
- }
18
-
19
- getString() { return this.unqualifiedStatement.getString(); }
20
-
21
- getStatement() { return this.unqualifiedStatement.getStatement(); }
22
-
23
- matchStatementNode(statementNode) { return this.unqualifiedStatement.matchStatementNode(statementNode); }
24
-
25
- unifyStatement(statement, substitutions, generalContext, specificContext) {
26
- let statementUnified;
27
-
28
- const consequent = this, ///
29
- statementString = statement.getString(),
30
- consequentString = consequent.getString();
31
-
32
- specificContext.trace(`Unifying the '${statementString}' statement with the '${consequentString}' consequent...`);
33
-
34
- statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, generalContext, specificContext);
35
-
36
- if (statementUnified) {
37
- specificContext.debug(`...unified the '${statementString}' statement with the '${consequentString}' consequent.`);
38
- }
39
-
40
- return statementUnified;
41
- }
42
-
43
- verify(context) {
44
- let verified = false;
45
-
46
- const consequentString = this.getString(); ///
47
-
48
- context.trace(`Verifying the '${consequentString}' consequent...`);
49
-
50
- const stated = true,
51
- assignments = [],
52
- unqualifiedStatementVerified = this.unqualifiedStatement.verify(assignments, stated, context);
53
-
54
- if (unqualifiedStatementVerified) {
55
- verified = true;
56
- }
57
-
58
- if (verified) {
59
- context.debug(`...verified the '${consequentString}' consequent.`);
60
- }
61
-
62
- return verified;
63
- }
64
-
65
- toJSON() {
66
- const unqualifiedStatementJSON = unqualifiedStatementToUnqualifiedStatementJSON(this.unqualifiedStatement),
67
- unqualifiedStatement = unqualifiedStatementJSON, ///
68
- json = {
69
- unqualifiedStatement
70
- };
71
-
72
- return json;
73
- }
74
-
75
- static fromJSON(json, fileContext) {
76
- const unqualifiedStatement = unqualifiedStatementFromJSON(json, fileContext),
77
- consequent = new Consequent(unqualifiedStatement);
78
-
79
- return consequent;
80
- }
81
-
82
- static fromConsequentNode(consequentNode, fileContext) {
83
- const { UnqualifiedStatement } = shim,
84
- unqualifiedStatementNode = unqualifiedStatementNodeQuery(consequentNode),
85
- unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext),
86
- consequent = new Consequent(unqualifiedStatement);
87
-
88
- return consequent;
89
- }
90
- }
91
-
92
- Object.assign(shim, {
93
- Consequent
94
- });
95
-
96
- export default Consequent;
@@ -1,103 +0,0 @@
1
- "use strict";
2
-
3
- import StatementSubstitution from "../../../substitution/statement";
4
-
5
- import { trim } from "../../../utilities/string";
6
-
7
- function unifyAWithRule(qualifiedStatement, substitutions, context) {
8
- let unifiedWithRule = false;
9
-
10
- const reference = qualifiedStatement.getReference(),
11
- rule = context.findRuleByReference(reference);
12
-
13
- if (rule !== null) {
14
- const ruleString = rule.getString(),
15
- qualifiedStatementString = trim(qualifiedStatement.getString()); ///
16
-
17
- context.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${ruleString}' rule...`);
18
-
19
- const statement = qualifiedStatement.getStatement(),
20
- proofSteps = context.getProofSteps(),
21
- statementAndProofStepsUnified = rule.unifyStatementAndProofSteps(statement, proofSteps, context);
22
-
23
- unifiedWithRule = statementAndProofStepsUnified; ///
24
-
25
- if (unifiedWithRule) {
26
- context.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${ruleString}' rule.`);
27
- }
28
- }
29
-
30
- return unifiedWithRule;
31
- }
32
-
33
- function unifyAWithReference(qualifiedStatement, substitutions, context) {
34
- let unifiedWithReference;
35
-
36
- const statement = qualifiedStatement.getStatement(),
37
- reference = qualifiedStatement.getReference(),
38
- statementString = statement.getString(),
39
- referenceString = reference.getString();
40
-
41
- context.trace(`Unifying the '${statementString}' qualified statement with the '${referenceString}' reference...`);
42
-
43
- const metavariable = reference.getMetavariable(),
44
- statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
45
- substitution = statementSubstitution; ///
46
-
47
- substitutions.addSubstitution(substitution, context);
48
-
49
- unifiedWithReference = true;
50
-
51
- if (unifiedWithReference) {
52
- context.debug(`...unified the '${statementString}' qualified statement with the '${referenceString}' reference.`);
53
- }
54
-
55
- return unifiedWithReference;
56
- }
57
-
58
- function unifyAWithAxiomLemmaTheoremOrConjecture(qualifiedStatement, substitutions, context) {
59
- let unifiedWithAxiomLemmaTheoremOrConjecture = false;
60
-
61
- const reference = qualifiedStatement.getReference(),
62
- axiom = context.findAxiomByReference(reference),
63
- lemma = context.findLemmaByReference(reference),
64
- theorem = context.findTheoremByReference(reference),
65
- conjecture = context.findConjectureByReference(reference),
66
- axiomLemmaTheoremConjecture = (axiom || lemma || theorem || conjecture);
67
-
68
- if (axiomLemmaTheoremConjecture !== null) {
69
- const qualifiedStatementString = trim(qualifiedStatement.getString()), ///
70
- axiomLemmaTheoremConjectureString = reference.getString();
71
-
72
- context.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${axiomLemmaTheoremConjectureString}' axiom, lemma, theorem or conjecture...`);
73
-
74
- const statement = qualifiedStatement.getStatement(),
75
- proofSteps = context.getProofSteps(),
76
- statementAndProofStepsUnified = axiomLemmaTheoremConjecture.unifyStatementAndProofSteps(statement, proofSteps, context);
77
-
78
- if (statementAndProofStepsUnified) {
79
- const metavariable = reference.getMetavariable(),
80
- statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
81
- substitution = statementSubstitution; ///
82
-
83
- substitutions.addSubstitution(substitution, context);
84
-
85
- unifiedWithAxiomLemmaTheoremOrConjecture = true;
86
- }
87
-
88
- if (unifiedWithAxiomLemmaTheoremOrConjecture) {
89
- context.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${axiomLemmaTheoremConjectureString}' axiom, lemma, theorem or conjecture.`);
90
- }
91
- }
92
-
93
- return unifiedWithAxiomLemmaTheoremOrConjecture;
94
- }
95
-
96
- const unifyMixins = [
97
- unifyAWithRule,
98
- unifyAWithReference,
99
- unifyAWithAxiomLemmaTheoremOrConjecture
100
- ];
101
-
102
- export default unifyMixins;
103
-
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- import BracketedCombinator from "../../combinator/bracketed";
4
-
5
- function unifyWithBracketedCombinator(statement, assignments, stated, context) {
6
- let unifiedWithBracketedCombinator;
7
-
8
- const bracketedCombinator = BracketedCombinator.fromNothing();
9
-
10
- unifiedWithBracketedCombinator = bracketedCombinator.unifyStatement(statement, assignments, stated, context);
11
-
12
- return unifiedWithBracketedCombinator;
13
- }
14
-
15
- function unifyWithCombinators(statement, assignments, stated, context) {
16
- let unifiedWithCombinators;
17
-
18
- const combinators = context.getCombinators();
19
-
20
- stated = true; ///
21
-
22
- assignments = null; ///
23
-
24
- unifiedWithCombinators = combinators.some((combinator) => {
25
- const unifiedWithCombinator = combinator.unifyStatement(statement, assignments, stated, context);
26
-
27
- if (unifiedWithCombinator) {
28
- return true;
29
- }
30
- });
31
-
32
- return unifiedWithCombinators;
33
- }
34
-
35
-
36
- const unifyMixins = [
37
- unifyWithBracketedCombinator,
38
- unifyWithCombinators
39
- ];
40
-
41
- export default unifyMixins;