occam-verify-cli 0.0.942 → 0.0.943
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/conclusion.js +3 -4
- package/lib/consequent.js +3 -4
- package/lib/constants.js +5 -1
- package/lib/context/file.js +1 -1
- package/lib/context/local.js +15 -5
- package/lib/metavariable.js +12 -4
- package/lib/premise.js +11 -12
- package/lib/proofStep.js +13 -18
- package/lib/rule.js +5 -38
- package/lib/substitution/statementForMetavariable.js +15 -1
- package/lib/substitution/termForVariable.js +15 -1
- package/lib/substitutions.js +32 -10
- package/lib/supposition.js +11 -12
- package/lib/topLevelAssertion.js +5 -38
- package/lib/unifier/equality.js +6 -8
- package/lib/unifier/metaLevel.js +7 -10
- package/lib/unifier/statementAgainstCombinator.js +6 -9
- package/lib/unifier/termAgainstConstructor.js +5 -5
- package/lib/unifier.js +34 -13
- package/lib/unify/conclusionAgainstStatement.js +34 -0
- package/lib/unify/consequentAgainstStatement.js +34 -0
- package/lib/unify/metavariableAgainstStatement.js +23 -15
- package/lib/unify/premiseAgainstProofStep.js +41 -0
- package/lib/unify/premisesAgainstProofSteps.js +31 -0
- package/lib/unify/statementAgainstMetaType.js +5 -9
- package/lib/unify/suppositionAgainstProofStep.js +41 -0
- package/lib/unify/suppositionsAgainstProofSteps.js +31 -0
- package/lib/unify/termAgainstTerm.js +4 -5
- package/lib/unify/termAgainstType.js +7 -7
- package/lib/unify/variableAgainstTerm.js +11 -27
- package/lib/utilities/arguments.js +27 -0
- package/lib/utilities/array.js +5 -2
- package/lib/utilities/unify.js +19 -0
- package/lib/verifier/metaLevel.js +8 -11
- package/lib/verifier/statementAsCombinator.js +13 -22
- package/lib/verifier/topLevel.js +3 -6
- package/lib/verifier.js +28 -8
- package/lib/verify/assertion/type.js +3 -7
- package/lib/verify/declaration/metavariable.js +1 -1
- package/lib/verify/equality.js +3 -7
- package/lib/verify/metavariable.js +26 -63
- package/lib/verify/statement/qualified.js +54 -54
- package/lib/verify/statement/unqualified.js +2 -2
- package/lib/verify/statement.js +35 -30
- package/lib/verify/term.js +26 -32
- package/lib/verify/variable.js +3 -4
- package/package.json +1 -1
- package/src/conclusion.js +2 -6
- package/src/consequent.js +2 -6
- package/src/constants.js +1 -0
- package/src/context/file.js +5 -5
- package/src/context/local.js +20 -9
- package/src/metavariable.js +1 -1
- package/src/premise.js +18 -24
- package/src/proofStep.js +15 -20
- package/src/rule.js +11 -65
- package/src/substitution/statementForMetavariable.js +16 -0
- package/src/substitution/termForVariable.js +16 -0
- package/src/substitutions.js +47 -7
- package/src/supposition.js +18 -24
- package/src/topLevelAssertion.js +11 -65
- package/src/unifier/equality.js +7 -8
- package/src/unifier/metaLevel.js +6 -10
- package/src/unifier/statementAgainstCombinator.js +9 -9
- package/src/unifier/termAgainstConstructor.js +6 -4
- package/src/unifier.js +35 -11
- package/src/unify/conclusionAgainstStatement.js +34 -0
- package/src/unify/consequentAgainstStatement.js +34 -0
- package/src/unify/metavariableAgainstStatement.js +32 -22
- package/src/unify/premiseAgainstProofStep.js +54 -0
- package/src/unify/premisesAgainstProofSteps.js +23 -0
- package/src/unify/statementAgainstMetaType.js +3 -11
- package/src/unify/suppositionAgainstProofStep.js +54 -0
- package/src/unify/suppositionsAgainstProofSteps.js +23 -0
- package/src/unify/termAgainstTerm.js +3 -7
- package/src/unify/termAgainstType.js +5 -6
- package/src/unify/variableAgainstTerm.js +17 -47
- package/src/utilities/arguments.js +18 -0
- package/src/utilities/array.js +1 -1
- package/src/utilities/unify.js +18 -0
- package/src/verifier/metaLevel.js +7 -11
- package/src/verifier/statementAsCombinator.js +15 -28
- package/src/verifier/topLevel.js +13 -17
- package/src/verifier.js +28 -6
- package/src/verify/assertion/type.js +2 -6
- package/src/verify/declaration/metavariable.js +9 -9
- package/src/verify/equality.js +2 -6
- package/src/verify/metavariable.js +31 -91
- package/src/verify/statement/qualified.js +53 -53
- package/src/verify/statement/unqualified.js +1 -1
- package/src/verify/statement.js +37 -31
- package/src/verify/term.js +25 -31
- package/src/verify/variable.js +2 -4
package/lib/verify/term.js
CHANGED
|
@@ -26,8 +26,8 @@ function verifyTerm(termNode, terms, localContext, verifyAhead) {
|
|
|
26
26
|
localContext.trace("Verifying the '".concat(termString, "' term..."), termNode);
|
|
27
27
|
var verifyTermFunctions = [
|
|
28
28
|
verifyTermAsVariable,
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
unifyTermAgainstConstructors,
|
|
30
|
+
unifyTermAgainstBracketedConstructor
|
|
31
31
|
];
|
|
32
32
|
termVerified = verifyTermFunctions.some(function(verifyTermFunction) {
|
|
33
33
|
var termVerified = verifyTermFunction(termNode, terms, localContext, verifyAhead);
|
|
@@ -56,9 +56,7 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
|
|
|
56
56
|
var type = variable.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
|
|
57
57
|
terms.push(term);
|
|
58
58
|
verifiedAhead = verifyAhead();
|
|
59
|
-
|
|
60
|
-
terms.pop();
|
|
61
|
-
}
|
|
59
|
+
terms.pop();
|
|
62
60
|
termVerifiedAsVariable = verifiedAhead; ///
|
|
63
61
|
}
|
|
64
62
|
if (termVerifiedAsVariable) {
|
|
@@ -67,24 +65,24 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
|
|
|
67
65
|
}
|
|
68
66
|
return termVerifiedAsVariable;
|
|
69
67
|
}
|
|
70
|
-
function
|
|
71
|
-
var
|
|
68
|
+
function unifyTermAgainstConstructors(termNode, terms, localContext, verifyAhead) {
|
|
69
|
+
var termUnifiedAgainstConstructors = false;
|
|
72
70
|
var variableNode = variableNodeQuery(termNode);
|
|
73
71
|
if (variableNode === null) {
|
|
74
72
|
var constructors = localContext.getConstructors();
|
|
75
|
-
|
|
76
|
-
var
|
|
77
|
-
if (
|
|
73
|
+
termUnifiedAgainstConstructors = constructors.some(function(constructor) {
|
|
74
|
+
var termUnifiedAgainstConstructor = unifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead);
|
|
75
|
+
if (termUnifiedAgainstConstructor) {
|
|
78
76
|
return true;
|
|
79
77
|
}
|
|
80
78
|
});
|
|
81
79
|
}
|
|
82
|
-
return
|
|
80
|
+
return termUnifiedAgainstConstructors;
|
|
83
81
|
}
|
|
84
|
-
function
|
|
85
|
-
var
|
|
82
|
+
function unifyTermAgainstBracketedConstructor(termNode, terms, localContext, verifyAhead) {
|
|
83
|
+
var termUnifiedAgainstBracketedConstructor;
|
|
86
84
|
var termString = localContext.nodeAsString(termNode), bracketedConstructorString = _bracketed.default.getString();
|
|
87
|
-
localContext.trace("
|
|
85
|
+
localContext.trace("Unifying the '".concat(termString, "' term against the '").concat(bracketedConstructorString, "' bracketed constructor..."), termNode);
|
|
88
86
|
var bracketedConstructorTermNode = _bracketed.default.getTermNode(), termNodeA = termNode, constructorTermNodeB = bracketedConstructorTermNode, unified = _termAgainstConstructor.default.unify(termNodeA, constructorTermNodeB, localContext, function() {
|
|
89
87
|
var verifiedAhead;
|
|
90
88
|
var bracketedTermNode = termNode; ///
|
|
@@ -105,37 +103,33 @@ function verifyTermAgainstBracketedConstructor(termNode, terms, localContext, ve
|
|
|
105
103
|
var term = _term.default.fromTermNodeAndType(termNode, type);
|
|
106
104
|
terms.push(term);
|
|
107
105
|
verifiedAhead = verifyAhead();
|
|
108
|
-
|
|
109
|
-
terms.pop();
|
|
110
|
-
}
|
|
106
|
+
terms.pop();
|
|
111
107
|
}
|
|
112
108
|
return verifiedAhead;
|
|
113
109
|
});
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
localContext.debug("...
|
|
110
|
+
termUnifiedAgainstBracketedConstructor = unified; ///
|
|
111
|
+
if (termUnifiedAgainstBracketedConstructor) {
|
|
112
|
+
localContext.debug("...unified the '".concat(termString, "' term against the '").concat(bracketedConstructorString, "' constructor."), termNode);
|
|
117
113
|
}
|
|
118
|
-
return
|
|
114
|
+
return termUnifiedAgainstBracketedConstructor;
|
|
119
115
|
}
|
|
120
|
-
function
|
|
121
|
-
var
|
|
116
|
+
function unifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead) {
|
|
117
|
+
var termUnifiedAgainstConstructor;
|
|
122
118
|
var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString();
|
|
123
|
-
localContext.trace("
|
|
119
|
+
localContext.trace("Unifying the '".concat(termString, "' term against the '").concat(constructorString, "' constructor..."), termNode);
|
|
124
120
|
var constructorTermNode = constructor.getTermNode(), termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termAgainstConstructor.default.unify(termNodeA, constructorTermNodeB, localContext, function() {
|
|
125
121
|
var verifiedAhead;
|
|
126
122
|
var type = constructor.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
|
|
127
123
|
terms.push(term);
|
|
128
124
|
verifiedAhead = verifyAhead();
|
|
129
|
-
|
|
130
|
-
terms.pop();
|
|
131
|
-
}
|
|
125
|
+
terms.pop();
|
|
132
126
|
return verifiedAhead;
|
|
133
127
|
});
|
|
134
|
-
|
|
135
|
-
if (
|
|
136
|
-
localContext.debug("...
|
|
128
|
+
termUnifiedAgainstConstructor = unified; ///
|
|
129
|
+
if (termUnifiedAgainstConstructor) {
|
|
130
|
+
localContext.debug("...unified the '".concat(termString, "' term against the '").concat(constructorString, "' constructor."), termNode);
|
|
137
131
|
}
|
|
138
|
-
return
|
|
132
|
+
return termUnifiedAgainstConstructor;
|
|
139
133
|
}
|
|
140
134
|
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1BZ2FpbnN0Q29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS9hcmd1bWVudC90ZXJtXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWQ7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCB2ZXJpZnlUZXJtRnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlLFxuICAgIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzLFxuICAgIHZlcmlmeVRlcm1BZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3JcbiAgXTtcblxuICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtRnVuY3Rpb25zLnNvbWUoKHZlcmlmeVRlcm1GdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZDtcbn1cblxuT2JqZWN0LmFzc2lnbihzaGltLCB7XG4gIHZlcmlmeVRlcm1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB2ZXJpZnlUZXJtO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQXNWYXJpYWJsZSh0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIHZhcmlhYmxlLi4uYCwgdGVybU5vZGUpO1xuXG4gICAgY29uc3QgdmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgICB0ZXJtcy5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3JzID0gbG9jYWxDb250ZXh0LmdldENvbnN0cnVjdG9ycygpO1xuXG4gICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGNvbnN0cnVjdG9yLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JTdHJpbmcgPSBicmFja2V0ZWRDb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7YnJhY2tldGVkQ29uc3RydWN0b3JTdHJpbmd9JyBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSA9IGJyYWNrZXRlZENvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm1Ob2RlQSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGVCID0gYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSwgIC8vL1xuICAgICAgICB1bmlmaWVkID0gdGVybUFnYWluc3RDb25zdHJ1Y3RvclVuaWZpZXIudW5pZnkodGVybU5vZGVBLCBjb25zdHJ1Y3RvclRlcm1Ob2RlQiwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgICAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0ZXJtTm9kZSk7IC8vL1xuXG4gICAgICAgICAgaWYgKHRlcm1Ob2RlID09PSBudWxsKSB7XG4gICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCB0eXBlO1xuXG4gICAgICAgICAgICB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgICAgICAgdGVybSA9IGZpcnN0VGVybTsgLy8vXG5cbiAgICAgICAgICAgICAgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpO1xuXG4gICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRlcm1zLnBvcCgpO1xuXG4gICAgICAgICAgICB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1Ob2RlOyAvLy9cblxuICAgICAgICAgICAgY29uc3QgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlQW5kVHlwZSh0ZXJtTm9kZSwgdHlwZSk7XG5cbiAgICAgICAgICAgIHRlcm1zLnB1c2godGVybSk7XG5cbiAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICAgICAgICBpZiAoIXZlcmlmaWVkQWhlYWQpIHtcbiAgICAgICAgICAgICAgdGVybXMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgIH0pO1xuXG4gIHRlcm1WZXJpZmllZEFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciA9IHVuaWZpZWQ7ICAvLy9cblxuICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYWdhaW5zdCB0aGUgJyR7YnJhY2tldGVkQ29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCB0ZXJtcywgY29uc3RydWN0b3IsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcjtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm1Ob2RlQSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGVCID0gY29uc3RydWN0b3JUZXJtTm9kZSwgIC8vL1xuICAgICAgICB1bmlmaWVkID0gdGVybUFnYWluc3RDb25zdHJ1Y3RvclVuaWZpZXIudW5pZnkodGVybU5vZGVBLCBjb25zdHJ1Y3RvclRlcm1Ob2RlQiwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgICAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICAgICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICAgICAgICB0ZXJtcy5wb3AoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgfSk7XG5cbiAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gdW5pZmllZDsgIC8vL1xuXG4gIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMiLCJ2ZXJpZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yIiwic29tZSIsInZlcmlmeVRlcm1GdW5jdGlvbiIsImRlYnVnIiwiT2JqZWN0IiwiYXNzaWduIiwic2hpbSIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmVyaWZpZWRBaGVhZCIsInR5cGUiLCJnZXRUeXBlIiwidGVybSIsIlRlcm0iLCJmcm9tVGVybU5vZGVBbmRUeXBlIiwicHVzaCIsInBvcCIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciIsInZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvclN0cmluZyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiZ2V0U3RyaW5nIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwidGVybU5vZGVBIiwiY29uc3RydWN0b3JUZXJtTm9kZUIiLCJ1bmlmaWVkIiwidGVybUFnYWluc3RDb25zdHJ1Y3RvclVuaWZpZXIiLCJ1bmlmeSIsImJyYWNrZXRlZFRlcm1Ob2RlIiwiZmlyc3RUZXJtIiwiZmlyc3QiLCJjb25zdHJ1Y3RvclN0cmluZyIsImNvbnN0cnVjdG9yVGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTZDQTs7O2VBQUE7OzsyREEzQ2lCOzJEQUNBO2dFQUNnQjs2RUFDUztxQkFFcEI7cUJBQ0k7Ozs7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
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1BZ2FpbnN0Q29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1BZ2FpbnN0Q29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS9hcmd1bWVudC90ZXJtXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWQ7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCB2ZXJpZnlUZXJtRnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlLFxuICAgIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMsXG4gICAgdW5pZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yXG4gIF07XG5cbiAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlUZXJtRnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtRnVuY3Rpb24odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWQ7XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICB2ZXJpZnlUZXJtXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdmVyaWZ5VGVybTtcblxuZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS4uLmAsIHRlcm1Ob2RlKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGxldCB2ZXJpZmllZEFoZWFkO1xuXG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlQW5kVHlwZSh0ZXJtTm9kZSwgdHlwZSk7XG5cbiAgICAgIHRlcm1zLnB1c2godGVybSk7XG5cbiAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICB0ZXJtcy5wb3AoKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybUFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JTdHJpbmcgPSBicmFja2V0ZWRDb25zdHJ1Y3Rvci5nZXRTdHJpbmcoKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSAnJHticmFja2V0ZWRDb25zdHJ1Y3RvclN0cmluZ30nIGJyYWNrZXRlZCBjb25zdHJ1Y3Rvci4uLmAsIHRlcm1Ob2RlKTtcblxuICBjb25zdCBicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlID0gYnJhY2tldGVkQ29uc3RydWN0b3IuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgICAgIGNvbnN0IGJyYWNrZXRlZFRlcm1Ob2RlID0gdGVybU5vZGU7IC8vL1xuXG4gICAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHRlcm1Ob2RlKTsgLy8vXG5cbiAgICAgICAgICBpZiAodGVybU5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHR5cGU7XG5cbiAgICAgICAgICAgIHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlyc3RUZXJtID0gZmlyc3QodGVybXMpLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtOyAvLy9cblxuICAgICAgICAgICAgICB0eXBlID0gdGVybS5nZXRUeXBlKCk7XG5cbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgICAgICAgIHRlcm1Ob2RlID0gYnJhY2tldGVkVGVybU5vZGU7IC8vL1xuXG4gICAgICAgICAgICBjb25zdCB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgICAgICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgIHRlcm1zLnBvcCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICB0ZXJtVW5pZmllZEFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciA9IHVuaWZpZWQ7ICAvLy9cblxuICBpZiAodGVybVVuaWZpZWRBZ2FpbnN0QnJhY2tldGVkQ29uc3RydWN0b3IpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2JyYWNrZXRlZENvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IGNvbnN0cnVjdG9yLmdldFN0cmluZygpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFnYWluc3QgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yLmdldFRlcm1Ob2RlKCksXG4gICAgICAgIHRlcm1Ob2RlQSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGVCID0gY29uc3RydWN0b3JUZXJtTm9kZSwgIC8vL1xuICAgICAgICB1bmlmaWVkID0gdGVybUFnYWluc3RDb25zdHJ1Y3RvclVuaWZpZXIudW5pZnkodGVybU5vZGVBLCBjb25zdHJ1Y3RvclRlcm1Ob2RlQiwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICAgICAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgfSk7XG5cbiAgdGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB1bmlmaWVkOyAgLy8vXG5cbiAgaWYgKHRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhZ2FpbnN0IHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZEFnYWluc3RDb25zdHJ1Y3Rvcjtcbn1cblxuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZSIsInRlcm1zIiwibG9jYWxDb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJ0ZXJtVmVyaWZpZWQiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUZXJtRnVuY3Rpb25zIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzIiwidW5pZnlUZXJtQWdhaW5zdEJyYWNrZXRlZENvbnN0cnVjdG9yIiwic29tZSIsInZlcmlmeVRlcm1GdW5jdGlvbiIsImRlYnVnIiwiT2JqZWN0IiwiYXNzaWduIiwic2hpbSIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmVyaWZpZWRBaGVhZCIsInR5cGUiLCJnZXRUeXBlIiwidGVybSIsIlRlcm0iLCJmcm9tVGVybU5vZGVBbmRUeXBlIiwicHVzaCIsInBvcCIsInRlcm1VbmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IiLCJ1bmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllZEFnYWluc3RCcmFja2V0ZWRDb25zdHJ1Y3RvciIsImJyYWNrZXRlZENvbnN0cnVjdG9yU3RyaW5nIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJnZXRTdHJpbmciLCJicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtQWdhaW5zdENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5IiwiYnJhY2tldGVkVGVybU5vZGUiLCJmaXJzdFRlcm0iLCJmaXJzdCIsImNvbnN0cnVjdG9yU3RyaW5nIiwiY29uc3RydWN0b3JUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBNkNBOzs7ZUFBQTs7OzJEQTNDaUI7MkRBQ0E7Z0VBQ2dCOzZFQUNTO3FCQUVwQjtxQkFDSTs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyx3QkFDMUJDLG9CQUFvQkQsSUFBQUEsZ0JBQVMsRUFBQztBQUVwQyxTQUFTRSxXQUFXQyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQzVELElBQUlDO0lBRUosSUFBTUMsYUFBYUgsYUFBYUksWUFBWSxD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
|
package/lib/verify/variable.js
CHANGED
|
@@ -8,14 +8,13 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return verifyVariable;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
function verifyVariable(variableNode, localContext
|
|
11
|
+
function verifyVariable(variableNode, localContext) {
|
|
12
12
|
var variableVerified = false;
|
|
13
13
|
var variableString = localContext.nodeAsString(variableNode);
|
|
14
14
|
localContext.trace("Verifying the '".concat(variableString, "' variable..."), variableNode);
|
|
15
15
|
var variablePresent = localContext.isVariablePresentByVariableNode(variableNode);
|
|
16
16
|
if (variablePresent) {
|
|
17
|
-
|
|
18
|
-
variableVerified = verifiedAhead; ///
|
|
17
|
+
variableVerified = true;
|
|
19
18
|
}
|
|
20
19
|
if (variableVerified) {
|
|
21
20
|
localContext.debug("...verified the '".concat(variableString, "' variable."), variableNode);
|
|
@@ -23,4 +22,4 @@ function verifyVariable(variableNode, localContext, verifyAhead) {
|
|
|
23
22
|
return variableVerified;
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVZhcmlhYmxlKHZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHZhcmlhYmxlTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gLCB2YXJpYWJsZU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlUHJlc2VudCA9IGxvY2FsQ29udGV4dC5pc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgIHZhcmlhYmxlVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmAsIHZhcmlhYmxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlWYXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsImxvY2FsQ29udGV4dCIsInZhcmlhYmxlVmVyaWZpZWQiLCJ2YXJpYWJsZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTm9kZSIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFFQTs7O2VBQXdCQTs7O0FBQVQsU0FBU0EsZUFBZUMsWUFBWSxFQUFFQyxZQUFZO0lBQy9ELElBQUlDLG1CQUFtQjtJQUV2QixJQUFNQyxpQkFBaUJGLGFBQWFHLFlBQVksQ0FBQ0o7SUFFakRDLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUFnQyxPQUFmRixnQkFBZSxrQkFBZ0JIO0lBRXBFLElBQU1NLGtCQUFrQkwsYUFBYU0sK0JBQStCLENBQUNQO0lBRXJFLElBQUlNLGlCQUFpQjtRQUNuQkosbUJBQW1CO0lBQ3JCO0lBRUEsSUFBSUEsa0JBQWtCO1FBQ3BCRCxhQUFhTyxLQUFLLENBQUMsQUFBQyxvQkFBa0MsT0FBZkwsZ0JBQWUsZ0JBQWNIO0lBQ3RFO0lBRUEsT0FBT0U7QUFDVCJ9
|
package/package.json
CHANGED
package/src/conclusion.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "./context/local";
|
|
4
3
|
import metaLevelUnifier from "./unifier/metaLevel";
|
|
5
4
|
|
|
6
5
|
import { nodeAsString } from "./utilities/string";
|
|
@@ -15,15 +14,12 @@ export default class Conclusion {
|
|
|
15
14
|
return this.statementNode;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
unifyStatement(
|
|
17
|
+
unifyStatement(statementNodeB, substitutions, localContextA, localContextB) {
|
|
19
18
|
let statementUnified = false;
|
|
20
19
|
|
|
21
20
|
if (this.statementNode !== null) {
|
|
22
21
|
const nodeA = this.statementNode, ///
|
|
23
|
-
nodeB =
|
|
24
|
-
fileContextA = fileContext, ///
|
|
25
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
26
|
-
localContextB = localContext, ///
|
|
22
|
+
nodeB = statementNodeB, ///
|
|
27
23
|
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
28
24
|
|
|
29
25
|
statementUnified = unified; ///
|
package/src/consequent.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "./context/local";
|
|
4
3
|
import metaLevelUnifier from "./unifier/metaLevel";
|
|
5
4
|
|
|
6
5
|
import { nodeAsString } from "./utilities/string";
|
|
@@ -15,15 +14,12 @@ export default class Consequent {
|
|
|
15
14
|
return this.statementNode;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
unifyStatement(
|
|
17
|
+
unifyStatement(statementNodeB, substitutions, localContextA, localContextB) {
|
|
19
18
|
let statementUnified = false;
|
|
20
19
|
|
|
21
20
|
if (this.statementNode !== null) {
|
|
22
21
|
const nodeA = this.statementNode, ///
|
|
23
|
-
nodeB =
|
|
24
|
-
fileContextA = fileContext, ///
|
|
25
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
26
|
-
localContextB = localContext, ///
|
|
22
|
+
nodeB = statementNodeB, ///
|
|
27
23
|
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
28
24
|
|
|
29
25
|
statementUnified = unified; ///
|
package/src/constants.js
CHANGED
package/src/context/file.js
CHANGED
|
@@ -323,12 +323,12 @@ export default class FileContext {
|
|
|
323
323
|
findMetavariableByName(name) {
|
|
324
324
|
const metavariables = this.getMetavariables(),
|
|
325
325
|
metavariable = metavariables.find((metavariable) => {
|
|
326
|
-
|
|
326
|
+
const matches = metavariable.matchName(name);
|
|
327
327
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
328
|
+
if (matches) {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
}) || null;
|
|
332
332
|
|
|
333
333
|
return metavariable;
|
|
334
334
|
}
|
package/src/context/local.js
CHANGED
|
@@ -88,6 +88,8 @@ class LocalContext {
|
|
|
88
88
|
return lastProofStep;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
getTokens() { return this.context.getTokens(); }
|
|
92
|
+
|
|
91
93
|
getAxioms() { return this.context.getAxioms(); }
|
|
92
94
|
|
|
93
95
|
getLemmas() { return this.context.getLemmas(); }
|
|
@@ -228,21 +230,30 @@ class LocalContext {
|
|
|
228
230
|
return metavariableAdded;
|
|
229
231
|
}
|
|
230
232
|
|
|
231
|
-
unifyStatement(statementNode) {
|
|
233
|
+
unifyStatement(statementNode, localContext) {
|
|
232
234
|
let proofSteps = this.getProofSteps();
|
|
233
235
|
|
|
234
236
|
proofSteps = reverse(proofSteps); ///
|
|
235
237
|
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
+
const localContextA = this, ///
|
|
239
|
+
localContextB = localContext, ///
|
|
240
|
+
statementNodeAB = statementNode, ///
|
|
241
|
+
statementStringB = localContextA.nodeAsString(statementNodeAB);
|
|
238
242
|
|
|
239
|
-
|
|
240
|
-
const statementUnified = proofStep.unifyStatement(statementNode, equivalences, localContext);
|
|
243
|
+
localContextB.trace(`Unifying the '${statementStringB}' statement...`, statementNodeAB);
|
|
241
244
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
245
|
+
const equivalences = this.getEquivalences(),
|
|
246
|
+
statementUnified = proofSteps.some((proofStep) => {
|
|
247
|
+
const statementUnified = proofStep.unifyStatement(statementNode, equivalences, localContextA, localContextB);
|
|
248
|
+
|
|
249
|
+
if (statementUnified) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
if (statementUnified) {
|
|
255
|
+
localContextB.debug(`...unified the '${statementStringB}' statement.`, statementNodeAB);
|
|
256
|
+
}
|
|
246
257
|
|
|
247
258
|
return statementUnified;
|
|
248
259
|
}
|
package/src/metavariable.js
CHANGED
|
@@ -128,7 +128,7 @@ export default class Metavariable {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
function verifyTermAgainstTermType(termNode, termType, localContext) {
|
|
131
|
+
export function verifyTermAgainstTermType(termNode, termType, localContext) {
|
|
132
132
|
let termVerifiedAgainstTermType;
|
|
133
133
|
|
|
134
134
|
const type = termType, ///
|
package/src/premise.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "./context/local";
|
|
4
3
|
import metaLevelUnifier from "./unifier/metaLevel";
|
|
5
4
|
|
|
6
5
|
import { match } from "./utilities/array";
|
|
@@ -22,15 +21,12 @@ export default class Premise {
|
|
|
22
21
|
return this.statementNode;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
unifyStatement(
|
|
24
|
+
unifyStatement(statementNodeB, substitutions, localContextA, localContextB) {
|
|
26
25
|
let statementUnified = false;
|
|
27
26
|
|
|
28
27
|
if (this.statementNode !== null) {
|
|
29
28
|
const nodeA = this.statementNode, ///
|
|
30
|
-
nodeB =
|
|
31
|
-
fileContextA = fileContext, ///
|
|
32
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
33
|
-
localContextB = localContext, ///
|
|
29
|
+
nodeB = statementNodeB, ///
|
|
34
30
|
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
35
31
|
|
|
36
32
|
statementUnified = unified; ///
|
|
@@ -39,27 +35,25 @@ export default class Premise {
|
|
|
39
35
|
return statementUnified;
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
unifySubproof(
|
|
38
|
+
unifySubproof(subproofNodeB, substitutions, localContextA, localContextB) {
|
|
43
39
|
let subproofUnified = false;
|
|
44
40
|
|
|
45
41
|
if (this.statementNode !== null) {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
...
|
|
55
|
-
|
|
56
|
-
]
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
nodeA = subproofAssertionStatementNode, ///
|
|
62
|
-
nodeB = subproofStatementNode, ///
|
|
42
|
+
const statementNodeA = this.statementNode,
|
|
43
|
+
subproofAssertionNodeA = subproofAssertionNodeQuery(statementNodeA); ///
|
|
44
|
+
|
|
45
|
+
if (subproofAssertionNodeA !== null) {
|
|
46
|
+
const subproofAssertionStatementNodesA = subproofAssertionStatementNodesQuery(subproofAssertionNodeA), ///
|
|
47
|
+
subproofSuppositionStatementNodesB = subproofSuppositionStatementNodesQuery(subproofNodeB), ///
|
|
48
|
+
subproofLastProofStepStatementNodeB = subproofLastProofStepStatementNodeQuery(subproofNodeB), ///
|
|
49
|
+
subproofStatementNodesB = [
|
|
50
|
+
...subproofSuppositionStatementNodesB,
|
|
51
|
+
subproofLastProofStepStatementNodeB
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
subproofUnified = match(subproofAssertionStatementNodesA, subproofStatementNodesB, (subproofAssertionStatementNodeA, subproofStatementNodeB) => {
|
|
55
|
+
const nodeA = subproofAssertionStatementNodeA, ///
|
|
56
|
+
nodeB = subproofStatementNodeB, ///
|
|
63
57
|
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
64
58
|
|
|
65
59
|
if (unified) {
|
package/src/proofStep.js
CHANGED
|
@@ -17,7 +17,7 @@ export default class ProofStep {
|
|
|
17
17
|
return this.statementNode;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
unifyStatement(statementNode, equivalences,
|
|
20
|
+
unifyStatement(statementNode, equivalences, localContextA, localContextB) {
|
|
21
21
|
let statementUnified = false;
|
|
22
22
|
|
|
23
23
|
if (this.statementNode !== null) {
|
|
@@ -27,14 +27,14 @@ export default class ProofStep {
|
|
|
27
27
|
const statementNodeA = statementNode, ///
|
|
28
28
|
statementNodeB = this.statementNode; ///
|
|
29
29
|
|
|
30
|
-
statementUnifiedAgainstStatement = unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivalences,
|
|
30
|
+
statementUnifiedAgainstStatement = unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
if (!statementUnifiedAgainstStatement) {
|
|
34
34
|
const statementNodeA = statementNode, ///
|
|
35
35
|
statementNodeB = this.statementNode; ///
|
|
36
36
|
|
|
37
|
-
statementUnifiedAgainstStatement = unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivalences,
|
|
37
|
+
statementUnifiedAgainstStatement = unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
statementUnified = statementUnifiedAgainstStatement; ///
|
|
@@ -58,32 +58,27 @@ export default class ProofStep {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
function unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivalences,
|
|
61
|
+
function unifyStatementAgainstStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB) {
|
|
62
62
|
let statementUnifiedAgainstStatement = false;
|
|
63
63
|
|
|
64
64
|
const nodeA = statementNodeA, ///
|
|
65
65
|
nodeB = statementNodeB, ///
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
statementStringA = localContextA.nodeAsString(statementNodeA),
|
|
67
|
+
statementStringB = localContextB.nodeAsString(statementNodeB);
|
|
68
|
+
|
|
69
|
+
localContextB.trace(`Unifying the '${statementStringB}' statement against the '${statementStringA}' statement...`, statementNodeB);
|
|
70
|
+
|
|
71
|
+
const substitutions = Substitutions.fromNothing(),
|
|
69
72
|
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
70
73
|
|
|
71
74
|
if (unified) {
|
|
72
|
-
const
|
|
73
|
-
const substitutionUnified = equivalences.some((equivalence) => {
|
|
74
|
-
const substitutionUnifiedAgainstEquivalence = substitution.unifyAgainstEquivalence(equivalence, substitutions, localContext);
|
|
75
|
-
|
|
76
|
-
if (substitutionUnifiedAgainstEquivalence) {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
});
|
|
75
|
+
const substitutionsUnifiedAgainstEquivalences = substitutions.unifyAgainstEquivalences(equivalences, localContextA, localContextB);
|
|
80
76
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
});
|
|
77
|
+
statementUnifiedAgainstStatement = substitutionsUnifiedAgainstEquivalences; ///
|
|
78
|
+
}
|
|
85
79
|
|
|
86
|
-
|
|
80
|
+
if (statementUnifiedAgainstStatement) {
|
|
81
|
+
localContextB.debug(`...unified the '${statementStringB}' statement against the '${statementStringA}' statement.`, statementNodeB);
|
|
87
82
|
}
|
|
88
83
|
|
|
89
84
|
return statementUnifiedAgainstStatement;
|
package/src/rule.js
CHANGED
|
@@ -4,8 +4,8 @@ import Label from "./label";
|
|
|
4
4
|
import Premise from "./premise";
|
|
5
5
|
import Conclusion from "./conclusion";
|
|
6
6
|
import Substitutions from "./substitutions";
|
|
7
|
-
|
|
8
|
-
import
|
|
7
|
+
import unifyPremisesAgainstProofSteps from "./unify/premisesAgainstProofSteps";
|
|
8
|
+
import unifyConclusionAgainstStatement from "./unify/conclusionAgainstStatement";
|
|
9
9
|
|
|
10
10
|
export default class Rule {
|
|
11
11
|
constructor(labels, premises, conclusion, fileContext) {
|
|
@@ -34,12 +34,17 @@ export default class Rule {
|
|
|
34
34
|
unifyStatement(statementNode, localContext) {
|
|
35
35
|
let statementUnified = false;
|
|
36
36
|
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
const substitutions = Substitutions.fromNothing(),
|
|
38
|
+
proofSteps = localContext.getProofSteps(),
|
|
39
|
+
premisesA = this.premises,
|
|
40
|
+
proofStepsB = proofSteps, ///
|
|
41
|
+
fileContextA = this.fileContext, ///
|
|
42
|
+
localContextB = localContext, ///
|
|
43
|
+
premisesUnified = unifyPremisesAgainstProofSteps(premisesA, proofStepsB, substitutions, fileContextA, localContextB);
|
|
40
44
|
|
|
41
45
|
if (premisesUnified) {
|
|
42
|
-
const
|
|
46
|
+
const conclusionA = this.conclusion, ///
|
|
47
|
+
conclusionUnified = unifyConclusionAgainstStatement(conclusionA, statementNode, substitutions, fileContextA, localContextB);
|
|
43
48
|
|
|
44
49
|
statementUnified = conclusionUnified; ///
|
|
45
50
|
}
|
|
@@ -127,62 +132,3 @@ export default class Rule {
|
|
|
127
132
|
return rule;
|
|
128
133
|
}
|
|
129
134
|
}
|
|
130
|
-
|
|
131
|
-
function matchPremise(premise, proofStep, substitutions, fileContext, localContext) {
|
|
132
|
-
let premiseUnified = false;
|
|
133
|
-
|
|
134
|
-
const subproofNode = proofStep.getSubproofNode(),
|
|
135
|
-
statementNode = proofStep.getStatementNode();
|
|
136
|
-
|
|
137
|
-
substitutions.snapshot();
|
|
138
|
-
|
|
139
|
-
if (subproofNode !== null) {
|
|
140
|
-
const subproofUnified = premise.unifySubproof(subproofNode, substitutions, fileContext, localContext);
|
|
141
|
-
|
|
142
|
-
premiseUnified = subproofUnified; ///
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
if (statementNode !== null) {
|
|
146
|
-
const statementUnified = premise.unifyStatement(statementNode, substitutions, fileContext, localContext);
|
|
147
|
-
|
|
148
|
-
premiseUnified = statementUnified; ///
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
premiseUnified ?
|
|
152
|
-
substitutions.continue() :
|
|
153
|
-
substitutions.rollback();
|
|
154
|
-
|
|
155
|
-
return premiseUnified;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
function unifyPremises(premises, proofSteps, substitutions, fileContext, localContext) {
|
|
159
|
-
premises = reverse(premises); ///
|
|
160
|
-
|
|
161
|
-
proofSteps = reverse(proofSteps); ///
|
|
162
|
-
|
|
163
|
-
const premisesUnified = correlate(premises, proofSteps, (premise, proofStep) => {
|
|
164
|
-
const premiseUnified = matchPremise(premise, proofStep, substitutions, fileContext, localContext);
|
|
165
|
-
|
|
166
|
-
if (premiseUnified) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
return premisesUnified;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
function unifyConclusion(conclusion, statementNode, substitutions, fileContext, localContext) {
|
|
175
|
-
let conclusionUnified;
|
|
176
|
-
|
|
177
|
-
substitutions.snapshot();
|
|
178
|
-
|
|
179
|
-
const statementUnified = conclusion.unifyStatement(statementNode, substitutions, fileContext, localContext);
|
|
180
|
-
|
|
181
|
-
conclusionUnified = statementUnified; ///
|
|
182
|
-
|
|
183
|
-
conclusionUnified ?
|
|
184
|
-
substitutions.continue() :
|
|
185
|
-
substitutions.rollback();
|
|
186
|
-
|
|
187
|
-
return conclusionUnified;
|
|
188
|
-
}
|
|
@@ -32,6 +32,12 @@ export default class StatementForMetavariableSubstitution extends Substitution {
|
|
|
32
32
|
return this.substitution;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
getNode() {
|
|
36
|
+
const node = this.statementNode; ///
|
|
37
|
+
|
|
38
|
+
return node;
|
|
39
|
+
}
|
|
40
|
+
|
|
35
41
|
matchStatementNode(statementNode, substitutions, localContextA, localContextB) {
|
|
36
42
|
let statementNodeMatches;
|
|
37
43
|
|
|
@@ -83,6 +89,16 @@ export default class StatementForMetavariableSubstitution extends Substitution {
|
|
|
83
89
|
return unifiedAgainstEquivalence;
|
|
84
90
|
}
|
|
85
91
|
|
|
92
|
+
asString(localContextA, localContextB) {
|
|
93
|
+
const statementNodeB = this.statementNode, ///
|
|
94
|
+
statementStringB = localContextB.nodeAsString(statementNodeB),
|
|
95
|
+
metavariableNodeA = this.metavariableNode, ///
|
|
96
|
+
metavariableStringA = localContextA.nodeAsString(metavariableNodeA),
|
|
97
|
+
string = `[${statementStringB} for ${metavariableStringA}]`;
|
|
98
|
+
|
|
99
|
+
return string;
|
|
100
|
+
}
|
|
101
|
+
|
|
86
102
|
static fromJSONAndFileContext(json, fileContext) {
|
|
87
103
|
const { metavariable, statement } = json,
|
|
88
104
|
metavariableString = metavariable, ///
|
|
@@ -23,6 +23,12 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
23
23
|
return this.termNode;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
getNode() {
|
|
27
|
+
const node = this.termNode; ///
|
|
28
|
+
|
|
29
|
+
return node;
|
|
30
|
+
}
|
|
31
|
+
|
|
26
32
|
isTransformed(substitution) {
|
|
27
33
|
const termNod = substitution.getTermNode(),
|
|
28
34
|
variableNode = substitution.getVariableNode(),
|
|
@@ -61,6 +67,16 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
61
67
|
return unifiedAgainstEquivalence;
|
|
62
68
|
}
|
|
63
69
|
|
|
70
|
+
asString(localContextA, localContextB) {
|
|
71
|
+
const termNodeB = this.termNode, ///
|
|
72
|
+
termStringB = localContextB.nodeAsString(termNodeB),
|
|
73
|
+
variableNodeA = this.variableNode, ///
|
|
74
|
+
variableStringA = localContextA.nodeAsString(variableNodeA),
|
|
75
|
+
string = `[${termStringB} for ${variableStringA}]`;
|
|
76
|
+
|
|
77
|
+
return string;
|
|
78
|
+
}
|
|
79
|
+
|
|
64
80
|
static fromSubstitutionNode(substitutionNode) {
|
|
65
81
|
const termNode = termNodeQuery(substitutionNode),
|
|
66
82
|
variableNode = variableNodeQuery(substitutionNode),
|