occam-verify-cli 1.0.72 → 1.0.74
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.
- package/lib/context/file.js +5 -5
- package/lib/context/local.js +29 -29
- package/lib/dom/axiom.js +12 -12
- package/lib/dom/derivation.js +23 -23
- package/lib/dom/premise.js +20 -20
- package/lib/dom/proof.js +7 -7
- package/lib/dom/reference.js +7 -7
- package/lib/dom/rule.js +25 -25
- package/lib/dom/statement.js +13 -13
- package/lib/dom/step.js +228 -0
- package/lib/dom/subDerivation.js +23 -23
- package/lib/dom/subproof.js +14 -14
- package/lib/dom/supposition.js +20 -20
- package/lib/dom/topLevelAssertion.js +25 -25
- package/lib/index.js +2 -2
- package/lib/mixins/step/unify.js +181 -0
- package/lib/utilities/subproof.js +3 -3
- package/package.json +5 -5
- package/src/context/file.js +3 -3
- package/src/context/local.js +32 -32
- package/src/dom/axiom.js +11 -11
- package/src/dom/derivation.js +26 -26
- package/src/dom/premise.js +23 -23
- package/src/dom/proof.js +6 -6
- package/src/dom/reference.js +5 -5
- package/src/dom/rule.js +21 -21
- package/src/dom/statement.js +11 -11
- package/src/dom/{proofStep.js → step.js} +25 -25
- package/src/dom/subDerivation.js +26 -26
- package/src/dom/subproof.js +9 -9
- package/src/dom/supposition.js +25 -25
- package/src/dom/topLevelAssertion.js +21 -21
- package/src/index.js +1 -1
- package/src/mixins/{proofStep → step}/unify.js +13 -13
- package/src/utilities/subproof.js +5 -5
- package/lib/dom/proofStep.js +0 -228
- package/lib/mixins/proofStep/unify.js +0 -181
package/src/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import Type from "./dom/type";
|
|
4
4
|
import Term from "./dom/term";
|
|
5
5
|
import Rule from "./dom/rule";
|
|
6
|
+
import Step from "./dom/step";
|
|
6
7
|
import Label from "./dom/label";
|
|
7
8
|
import Axiom from "./dom/axiom";
|
|
8
9
|
import Lemma from "./dom/lemma";
|
|
@@ -17,7 +18,6 @@ import Subproof from "./dom/subproof";
|
|
|
17
18
|
import Variable from "./dom/variable";
|
|
18
19
|
import Property from "./dom/property";
|
|
19
20
|
import Parameter from "./dom/parameter";
|
|
20
|
-
import ProofStep from "./dom/proofStep";
|
|
21
21
|
import Reference from "./dom/reference";
|
|
22
22
|
import Statement from "./dom/statement";
|
|
23
23
|
import Judgement from "./dom/judgement";
|
|
@@ -21,10 +21,10 @@ function unifyAWithRule(statement, reference, substitutions, context) {
|
|
|
21
21
|
|
|
22
22
|
context.trace(`Unifying the '${statementString}' statement with the '${ruleString}' rule...`);
|
|
23
23
|
|
|
24
|
-
const
|
|
25
|
-
|
|
24
|
+
const stepsOrSubproofs = context.getStepsOrSubproofs(),
|
|
25
|
+
statementAndStepsUnified = rule.unifyStatementAndStepsOrSubproofs(statement, stepsOrSubproofs, context);
|
|
26
26
|
|
|
27
|
-
unifiedWithRule =
|
|
27
|
+
unifiedWithRule = statementAndStepsUnified; ///
|
|
28
28
|
|
|
29
29
|
if (unifiedWithRule) {
|
|
30
30
|
context.debug(`...unified the '${statementString}' statement with the '${ruleString}' rule.`);
|
|
@@ -114,14 +114,14 @@ function unifyAWithAxiomLemmaTheoremOrConjecture(statement, reference, substitut
|
|
|
114
114
|
|
|
115
115
|
context.trace(`Unifying the '${statementString}' statement with the '${axiomLemmaTheoremConjectureString}' axiom, lemma, theorem or conjecture...`);
|
|
116
116
|
|
|
117
|
-
const
|
|
117
|
+
const stepsOrSubproofs = context.getStepsOrSubproofs(),
|
|
118
118
|
specificSubstitutions = Substitutions.fromNothing();
|
|
119
119
|
|
|
120
120
|
substitutions = specificSubstitutions; ///
|
|
121
121
|
|
|
122
|
-
const
|
|
122
|
+
const statementAndStepsUnified = axiomLemmaTheoremConjecture.unifyStatementAndStepsOrSubproofs(statement, stepsOrSubproofs, substitutions, context);
|
|
123
123
|
|
|
124
|
-
if (
|
|
124
|
+
if (statementAndStepsUnified) {
|
|
125
125
|
const metavariable = reference.getMetavariable(),
|
|
126
126
|
specificContext = context, ///
|
|
127
127
|
statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
|
|
@@ -237,17 +237,17 @@ function unifyAsPropertyAssertion(statement, reference, substitutions, context)
|
|
|
237
237
|
return unifiedAsPropertyAssertion;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
function
|
|
241
|
-
let
|
|
240
|
+
function unifyWithStepsOrSubproofs(statement, reference, substitutions, context) {
|
|
241
|
+
let unifiedWithSteps = false;
|
|
242
242
|
|
|
243
243
|
if (reference === null) {
|
|
244
|
-
const
|
|
245
|
-
|
|
244
|
+
const stepsOrSubproofs = context.getStepsOrSubproofs(),
|
|
245
|
+
statementUnifiedWithSteps = statement.unifyWithStepsOrSubproofs(stepsOrSubproofs, context);
|
|
246
246
|
|
|
247
|
-
|
|
247
|
+
unifiedWithSteps = statementUnifiedWithSteps; ///
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
return
|
|
250
|
+
return unifiedWithSteps;
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
const unifyMixins = [
|
|
@@ -259,7 +259,7 @@ const unifyMixins = [
|
|
|
259
259
|
unifyAsJudgement,
|
|
260
260
|
unifyAsTypeAssertion,
|
|
261
261
|
unifyAsPropertyAssertion,
|
|
262
|
-
|
|
262
|
+
unifyWithStepsOrSubproofs
|
|
263
263
|
];
|
|
264
264
|
|
|
265
265
|
export default unifyMixins;
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import { nodeQuery, nodesQuery } from "./query";
|
|
4
4
|
import { nodeAsString, nodesAsString } from "./string";
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
|
|
6
|
+
const lastStepStatementNodeQuery = nodeQuery("/subproof/subDerivation/step[-1]/statement"),
|
|
7
|
+
suppositionStatementNodesQuery = nodesQuery("/subproof/supposition/statement");
|
|
8
8
|
|
|
9
9
|
export function subproofStringFromSubproofNode(subproofNode, fileContext) {
|
|
10
10
|
const tokens = fileContext.getTokens(),
|
|
11
11
|
suppositionStatementNodes = suppositionStatementNodesQuery(subproofNode),
|
|
12
|
-
|
|
12
|
+
lastStepStatementNode = lastStepStatementNodeQuery(subproofNode),
|
|
13
13
|
suppositionStatementsString = nodesAsString(suppositionStatementNodes, tokens),
|
|
14
|
-
|
|
15
|
-
subproofString = `[${suppositionStatementsString}]...${
|
|
14
|
+
lastStepStatementString = nodeAsString(lastStepStatementNode, tokens),
|
|
15
|
+
subproofString = `[${suppositionStatementsString}]...${lastStepStatementString}`;
|
|
16
16
|
|
|
17
17
|
return subproofString;
|
|
18
18
|
}
|
package/lib/dom/proofStep.js
DELETED
|
@@ -1,228 +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 _dom = /*#__PURE__*/ _interop_require_wildcard(require("../dom"));
|
|
12
|
-
var _unify = /*#__PURE__*/ _interop_require_default(require("../mixins/proofStep/unify"));
|
|
13
|
-
var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
|
|
14
|
-
var _query = require("../utilities/query");
|
|
15
|
-
var _context = require("../utilities/context");
|
|
16
|
-
function _class_call_check(instance, Constructor) {
|
|
17
|
-
if (!(instance instanceof Constructor)) {
|
|
18
|
-
throw new TypeError("Cannot call a class as a function");
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
function _defineProperties(target, props) {
|
|
22
|
-
for(var i = 0; i < props.length; i++){
|
|
23
|
-
var descriptor = props[i];
|
|
24
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
25
|
-
descriptor.configurable = true;
|
|
26
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
27
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
31
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
32
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
33
|
-
return Constructor;
|
|
34
|
-
}
|
|
35
|
-
function _define_property(obj, key, value) {
|
|
36
|
-
if (key in obj) {
|
|
37
|
-
Object.defineProperty(obj, key, {
|
|
38
|
-
value: value,
|
|
39
|
-
enumerable: true,
|
|
40
|
-
configurable: true,
|
|
41
|
-
writable: true
|
|
42
|
-
});
|
|
43
|
-
} else {
|
|
44
|
-
obj[key] = value;
|
|
45
|
-
}
|
|
46
|
-
return obj;
|
|
47
|
-
}
|
|
48
|
-
function _interop_require_default(obj) {
|
|
49
|
-
return obj && obj.__esModule ? obj : {
|
|
50
|
-
default: obj
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
54
|
-
if (typeof WeakMap !== "function") return null;
|
|
55
|
-
var cacheBabelInterop = new WeakMap();
|
|
56
|
-
var cacheNodeInterop = new WeakMap();
|
|
57
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
58
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
59
|
-
})(nodeInterop);
|
|
60
|
-
}
|
|
61
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
62
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
63
|
-
return obj;
|
|
64
|
-
}
|
|
65
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
66
|
-
return {
|
|
67
|
-
default: obj
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
71
|
-
if (cache && cache.has(obj)) {
|
|
72
|
-
return cache.get(obj);
|
|
73
|
-
}
|
|
74
|
-
var newObj = {
|
|
75
|
-
__proto__: null
|
|
76
|
-
};
|
|
77
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
78
|
-
for(var key in obj){
|
|
79
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
80
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
81
|
-
if (desc && (desc.get || desc.set)) {
|
|
82
|
-
Object.defineProperty(newObj, key, desc);
|
|
83
|
-
} else {
|
|
84
|
-
newObj[key] = obj[key];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
newObj.default = obj;
|
|
89
|
-
if (cache) {
|
|
90
|
-
cache.set(obj, newObj);
|
|
91
|
-
}
|
|
92
|
-
return newObj;
|
|
93
|
-
}
|
|
94
|
-
var _ProofStep;
|
|
95
|
-
var proofStepNodeQuery = (0, _query.nodeQuery)("/proofStep");
|
|
96
|
-
var _default = (0, _dom.domAssigned)((_ProofStep = /*#__PURE__*/ function() {
|
|
97
|
-
function ProofStep(string, statement, reference) {
|
|
98
|
-
_class_call_check(this, ProofStep);
|
|
99
|
-
this.string = string;
|
|
100
|
-
this.statement = statement;
|
|
101
|
-
this.reference = reference;
|
|
102
|
-
}
|
|
103
|
-
_create_class(ProofStep, [
|
|
104
|
-
{
|
|
105
|
-
key: "getString",
|
|
106
|
-
value: function getString() {
|
|
107
|
-
return this.string;
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
key: "getStatement",
|
|
112
|
-
value: function getStatement() {
|
|
113
|
-
return this.statement;
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
key: "getReference",
|
|
118
|
-
value: function getReference() {
|
|
119
|
-
return this.reference;
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
key: "isQualified",
|
|
124
|
-
value: function isQualified() {
|
|
125
|
-
var qualified = this.reference !== null;
|
|
126
|
-
return qualified;
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
key: "isProofStep",
|
|
131
|
-
value: function isProofStep() {
|
|
132
|
-
var proofStep = true;
|
|
133
|
-
return proofStep;
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
key: "matchTermAndPropertyRelation",
|
|
138
|
-
value: function matchTermAndPropertyRelation(term, propertyRelation, context) {
|
|
139
|
-
var termAndPropertyRelationMatch = false;
|
|
140
|
-
var propertyAssertion = (0, _context.propertyAssertionFromStatement)(this.statement, context);
|
|
141
|
-
if (propertyAssertion !== null) {
|
|
142
|
-
termAndPropertyRelationMatch = propertyAssertion.matchTermAndPropertyRelation(term, propertyRelation, context);
|
|
143
|
-
}
|
|
144
|
-
return termAndPropertyRelationMatch;
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
key: "unify",
|
|
149
|
-
value: function unify(substitutions, context) {
|
|
150
|
-
var _this = this;
|
|
151
|
-
var unified;
|
|
152
|
-
var proofStepString = this.string; ///
|
|
153
|
-
context.trace("Unifying the '".concat(proofStepString, "' proof step..."));
|
|
154
|
-
unified = _unify.default.some(function(unifyMixin) {
|
|
155
|
-
var unified = unifyMixin(_this.statement, _this.reference, substitutions, context);
|
|
156
|
-
if (unified) {
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
if (unified) {
|
|
161
|
-
context.debug("...unified the '".concat(proofStepString, "' proof step."));
|
|
162
|
-
}
|
|
163
|
-
return unified;
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
key: "verify",
|
|
168
|
-
value: function verify(substitutions, assignments, context) {
|
|
169
|
-
var verified = false;
|
|
170
|
-
var proofStepString = this.string;
|
|
171
|
-
context.trace("Verifying the '".concat(proofStepString, "' proof step..."));
|
|
172
|
-
if (this.statement !== null) {
|
|
173
|
-
var qualified = this.isQualified(), stated = qualified, statementVerified = this.statement.verify(assignments, stated, context);
|
|
174
|
-
if (statementVerified) {
|
|
175
|
-
if (this.reference === null) {
|
|
176
|
-
verified = true;
|
|
177
|
-
} else {
|
|
178
|
-
var referenceVerified = this.reference.verify(context);
|
|
179
|
-
verified = referenceVerified; ///
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
} else {
|
|
183
|
-
context.debug("Cannot verify the '".concat(proofStepString, "' proof step because it is nonsense."));
|
|
184
|
-
}
|
|
185
|
-
if (verified) {
|
|
186
|
-
context.debug("...verified the '".concat(proofStepString, "' proof step."));
|
|
187
|
-
}
|
|
188
|
-
return verified;
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
key: "unifyStatement",
|
|
193
|
-
value: function unifyStatement(statement, context) {
|
|
194
|
-
var statementUnified;
|
|
195
|
-
var specificContext = context, generalContext = context, substitutions = _substitutions.default.fromNothing();
|
|
196
|
-
statementUnified = statement.unifyStatement(this.statement, substitutions, generalContext, specificContext);
|
|
197
|
-
if (statementUnified) {
|
|
198
|
-
var equivalences = context.getEquivalences(), substitutionsUnified = equivalences.unifySubstitutions(substitutions);
|
|
199
|
-
statementUnified = substitutionsUnified; ///
|
|
200
|
-
}
|
|
201
|
-
return statementUnified;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
], [
|
|
205
|
-
{
|
|
206
|
-
key: "fromStatement",
|
|
207
|
-
value: function fromStatement(statement, context) {
|
|
208
|
-
var statementString = statement.getString(), string = statementString, reference = null, proofStep = new ProofStep(string, statement, reference);
|
|
209
|
-
return proofStep;
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
key: "fromProofStepSubproofNode",
|
|
214
|
-
value: function fromProofStepSubproofNode(proofStepSubproofNode, fileContext) {
|
|
215
|
-
var proofStep = null;
|
|
216
|
-
var proofStepNode = proofStepNodeQuery(proofStepSubproofNode);
|
|
217
|
-
if (proofStepNode !== null) {
|
|
218
|
-
var Statement = _dom.default.Statement, Reference = _dom.default.Reference, node = proofStepNode, string = fileContext.nodeAsString(node), statement = Statement.fromProofStepNode(proofStepNode, fileContext), reference = Reference.fromProofStepNode(proofStepNode, fileContext);
|
|
219
|
-
proofStep = new ProofStep(string, statement, reference);
|
|
220
|
-
}
|
|
221
|
-
return proofStep;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
]);
|
|
225
|
-
return ProofStep;
|
|
226
|
-
}(), _define_property(_ProofStep, "name", "ProofStep"), _ProofStep));
|
|
227
|
-
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb20vcHJvb2ZTdGVwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi9kb21cIjtcbmltcG9ydCB1bmlmeU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL3Byb29mU3RlcC91bmlmeVwiO1xuaW1wb3J0IFN1YnN0aXR1dGlvbnMgZnJvbSBcIi4uL3N1YnN0aXR1dGlvbnNcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgeyBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgcHJvb2ZTdGVwTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Byb29mU3RlcFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZG9tQXNzaWduZWQoY2xhc3MgUHJvb2ZTdGVwIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgaXNRdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gKHRoaXMucmVmZXJlbmNlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBxdWFsaWZpZWQ7XG4gIH1cblxuICBpc1Byb29mU3RlcCgpIHtcbiAgICBjb25zdCBwcm9vZlN0ZXAgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHByb29mU3RlcDtcbiAgfVxuXG4gIG1hdGNoVGVybUFuZFByb3BlcnR5UmVsYXRpb24odGVybSwgcHJvcGVydHlSZWxhdGlvbiwgY29udGV4dCkge1xuICAgIGxldCB0ZXJtQW5kUHJvcGVydHlSZWxhdGlvbk1hdGNoID0gZmFsc2U7XG5cbiAgICBjb25zdCBwcm9wZXJ0eUFzc2VydGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudCh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAocHJvcGVydHlBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHRlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uTWF0Y2ggPSBwcm9wZXJ0eUFzc2VydGlvbi5tYXRjaFRlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uKHRlcm0sIHByb3BlcnR5UmVsYXRpb24sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtQW5kUHJvcGVydHlSZWxhdGlvbk1hdGNoO1xuICB9XG5cbiAgdW5pZnkoc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCB1bmlmaWVkO1xuXG4gICAgY29uc3QgcHJvb2ZTdGVwU3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcm9vZlN0ZXBTdHJpbmd9JyBwcm9vZiBzdGVwLi4uYCk7XG5cbiAgICB1bmlmaWVkID0gdW5pZnlNaXhpbnMuc29tZSgodW5pZnlNaXhpbikgPT4ge1xuICAgICAgY29uc3QgdW5pZmllZCA9IHVuaWZ5TWl4aW4odGhpcy5zdGF0ZW1lbnQsIHRoaXMucmVmZXJlbmNlLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHVuaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodW5pZmllZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cHJvb2ZTdGVwU3RyaW5nfScgcHJvb2Ygc3RlcC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5pZmllZDtcbiAgfVxuXG4gIHZlcmlmeShzdWJzdGl0dXRpb25zLCBhc3NpZ25tZW50cywgY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgcHJvb2ZTdGVwU3RyaW5nID0gdGhpcy5zdHJpbmc7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb29mU3RlcFN0cmluZ30nIHByb29mIHN0ZXAuLi5gKTtcblxuICAgIGlmICh0aGlzLnN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcXVhbGlmaWVkID0gdGhpcy5pc1F1YWxpZmllZCgpLFxuICAgICAgICAgICAgc3RhdGVkID0gcXVhbGlmaWVkLCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudFZlcmlmaWVkID0gdGhpcy5zdGF0ZW1lbnQudmVyaWZ5KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICAgICAgdmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZVZlcmlmaWVkID0gdGhpcy5yZWZlcmVuY2UudmVyaWZ5KGNvbnRleHQpO1xuXG4gICAgICAgICAgdmVyaWZpZWQgPSByZWZlcmVuY2VWZXJpZmllZDsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgQ2Fubm90IHZlcmlmeSB0aGUgJyR7cHJvb2ZTdGVwU3RyaW5nfScgcHJvb2Ygc3RlcCBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Byb29mU3RlcFN0cmluZ30nIHByb29mIHN0ZXAuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZWQ7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCk7XG5cbiAgICBzdGF0ZW1lbnRVbmlmaWVkID0gc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHRoaXMuc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVkKSB7XG4gICAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSBjb250ZXh0LmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1VuaWZpZWQgPSBlcXVpdmFsZW5jZXMudW5pZnlTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gc3Vic3RpdHV0aW9uc1VuaWZpZWQ7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllZDtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9vZlN0ZXBcIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3RyaW5nID0gc3RhdGVtZW50U3RyaW5nLCAvLy9cbiAgICAgICAgICByZWZlcmVuY2UgPSBudWxsLFxuICAgICAgICAgIHByb29mU3RlcCA9IG5ldyBQcm9vZlN0ZXAoc3RyaW5nLCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSk7XG5cbiAgICByZXR1cm4gcHJvb2ZTdGVwO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9vZlN0ZXBTdWJwcm9vZk5vZGUocHJvb2ZTdGVwU3VicHJvb2ZOb2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGxldCBwcm9vZlN0ZXAgPSBudWxsO1xuXG4gICAgY29uc3QgcHJvb2ZTdGVwTm9kZSA9IHByb29mU3RlcE5vZGVRdWVyeShwcm9vZlN0ZXBTdWJwcm9vZk5vZGUpO1xuXG4gICAgaWYgKHByb29mU3RlcE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgU3RhdGVtZW50LCBSZWZlcmVuY2UgfSA9IGRvbSxcbiAgICAgICAgICAgIG5vZGUgPSBwcm9vZlN0ZXBOb2RlLCAvLy9cbiAgICAgICAgICAgIHN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tUHJvb2ZTdGVwTm9kZShwcm9vZlN0ZXBOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbVByb29mU3RlcE5vZGUocHJvb2ZTdGVwTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgICBwcm9vZlN0ZXAgPSBuZXcgUHJvb2ZTdGVwKHN0cmluZywgc3RhdGVtZW50LCByZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9vZlN0ZXA7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbInByb29mU3RlcE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiUHJvb2ZTdGVwIiwic3RyaW5nIiwic3RhdGVtZW50IiwicmVmZXJlbmNlIiwiZ2V0U3RyaW5nIiwiZ2V0U3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiaXNRdWFsaWZpZWQiLCJxdWFsaWZpZWQiLCJpc1Byb29mU3RlcCIsInByb29mU3RlcCIsIm1hdGNoVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJ0ZXJtIiwicHJvcGVydHlSZWxhdGlvbiIsImNvbnRleHQiLCJ0ZXJtQW5kUHJvcGVydHlSZWxhdGlvbk1hdGNoIiwicHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJ1bmlmeSIsInN1YnN0aXR1dGlvbnMiLCJ1bmlmaWVkIiwicHJvb2ZTdGVwU3RyaW5nIiwidHJhY2UiLCJ1bmlmeU1peGlucyIsInNvbWUiLCJ1bmlmeU1peGluIiwiZGVidWciLCJ2ZXJpZnkiLCJhc3NpZ25tZW50cyIsInZlcmlmaWVkIiwic3RhdGVkIiwic3RhdGVtZW50VmVyaWZpZWQiLCJyZWZlcmVuY2VWZXJpZmllZCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllZCIsInNwZWNpZmljQ29udGV4dCIsImdlbmVyYWxDb250ZXh0IiwiU3Vic3RpdHV0aW9ucyIsImZyb21Ob3RoaW5nIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwic3Vic3RpdHV0aW9uc1VuaWZpZWQiLCJ1bmlmeVN1YnN0aXR1dGlvbnMiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiZnJvbVByb29mU3RlcFN1YnByb29mTm9kZSIsInByb29mU3RlcFN1YnByb29mTm9kZSIsImZpbGVDb250ZXh0IiwicHJvb2ZTdGVwTm9kZSIsIlN0YXRlbWVudCIsImRvbSIsIlJlZmVyZW5jZSIsIm5vZGUiLCJub2RlQXNTdHJpbmciLCJmcm9tUHJvb2ZTdGVwTm9kZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7OzJEQVZnQjs0REFDUTtvRUFDRTtxQkFFQTt1QkFFcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRS9DLElBQU1BLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQztJQUVyQyxXQUFlQyxJQUFBQSxnQkFBVyw4QkFBQzthQUFNQyxVQUNuQkMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFNBQVM7Z0NBRFRIO1FBRTdCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7Ozs7WUFHbkJDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0gsTUFBTTtZQUNwQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0gsU0FBUztZQUN2Qjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0gsU0FBUztZQUN2Qjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxZQUFhLElBQUksQ0FBQ0wsU0FBUyxLQUFLO2dCQUV0QyxPQUFPSztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFlBQVk7Z0JBRWxCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsNkJBQTZCQyxJQUFJLEVBQUVDLGdCQUFnQixFQUFFQyxPQUFPO2dCQUMxRCxJQUFJQywrQkFBK0I7Z0JBRW5DLElBQU1DLG9CQUFvQkMsSUFBQUEsdUNBQThCLEVBQUMsSUFBSSxDQUFDZixTQUFTLEVBQUVZO2dCQUV6RSxJQUFJRSxzQkFBc0IsTUFBTTtvQkFDOUJELCtCQUErQkMsa0JBQWtCTCw0QkFBNEIsQ0FBQ0MsTUFBTUMsa0JBQWtCQztnQkFDeEc7Z0JBRUEsT0FBT0M7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxNQUFNQyxhQUFhLEVBQUVMLE9BQU87O2dCQUMxQixJQUFJTTtnQkFFSixJQUFNQyxrQkFBa0IsSUFBSSxDQUFDcEIsTUFBTSxFQUFHLEdBQUc7Z0JBRXpDYSxRQUFRUSxLQUFLLENBQUMsQUFBQyxpQkFBZ0MsT0FBaEJELGlCQUFnQjtnQkFFL0NELFVBQVVHLGNBQVcsQ0FBQ0MsSUFBSSxDQUFDLFNBQUNDO29CQUMxQixJQUFNTCxVQUFVSyxXQUFXLE1BQUt2QixTQUFTLEVBQUUsTUFBS0MsU0FBUyxFQUFFZ0IsZUFBZUw7b0JBRTFFLElBQUlNLFNBQVM7d0JBQ1gsT0FBTztvQkFDVDtnQkFDRjtnQkFFQSxJQUFJQSxTQUFTO29CQUNYTixRQUFRWSxLQUFLLENBQUMsQUFBQyxtQkFBa0MsT0FBaEJMLGlCQUFnQjtnQkFDbkQ7Z0JBRUEsT0FBT0Q7WUFDVDs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPUixhQUFhLEVBQUVTLFdBQVcsRUFBRWQsT0FBTztnQkFDeEMsSUFBSWUsV0FBVztnQkFFZixJQUFNUixrQkFBa0IsSUFBSSxDQUFDcEIsTUFBTTtnQkFFbkNhLFFBQVFRLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkQsaUJBQWdCO2dCQUVoRCxJQUFJLElBQUksQ0FBQ25CLFNBQVMsS0FBSyxNQUFNO29CQUMzQixJQUFNTSxZQUFZLElBQUksQ0FBQ0QsV0FBVyxJQUM1QnVCLFNBQVN0QixXQUNUdUIsb0JBQW9CLElBQUksQ0FBQzdCLFNBQVMsQ0FBQ3lCLE1BQU0sQ0FBQ0MsYUFBYUUsUUFBUWhCO29CQUVyRSxJQUFJaUIsbUJBQW1CO3dCQUNyQixJQUFJLElBQUksQ0FBQzVCLFNBQVMsS0FBSyxNQUFNOzRCQUMzQjBCLFdBQVc7d0JBQ2IsT0FBTzs0QkFDTCxJQUFNRyxvQkFBb0IsSUFBSSxDQUFDN0IsU0FBUyxDQUFDd0IsTUFBTSxDQUFDYjs0QkFFaERlLFdBQVdHLG1CQUFtQixHQUFHO3dCQUNuQztvQkFDRjtnQkFDRixPQUFPO29CQUNMbEIsUUFBUVksS0FBSyxDQUFDLEFBQUMsc0JBQXFDLE9BQWhCTCxpQkFBZ0I7Z0JBQ3REO2dCQUVBLElBQUlRLFVBQVU7b0JBQ1pmLFFBQVFZLEtBQUssQ0FBQyxBQUFDLG9CQUFtQyxPQUFoQkwsaUJBQWdCO2dCQUNwRDtnQkFFQSxPQUFPUTtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWUvQixTQUFTLEVBQUVZLE9BQU87Z0JBQy9CLElBQUlvQjtnQkFFSixJQUFNQyxrQkFBa0JyQixTQUNsQnNCLGlCQUFpQnRCLFNBQ2pCSyxnQkFBZ0JrQixzQkFBYSxDQUFDQyxXQUFXO2dCQUUvQ0osbUJBQW1CaEMsVUFBVStCLGNBQWMsQ0FBQyxJQUFJLENBQUMvQixTQUFTLEVBQUVpQixlQUFlaUIsZ0JBQWdCRDtnQkFFM0YsSUFBSUQsa0JBQWtCO29CQUNwQixJQUFNSyxlQUFlekIsUUFBUTBCLGVBQWUsSUFDdENDLHVCQUF1QkYsYUFBYUcsa0JBQWtCLENBQUN2QjtvQkFFN0RlLG1CQUFtQk8sc0JBQXVCLEdBQUc7Z0JBQy9DO2dCQUVBLE9BQU9QO1lBQ1Q7Ozs7WUFJT1MsS0FBQUE7bUJBQVAsU0FBT0EsY0FBY3pDLFNBQVMsRUFBRVksT0FBTztnQkFDckMsSUFBTThCLGtCQUFrQjFDLFVBQVVFLFNBQVMsSUFDckNILFNBQVMyQyxpQkFDVHpDLFlBQVksTUFDWk8sWUFBWSxJQUFJVixVQUFVQyxRQUFRQyxXQUFXQztnQkFFbkQsT0FBT087WUFDVDs7O1lBRU9tQyxLQUFBQTttQkFBUCxTQUFPQSwwQkFBMEJDLHFCQUFxQixFQUFFQyxXQUFXO2dCQUNqRSxJQUFJckMsWUFBWTtnQkFFaEIsSUFBTXNDLGdCQUFnQm5ELG1CQUFtQmlEO2dCQUV6QyxJQUFJRSxrQkFBa0IsTUFBTTtvQkFDMUIsSUFBUUMsWUFBeUJDLFlBQUcsQ0FBNUJELFdBQVdFLFlBQWNELFlBQUcsQ0FBakJDLFdBQ2JDLE9BQU9KLGVBQ1AvQyxTQUFTOEMsWUFBWU0sWUFBWSxDQUFDRCxPQUNsQ2xELFlBQVkrQyxVQUFVSyxpQkFBaUIsQ0FBQ04sZUFBZUQsY0FDdkQ1QyxZQUFZZ0QsVUFBVUcsaUJBQWlCLENBQUNOLGVBQWVEO29CQUU3RHJDLFlBQVksSUFBSVYsVUFBVUMsUUFBUUMsV0FBV0M7Z0JBQy9DO2dCQUVBLE9BQU9PO1lBQ1Q7Ozs7S0EzQkEsNkJBQU82QyxRQUFPIn0=
|
|
@@ -1,181 +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 _substitutions = /*#__PURE__*/ _interop_require_default(require("../../substitutions"));
|
|
12
|
-
var _statement = /*#__PURE__*/ _interop_require_default(require("../../substitution/statement"));
|
|
13
|
-
var _context = require("../../utilities/context");
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function unifyAWithRule(statement, reference, substitutions, context) {
|
|
20
|
-
var unifiedWithRule = false;
|
|
21
|
-
if (reference !== null) {
|
|
22
|
-
var rule = context.findRuleByReference(reference);
|
|
23
|
-
if (rule !== null) {
|
|
24
|
-
var ruleString = rule.getString(), statementString = statement.getString();
|
|
25
|
-
context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(ruleString, "' rule..."));
|
|
26
|
-
var proofStepSubproofs = context.getProofStepSubproofs(), statementAndProofStepsUnified = rule.unifyStatementAndProofStepSubproofs(statement, proofStepSubproofs, context);
|
|
27
|
-
unifiedWithRule = statementAndProofStepsUnified; ///
|
|
28
|
-
if (unifiedWithRule) {
|
|
29
|
-
context.debug("...unified the '".concat(statementString, "' statement with the '").concat(ruleString, "' rule."));
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return unifiedWithRule;
|
|
34
|
-
}
|
|
35
|
-
function unifyAWithReference(statement, reference, substitutions, context) {
|
|
36
|
-
var unifiedWithReference = false;
|
|
37
|
-
if (reference !== null) {
|
|
38
|
-
var metavariableVerified = reference.verifyMetavariable(context);
|
|
39
|
-
if (metavariableVerified) {
|
|
40
|
-
var statementString = statement.getString(), referenceString = reference.getString();
|
|
41
|
-
context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(referenceString, "' reference..."));
|
|
42
|
-
var metavariable = reference.getMetavariable(), specificContext = context, statementSubstitution = _statement.default.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementSubstitution; ///
|
|
43
|
-
substitutions.addSubstitution(substitution, specificContext);
|
|
44
|
-
unifiedWithReference = true;
|
|
45
|
-
if (unifiedWithReference) {
|
|
46
|
-
context.debug("...unified the '".concat(statementString, "' statement with the '").concat(referenceString, "' reference."));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return unifiedWithReference;
|
|
51
|
-
}
|
|
52
|
-
function unifyAsSatisfyingAssertion(statement, reference, substitutions, context) {
|
|
53
|
-
var unifiedAsSatisfyingAssertion = false;
|
|
54
|
-
if (reference !== null) {
|
|
55
|
-
var satisfyingAssertion = (0, _context.satisfyingAssertionFromStatement)(statement, context);
|
|
56
|
-
if (satisfyingAssertion !== null) {
|
|
57
|
-
var statementString = statement.getString();
|
|
58
|
-
context.trace("Unifying the '".concat(statementString, "' statement as a satisfying assertion..."));
|
|
59
|
-
var axiomLemmaTheoremConjecture = context.findAxiomLemmaTheoremConjectureByReference(reference);
|
|
60
|
-
if (axiomLemmaTheoremConjecture !== null) {
|
|
61
|
-
reference = satisfyingAssertion.getReference();
|
|
62
|
-
var axiom = context.findAxiomByReference(reference), substitutions1 = _substitutions.default.fromNothing(), axiomLemmaTheoremConjectureUnified = axiom.unifyAxiomLemmaTheoremConjecture(axiomLemmaTheoremConjecture, substitutions1, context);
|
|
63
|
-
if (axiomLemmaTheoremConjectureUnified) {
|
|
64
|
-
var substitutionsMatch = satisfyingAssertion.matchSubstitutions(substitutions1, context);
|
|
65
|
-
unifiedAsSatisfyingAssertion = substitutionsMatch; ///
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (unifiedAsSatisfyingAssertion) {
|
|
69
|
-
context.debug("...unified the '".concat(statementString, "' statement as a satisfying assertion."));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return unifiedAsSatisfyingAssertion;
|
|
74
|
-
}
|
|
75
|
-
function unifyAWithAxiomLemmaTheoremOrConjecture(statement, reference, substitutions, context) {
|
|
76
|
-
var unifiedWithAxiomLemmaTheoremOrConjecture = false;
|
|
77
|
-
if (reference !== null) {
|
|
78
|
-
var axiomLemmaTheoremConjecture = context.findAxiomLemmaTheoremConjectureByReference(reference), generalSubstitutions = substitutions; ///
|
|
79
|
-
if (axiomLemmaTheoremConjecture !== null) {
|
|
80
|
-
var statementString = statement.getString(), axiomLemmaTheoremConjectureString = reference.getString();
|
|
81
|
-
context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(axiomLemmaTheoremConjectureString, "' axiom, lemma, theorem or conjecture..."));
|
|
82
|
-
var proofStepSubproofs = context.getProofStepSubproofs(), specificSubstitutions = _substitutions.default.fromNothing();
|
|
83
|
-
substitutions = specificSubstitutions; ///
|
|
84
|
-
var statementAndProofStepsUnified = axiomLemmaTheoremConjecture.unifyStatementAndProofStepSubproofs(statement, proofStepSubproofs, substitutions, context);
|
|
85
|
-
if (statementAndProofStepsUnified) {
|
|
86
|
-
var metavariable = reference.getMetavariable(), specificContext = context, statementSubstitution = _statement.default.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementSubstitution; ///
|
|
87
|
-
substitutions = generalSubstitutions; ///
|
|
88
|
-
substitutions.addSubstitution(substitution, specificContext);
|
|
89
|
-
unifiedWithAxiomLemmaTheoremOrConjecture = true;
|
|
90
|
-
}
|
|
91
|
-
if (unifiedWithAxiomLemmaTheoremOrConjecture) {
|
|
92
|
-
context.debug("...unified the '".concat(statementString, "' statement with the '").concat(axiomLemmaTheoremConjectureString, "' axiom, lemma, theorem or conjecture."));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return unifiedWithAxiomLemmaTheoremOrConjecture;
|
|
97
|
-
}
|
|
98
|
-
function unifyAsEquality(statement, reference, substitutions, context) {
|
|
99
|
-
var unifiedAsEquality = false;
|
|
100
|
-
if (reference === null) {
|
|
101
|
-
var equality = (0, _context.equalityFromStatement)(statement, context);
|
|
102
|
-
if (equality !== null) {
|
|
103
|
-
var statementString = statement.getString();
|
|
104
|
-
context.trace("Unifying the '".concat(statementString, "' statement as an equality..."));
|
|
105
|
-
unifiedAsEquality = true;
|
|
106
|
-
context.debug("...unified the '".concat(statementString, "' statement as an equality."));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return unifiedAsEquality;
|
|
110
|
-
}
|
|
111
|
-
function unifyAsJudgement(statement, reference, substitutions, context) {
|
|
112
|
-
var unifiedAsJudgement = false;
|
|
113
|
-
if (reference === null) {
|
|
114
|
-
var judgement = (0, _context.judgementFromStatement)(statement, context);
|
|
115
|
-
if (judgement !== null) {
|
|
116
|
-
var statementString = statement.getString();
|
|
117
|
-
context.trace("Unifying the '".concat(statementString, "' statement as a judgement..."));
|
|
118
|
-
unifiedAsJudgement = true;
|
|
119
|
-
context.debug("...unified the '".concat(statementString, "' statement as a judgement."));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return unifiedAsJudgement;
|
|
123
|
-
}
|
|
124
|
-
function unifyAsTypeAssertion(statement, reference, substitutions, context) {
|
|
125
|
-
var unifiedAsTypeAssertion = false;
|
|
126
|
-
if (reference === null) {
|
|
127
|
-
var typeAssertion = (0, _context.typeAssertionFromStatement)(statement, context);
|
|
128
|
-
if (typeAssertion !== null) {
|
|
129
|
-
var statementString = statement.getString();
|
|
130
|
-
context.trace("Unifying the '".concat(statementString, "' statement as a type assertion..."));
|
|
131
|
-
unifiedAsTypeAssertion = true;
|
|
132
|
-
context.debug("...unified the '".concat(statementString, "' statement as a type assertion."));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return unifiedAsTypeAssertion;
|
|
136
|
-
}
|
|
137
|
-
function unifyAsPropertyAssertion(statement, reference, substitutions, context) {
|
|
138
|
-
var unifiedAsPropertyAssertion = false;
|
|
139
|
-
if (reference === null) {
|
|
140
|
-
var propertyAssertion = (0, _context.propertyAssertionFromStatement)(statement, context);
|
|
141
|
-
if (propertyAssertion !== null) {
|
|
142
|
-
var statementString = statement.getString();
|
|
143
|
-
context.trace("Unifying the '".concat(statementString, "' statement as a property assertion..."));
|
|
144
|
-
var term = propertyAssertion.getTerm(), equivalence = context.findEquivalenceByTerm(term);
|
|
145
|
-
if (equivalence !== null) {
|
|
146
|
-
unifiedAsPropertyAssertion = equivalence.someOtherTerm(term, function(term) {
|
|
147
|
-
var propertyRelation = propertyAssertion.getPropertyRelation(), propertyAssertionMatches = context.matchTermAndPropertyRelation(term, propertyRelation);
|
|
148
|
-
if (propertyAssertionMatches) {
|
|
149
|
-
return true;
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
if (unifiedAsPropertyAssertion) {
|
|
154
|
-
context.debug("...unified the '".concat(statementString, "' statement as a property assertion."));
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return unifiedAsPropertyAssertion;
|
|
159
|
-
}
|
|
160
|
-
function unifyWithProofStepSubproofs(statement, reference, substitutions, context) {
|
|
161
|
-
var unifiedWithProofSteps = false;
|
|
162
|
-
if (reference === null) {
|
|
163
|
-
var proofStepSubproofs = context.getProofStepSubproofs(), statementUnifiedWithProofSteps = statement.unifyWithProofStepSubproofs(proofStepSubproofs, context);
|
|
164
|
-
unifiedWithProofSteps = statementUnifiedWithProofSteps; ///
|
|
165
|
-
}
|
|
166
|
-
return unifiedWithProofSteps;
|
|
167
|
-
}
|
|
168
|
-
var unifyMixins = [
|
|
169
|
-
unifyAWithRule,
|
|
170
|
-
unifyAWithReference,
|
|
171
|
-
unifyAsSatisfyingAssertion,
|
|
172
|
-
unifyAWithAxiomLemmaTheoremOrConjecture,
|
|
173
|
-
unifyAsEquality,
|
|
174
|
-
unifyAsJudgement,
|
|
175
|
-
unifyAsTypeAssertion,
|
|
176
|
-
unifyAsPropertyAssertion,
|
|
177
|
-
unifyWithProofStepSubproofs
|
|
178
|
-
];
|
|
179
|
-
var _default = unifyMixins;
|
|
180
|
-
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9taXhpbnMvcHJvb2ZTdGVwL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi4vLi4vc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IFN0YXRlbWVudFN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vLi4vc3Vic3RpdHV0aW9uL3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBqdWRnZW1lbnRGcm9tU3RhdGVtZW50LFxuICAgICAgICAgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBzYXRpc2Z5aW5nQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5mdW5jdGlvbiB1bmlmeUFXaXRoUnVsZShzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgdW5pZmllZFdpdGhSdWxlID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBydWxlU3RyaW5nID0gcnVsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZS4uLmApO1xuXG4gICAgICBjb25zdCBwcm9vZlN0ZXBTdWJwcm9vZnMgPSBjb250ZXh0LmdldFByb29mU3RlcFN1YnByb29mcygpLFxuICAgICAgICAgICAgc3RhdGVtZW50QW5kUHJvb2ZTdGVwc1VuaWZpZWQgPSBydWxlLnVuaWZ5U3RhdGVtZW50QW5kUHJvb2ZTdGVwU3VicHJvb2ZzKHN0YXRlbWVudCwgcHJvb2ZTdGVwU3VicHJvb2ZzLCBjb250ZXh0KTtcblxuICAgICAgdW5pZmllZFdpdGhSdWxlID0gc3RhdGVtZW50QW5kUHJvb2ZTdGVwc1VuaWZpZWQ7ICAvLy9cblxuICAgICAgaWYgKHVuaWZpZWRXaXRoUnVsZSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuaWZpZWRXaXRoUnVsZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlBV2l0aFJlZmVyZW5jZShzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgdW5pZmllZFdpdGhSZWZlcmVuY2UgPSBmYWxzZTtcblxuICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSByZWZlcmVuY2UudmVyaWZ5TWV0YXZhcmlhYmxlKGNvbnRleHQpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN0YXRlbWVudFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICAgIHN1YnN0aXR1dGlvbnMuYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgdW5pZmllZFdpdGhSZWZlcmVuY2UgPSB0cnVlO1xuXG4gICAgICBpZiAodW5pZmllZFdpdGhSZWZlcmVuY2UpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5QXNTYXRpc2Z5aW5nQXNzZXJ0aW9uKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkQXNTYXRpc2Z5aW5nQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNhdGlzZnlpbmdBc3NlcnRpb24gPSBzYXRpc2Z5aW5nQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHNhdGlzZnlpbmdBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHNhdGlzZnlpbmcgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIGNvbnN0IGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZSA9IGNvbnRleHQuZmluZEF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICAgIGlmIChheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICAgICAgcmVmZXJlbmNlID0gc2F0aXNmeWluZ0Fzc2VydGlvbi5nZXRSZWZlcmVuY2UoKTtcblxuICAgICAgICBjb25zdCBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgICAgYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlVW5pZmllZCA9IGF4aW9tLnVuaWZ5QXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlKGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVVuaWZpZWQpIHtcbiAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25zTWF0Y2ggPSBzYXRpc2Z5aW5nQXNzZXJ0aW9uLm1hdGNoU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICAgIHVuaWZpZWRBc1NhdGlzZnlpbmdBc3NlcnRpb24gPSBzdWJzdGl0dXRpb25zTWF0Y2g7ICAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodW5pZmllZEFzU2F0aXNmeWluZ0Fzc2VydGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2Z5aW5nIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZEFzU2F0aXNmeWluZ0Fzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdW5pZnlBV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZSA9IGNvbnRleHQuZmluZEF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgICAgZ2VuZXJhbFN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICAgIGlmIChheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmd9JyBheGlvbSwgbGVtbWEsIHRoZW9yZW0gb3IgY29uamVjdHVyZS4uLmApO1xuXG4gICAgICBjb25zdCBwcm9vZlN0ZXBTdWJwcm9vZnMgPSBjb250ZXh0LmdldFByb29mU3RlcFN1YnByb29mcygpLFxuICAgICAgICAgICAgc3BlY2lmaWNTdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tTm90aGluZygpO1xuXG4gICAgICBzdWJzdGl0dXRpb25zID0gc3BlY2lmaWNTdWJzdGl0dXRpb25zOyAgLy8vXG5cbiAgICAgIGNvbnN0IHN0YXRlbWVudEFuZFByb29mU3RlcHNVbmlmaWVkID0gYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlLnVuaWZ5U3RhdGVtZW50QW5kUHJvb2ZTdGVwU3VicHJvb2ZzKHN0YXRlbWVudCwgcHJvb2ZTdGVwU3VicHJvb2ZzLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudEFuZFByb29mU3RlcHNVbmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN0YXRlbWVudFN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICAgIHN1YnN0aXR1dGlvbnMgPSBnZW5lcmFsU3Vic3RpdHV0aW9uczsgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIHVuaWZpZWRXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7YXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nfScgYXhpb20sIGxlbW1hLCB0aGVvcmVtIG9yIGNvbmplY3R1cmUuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuaWZpZWRXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5QXNFcXVhbGl0eShzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgdW5pZmllZEFzRXF1YWxpdHkgPSBmYWxzZTtcblxuICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgY29uc3QgZXF1YWxpdHkgPSBlcXVhbGl0eUZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCk7XG5cbiAgICAgIHVuaWZpZWRBc0VxdWFsaXR5ID0gdHJ1ZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5LmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdW5pZnlBc0p1ZGdlbWVudChzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgdW5pZmllZEFzSnVkZ2VtZW50ID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGp1ZGdlbWVudCA9IGp1ZGdlbWVudEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC4uLmApO1xuXG4gICAgICB1bmlmaWVkQXNKdWRnZW1lbnQgPSB0cnVlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBqdWRnZW1lbnQuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuaWZpZWRBc0p1ZGdlbWVudDtcbn1cblxuZnVuY3Rpb24gdW5pZnlBc1R5cGVBc3NlcnRpb24oc3RhdGVtZW50LCByZWZlcmVuY2UsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRBc1R5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAodHlwZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdW5pZmllZEFzVHlwZUFzc2VydGlvbiA9IHRydWU7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB1bmlmeUFzUHJvcGVydHlBc3NlcnRpb24oc3RhdGVtZW50LCByZWZlcmVuY2UsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRBc1Byb3BlcnR5QXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAocHJvcGVydHlBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBjb25zdCB0ZXJtID0gcHJvcGVydHlBc3NlcnRpb24uZ2V0VGVybSgpLFxuICAgICAgICAgICAgZXF1aXZhbGVuY2UgPSBjb250ZXh0LmZpbmRFcXVpdmFsZW5jZUJ5VGVybSh0ZXJtKTtcblxuICAgICAgaWYgKGVxdWl2YWxlbmNlICE9PSBudWxsKSB7XG4gICAgICAgIHVuaWZpZWRBc1Byb3BlcnR5QXNzZXJ0aW9uID0gZXF1aXZhbGVuY2Uuc29tZU90aGVyVGVybSh0ZXJtLCAodGVybSkgPT4geyAgLy8vXG4gICAgICAgICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uLmdldFByb3BlcnR5UmVsYXRpb24oKSxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbk1hdGNoZXMgPSBjb250ZXh0Lm1hdGNoVGVybUFuZFByb3BlcnR5UmVsYXRpb24odGVybSwgcHJvcGVydHlSZWxhdGlvbik7XG5cbiAgICAgICAgICBpZiAocHJvcGVydHlBc3NlcnRpb25NYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodW5pZmllZEFzUHJvcGVydHlBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmlmaWVkQXNQcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdW5pZnlXaXRoUHJvb2ZTdGVwU3VicHJvb2ZzKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkV2l0aFByb29mU3RlcHMgPSBmYWxzZTtcblxuICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgY29uc3QgcHJvb2ZTdGVwU3VicHJvb2ZzID0gY29udGV4dC5nZXRQcm9vZlN0ZXBTdWJwcm9vZnMoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkV2l0aFByb29mU3RlcHMgPSBzdGF0ZW1lbnQudW5pZnlXaXRoUHJvb2ZTdGVwU3VicHJvb2ZzKHByb29mU3RlcFN1YnByb29mcywgY29udGV4dCk7XG5cbiAgICB1bmlmaWVkV2l0aFByb29mU3RlcHMgPSBzdGF0ZW1lbnRVbmlmaWVkV2l0aFByb29mU3RlcHM7IC8vL1xuICB9XG5cbiAgcmV0dXJuIHVuaWZpZWRXaXRoUHJvb2ZTdGVwcztcbn1cblxuY29uc3QgdW5pZnlNaXhpbnMgPSBbXG4gIHVuaWZ5QVdpdGhSdWxlLFxuICB1bmlmeUFXaXRoUmVmZXJlbmNlLFxuICB1bmlmeUFzU2F0aXNmeWluZ0Fzc2VydGlvbixcbiAgdW5pZnlBV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlLFxuICB1bmlmeUFzRXF1YWxpdHksXG4gIHVuaWZ5QXNKdWRnZW1lbnQsXG4gIHVuaWZ5QXNUeXBlQXNzZXJ0aW9uLFxuICB1bmlmeUFzUHJvcGVydHlBc3NlcnRpb24sXG4gIHVuaWZ5V2l0aFByb29mU3RlcFN1YnByb29mc1xuXTtcblxuZXhwb3J0IGRlZmF1bHQgdW5pZnlNaXhpbnM7XG5cbiJdLCJuYW1lcyI6WyJ1bmlmeUFXaXRoUnVsZSIsInN0YXRlbWVudCIsInJlZmVyZW5jZSIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0IiwidW5pZmllZFdpdGhSdWxlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJydWxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwic3RhdGVtZW50U3RyaW5nIiwidHJhY2UiLCJwcm9vZlN0ZXBTdWJwcm9vZnMiLCJnZXRQcm9vZlN0ZXBTdWJwcm9vZnMiLCJzdGF0ZW1lbnRBbmRQcm9vZlN0ZXBzVW5pZmllZCIsInVuaWZ5U3RhdGVtZW50QW5kUHJvb2ZTdGVwU3VicHJvb2ZzIiwiZGVidWciLCJ1bmlmeUFXaXRoUmVmZXJlbmNlIiwidW5pZmllZFdpdGhSZWZlcmVuY2UiLCJtZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmeU1ldGF2YXJpYWJsZSIsInJlZmVyZW5jZVN0cmluZyIsIm1ldGF2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZSIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb24iLCJhZGRTdWJzdGl0dXRpb24iLCJ1bmlmeUFzU2F0aXNmeWluZ0Fzc2VydGlvbiIsInVuaWZpZWRBc1NhdGlzZnlpbmdBc3NlcnRpb24iLCJzYXRpc2Z5aW5nQXNzZXJ0aW9uIiwic2F0aXNmeWluZ0Fzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmUiLCJmaW5kQXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlQnlSZWZlcmVuY2UiLCJnZXRSZWZlcmVuY2UiLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiU3Vic3RpdHV0aW9ucyIsImZyb21Ob3RoaW5nIiwiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlVW5pZmllZCIsInVuaWZ5QXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlIiwic3Vic3RpdHV0aW9uc01hdGNoIiwibWF0Y2hTdWJzdGl0dXRpb25zIiwidW5pZnlBV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlIiwidW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSIsImdlbmVyYWxTdWJzdGl0dXRpb25zIiwiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nIiwic3BlY2lmaWNTdWJzdGl0dXRpb25zIiwidW5pZnlBc0VxdWFsaXR5IiwidW5pZmllZEFzRXF1YWxpdHkiLCJlcXVhbGl0eSIsImVxdWFsaXR5RnJvbVN0YXRlbWVudCIsInVuaWZ5QXNKdWRnZW1lbnQiLCJ1bmlmaWVkQXNKdWRnZW1lbnQiLCJqdWRnZW1lbnQiLCJqdWRnZW1lbnRGcm9tU3RhdGVtZW50IiwidW5pZnlBc1R5cGVBc3NlcnRpb24iLCJ1bmlmaWVkQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidW5pZnlBc1Byb3BlcnR5QXNzZXJ0aW9uIiwidW5pZmllZEFzUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsInRlcm0iLCJnZXRUZXJtIiwiZXF1aXZhbGVuY2UiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm0iLCJzb21lT3RoZXJUZXJtIiwicHJvcGVydHlSZWxhdGlvbiIsImdldFByb3BlcnR5UmVsYXRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbk1hdGNoZXMiLCJtYXRjaFRlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uIiwidW5pZnlXaXRoUHJvb2ZTdGVwU3VicHJvb2ZzIiwidW5pZmllZFdpdGhQcm9vZlN0ZXBzIiwic3RhdGVtZW50VW5pZmllZFdpdGhQcm9vZlN0ZXBzIiwidW5pZnlNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXdRQTs7O2VBQUE7OztvRUF0UTBCO2dFQUNRO3VCQU1lOzs7Ozs7QUFFakQsU0FBU0EsZUFBZUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztJQUNsRSxJQUFJQyxrQkFBa0I7SUFFdEIsSUFBSUgsY0FBYyxNQUFNO1FBQ3RCLElBQU1JLE9BQU9GLFFBQVFHLG1CQUFtQixDQUFDTDtRQUV6QyxJQUFJSSxTQUFTLE1BQU07WUFDakIsSUFBTUUsYUFBYUYsS0FBS0csU0FBUyxJQUMzQkMsa0JBQWtCVCxVQUFVUSxTQUFTO1lBRTNDTCxRQUFRTyxLQUFLLENBQUMsQUFBQyxpQkFBd0RILE9BQXhDRSxpQkFBZ0IsMEJBQW1DLE9BQVhGLFlBQVc7WUFFbEYsSUFBTUkscUJBQXFCUixRQUFRUyxxQkFBcUIsSUFDbERDLGdDQUFnQ1IsS0FBS1MsbUNBQW1DLENBQUNkLFdBQVdXLG9CQUFvQlI7WUFFOUdDLGtCQUFrQlMsK0JBQWdDLEdBQUc7WUFFckQsSUFBSVQsaUJBQWlCO2dCQUNuQkQsUUFBUVksS0FBSyxDQUFDLEFBQUMsbUJBQTBEUixPQUF4Q0UsaUJBQWdCLDBCQUFtQyxPQUFYRixZQUFXO1lBQ3RGO1FBQ0Y7SUFDRjtJQUVBLE9BQU9IO0FBQ1Q7QUFFQSxTQUFTWSxvQkFBb0JoQixTQUFTLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxFQUFFQyxPQUFPO0lBQ3ZFLElBQUljLHVCQUF1QjtJQUUzQixJQUFJaEIsY0FBYyxNQUFNO1FBQ3RCLElBQU1p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
|