occam-verify-cli 0.0.922 → 0.0.924
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/axiom.js +9 -9
- package/lib/conclusion.js +11 -41
- package/lib/conjecture.js +9 -9
- package/lib/constants.js +1 -13
- package/lib/context/file.js +3 -3
- package/lib/context/local.js +19 -59
- package/lib/declaration.js +15 -15
- package/lib/lemma.js +9 -9
- package/lib/metaLemma.js +7 -7
- package/lib/metatheorem.js +7 -7
- package/lib/metavariable.js +8 -1
- package/lib/mixins/nodesVerifier/metaLevel.js +6 -6
- package/lib/premise.js +14 -91
- package/lib/{step/proof.js → proofStep.js} +1 -1
- package/lib/rule.js +1 -45
- package/lib/ruleNames.js +1 -9
- package/lib/substitution/statementForMetavariable.js +9 -1
- package/lib/substitution.js +1 -8
- package/lib/supposition.js +55 -1
- package/lib/theorem.js +9 -9
- package/lib/topLevelAssertion.js +186 -0
- package/lib/utilities/customGrammar.js +2 -2
- package/lib/utilities/match.js +13 -50
- package/lib/utilities/node.js +2 -27
- package/lib/utilities/tokens.js +1 -8
- package/lib/utilities/verify.js +8 -24
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +29 -29
- package/lib/verifier/nodes/metaLevel.js +13 -13
- package/lib/verify/axiom.js +4 -4
- package/lib/verify/conclusion.js +10 -11
- package/lib/verify/conjecture.js +4 -4
- package/lib/verify/containedAssertion.js +91 -0
- package/lib/verify/declaration.js +7 -7
- package/lib/verify/definedAssertion.js +115 -0
- package/lib/verify/derivation.js +7 -7
- package/lib/verify/frame.js +2 -2
- package/lib/verify/judgement.js +2 -2
- package/lib/verify/lemma.js +5 -5
- package/lib/verify/metaLemma.js +12 -12
- package/lib/verify/metastatement.js +48 -67
- package/lib/verify/metatheorem.js +12 -12
- package/lib/verify/metavariable.js +2 -2
- package/lib/verify/premise.js +11 -30
- package/lib/verify/proof.js +3 -3
- package/lib/verify/proofStep.js +8 -8
- package/lib/verify/rule.js +10 -10
- package/lib/verify/statement/qualified.js +38 -15
- package/lib/verify/statement/unqualified.js +38 -10
- package/lib/verify/statement.js +85 -92
- package/lib/verify/subDerivation.js +3 -3
- package/lib/verify/subproof.js +3 -3
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/termAsConstructor.js +2 -2
- package/lib/verify/theorem.js +4 -4
- package/package.json +2 -2
- package/src/axiom.js +4 -4
- package/src/conclusion.js +13 -52
- package/src/conjecture.js +4 -4
- package/src/constants.js +0 -3
- package/src/context/file.js +2 -2
- package/src/context/local.js +21 -67
- package/src/declaration.js +19 -19
- package/src/lemma.js +4 -4
- package/src/metaLemma.js +4 -4
- package/src/metatheorem.js +4 -4
- package/src/metavariable.js +6 -0
- package/src/mixins/nodesVerifier/metaLevel.js +8 -8
- package/src/premise.js +20 -137
- package/src/rule.js +0 -67
- package/src/ruleNames.js +0 -2
- package/src/substitution/statementForMetavariable.js +14 -0
- package/src/substitution.js +0 -6
- package/src/supposition.js +46 -0
- package/src/theorem.js +4 -4
- package/src/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +36 -23
- package/src/utilities/customGrammar.js +1 -2
- package/src/utilities/match.js +13 -60
- package/src/utilities/node.js +3 -32
- package/src/utilities/tokens.js +0 -8
- package/src/utilities/verify.js +4 -20
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +36 -37
- package/src/verifier/nodes/metaLevel.js +17 -17
- package/src/verify/axiom.js +5 -4
- package/src/verify/conclusion.js +9 -13
- package/src/verify/conjecture.js +5 -4
- package/src/verify/{statementAsContainedAssertion.js → containedAssertion.js} +20 -36
- package/src/verify/declaration.js +8 -8
- package/src/verify/{statementAsDefinedAssertion.js → definedAssertion.js} +22 -37
- package/src/verify/derivation.js +6 -6
- package/src/verify/frame.js +1 -1
- package/src/verify/judgement.js +1 -1
- package/src/verify/lemma.js +8 -5
- package/src/verify/metaLemma.js +24 -24
- package/src/verify/metastatement.js +48 -76
- package/src/verify/metatheorem.js +23 -23
- package/src/verify/metavariable.js +1 -1
- package/src/verify/premise.js +14 -46
- package/src/verify/proof.js +2 -2
- package/src/verify/proofStep.js +4 -4
- package/src/verify/rule.js +11 -11
- package/src/verify/statement/qualified.js +56 -21
- package/src/verify/statement/unqualified.js +52 -10
- package/src/verify/statement.js +133 -39
- package/src/verify/subDerivation.js +2 -2
- package/src/verify/subproof.js +2 -2
- package/src/verify/supposition.js +1 -1
- package/src/verify/termAsConstructor.js +2 -2
- package/src/verify/theorem.js +7 -4
- package/lib/axiomLemmaTheoremConjecture.js +0 -174
- package/lib/metaConsequent.js +0 -108
- package/lib/metaLemmaMetatheorem.js +0 -191
- package/lib/metaSupposition.js +0 -160
- package/lib/node/metastatement/bracketed.js +0 -16
- package/lib/step/metaproof.js +0 -106
- package/lib/substitution/metastatementForMetavariable.js +0 -173
- package/lib/verify/metaConsequent.js +0 -50
- package/lib/verify/metaDerivation.js +0 -31
- package/lib/verify/metaSubDerivation.js +0 -25
- package/lib/verify/metaSubproof.js +0 -34
- package/lib/verify/metaSupposition.js +0 -61
- package/lib/verify/metaSuppositions.js +0 -28
- package/lib/verify/metaproof.js +0 -31
- package/lib/verify/metaproofStep.js +0 -98
- package/lib/verify/metastatement/qualified.js +0 -95
- package/lib/verify/metastatement/unqualified.js +0 -37
- package/lib/verify/metastatementAsContainedAssertion.js +0 -109
- package/lib/verify/metastatementAsDefinedAssertion.js +0 -132
- package/lib/verify/metavariableAgainstMetastatement.js +0 -44
- package/lib/verify/statementAsContainedAssertion.js +0 -109
- package/lib/verify/statementAsDefinedAssertion.js +0 -132
- package/src/metaConsequent.js +0 -83
- package/src/metaLemmaMetatheorem.js +0 -188
- package/src/metaSupposition.js +0 -127
- package/src/node/metastatement/bracketed.js +0 -9
- package/src/step/metaproof.js +0 -73
- package/src/substitution/metastatementForMetavariable.js +0 -90
- package/src/verify/metaConsequent.js +0 -61
- package/src/verify/metaDerivation.js +0 -23
- package/src/verify/metaSubDerivation.js +0 -22
- package/src/verify/metaSubproof.js +0 -32
- package/src/verify/metaSupposition.js +0 -78
- package/src/verify/metaSuppositions.js +0 -17
- package/src/verify/metaproof.js +0 -28
- package/src/verify/metaproofStep.js +0 -137
- package/src/verify/metastatement/qualified.js +0 -130
- package/src/verify/metastatement/unqualified.js +0 -34
- package/src/verify/metastatementAsContainedAssertion.js +0 -127
- package/src/verify/metastatementAsDefinedAssertion.js +0 -156
- package/src/verify/metavariableAgainstMetastatement.js +0 -42
- /package/src/{step/proof.js → proofStep.js} +0 -0
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
default: function() {
|
|
13
|
-
return verifyStatementAsContainedAssertion;
|
|
14
|
-
},
|
|
15
|
-
isStatementContainedAssertion: function() {
|
|
16
|
-
return isStatementContainedAssertion;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../verifier/node/metaLevel"));
|
|
20
|
-
var _constants = require("../constants");
|
|
21
|
-
var _verify = require("../utilities/verify");
|
|
22
|
-
var _query = require("../utilities/query");
|
|
23
|
-
function _interop_require_default(obj) {
|
|
24
|
-
return obj && obj.__esModule ? obj : {
|
|
25
|
-
default: obj
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
var termNodeQuery = (0, _query.nodeQuery)("/statement/term!"), statementTermNodesQuery = (0, _query.nodesQuery)("/statement/metaArgument/statement//term"), operatorTerminalNodesQuery = (0, _query.nodesQuery)("/statement/@operator");
|
|
29
|
-
function verifyStatementAsContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
30
|
-
var statementVerifiedAsContainedAssertion;
|
|
31
|
-
var statementContainedAssertion = isStatementContainedAssertion(statementNode);
|
|
32
|
-
if (statementContainedAssertion) {
|
|
33
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
34
|
-
localContext.trace("Verifying the '".concat(statementString, "' statement as a contained assertion..."), statementNode);
|
|
35
|
-
var statementFunctions = [
|
|
36
|
-
verifyStatementAsDerivedContainedAssertion,
|
|
37
|
-
verifyStatementAsStatedContainedAssertion
|
|
38
|
-
];
|
|
39
|
-
statementVerifiedAsContainedAssertion = statementFunctions.some(function(statementFunction) {
|
|
40
|
-
var statementVerifiedAsContainedAssertion = statementFunction(statementNode, assignments, derived, localContext);
|
|
41
|
-
if (statementVerifiedAsContainedAssertion) {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
if (statementVerifiedAsContainedAssertion) {
|
|
46
|
-
localContext.debug("...verified the '".concat(statementString, "' statement as a contained assertion."), statementNode);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return statementVerifiedAsContainedAssertion;
|
|
50
|
-
}
|
|
51
|
-
function verifyStatementAsDerivedContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
52
|
-
var statementVerifiedAsDefinedContainedAssertion = false;
|
|
53
|
-
if (derived) {
|
|
54
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
55
|
-
localContext.trace("Verifying the derived '".concat(statementString, "' statement as a contained assertion..."), statementNode);
|
|
56
|
-
var statementNegated = (0, _verify.isStatementNegated)(statementNode), termNode = termNodeQuery(statementNode), negated = statementNegated, statementTermNodes = statementTermNodesQuery(statementNode), termNodeMatchesMetaArgumentVariableNode = statementTermNodes.some(function(statementTermNode) {
|
|
57
|
-
var termNodeMatchesMetaArgumentVariableNode = termNode.match(statementTermNode);
|
|
58
|
-
if (termNodeMatchesMetaArgumentVariableNode) {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
if (!negated) {
|
|
63
|
-
if (termNodeMatchesMetaArgumentVariableNode) {
|
|
64
|
-
statementVerifiedAsDefinedContainedAssertion = true;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (negated) {
|
|
68
|
-
if (!termNodeMatchesMetaArgumentVariableNode) {
|
|
69
|
-
statementVerifiedAsDefinedContainedAssertion = true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
if (statementVerifiedAsDefinedContainedAssertion) {
|
|
73
|
-
localContext.debug("...verified the derived '".concat(statementString, "' statement as a contained assertion."), statementNode);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return statementVerifiedAsDefinedContainedAssertion;
|
|
77
|
-
}
|
|
78
|
-
function verifyStatementAsStatedContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
79
|
-
var statementVerifiedAsStatedContainedAssertion = false;
|
|
80
|
-
if (!derived) {
|
|
81
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
82
|
-
localContext.trace("Verifying the stated '".concat(statementString, "' statement as a contained assertion..."), statementNode);
|
|
83
|
-
var intrinsicLevel = localContext.isIntrinsicLevel();
|
|
84
|
-
if (intrinsicLevel) {
|
|
85
|
-
localContext.debug("The stated '".concat(statementString, "' statement as a contained assertion cannot be verified at intrinsic level."), statementNode);
|
|
86
|
-
} else {
|
|
87
|
-
var nonTerminalNode = statementNode, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNode, localContext, function() {
|
|
88
|
-
var verifiedAhead = true;
|
|
89
|
-
return verifiedAhead;
|
|
90
|
-
});
|
|
91
|
-
statementVerifiedAsStatedContainedAssertion = nonTerminalNodeVerified; ///
|
|
92
|
-
}
|
|
93
|
-
if (statementVerifiedAsStatedContainedAssertion) {
|
|
94
|
-
localContext.debug("...verified the stated '".concat(statementString, "' statement as a contained assertion."), statementNode);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return statementVerifiedAsStatedContainedAssertion;
|
|
98
|
-
}
|
|
99
|
-
function isStatementContainedAssertion(statementNode) {
|
|
100
|
-
var operatorTerminalNodes = operatorTerminalNodesQuery(statementNode), statementContainedAssertion = operatorTerminalNodes.some(function(operatorTerminalNode) {
|
|
101
|
-
var content = operatorTerminalNode.getContent(), contentContained = content === _constants.CONTAINED;
|
|
102
|
-
if (contentContained) {
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
return statementContainedAssertion;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBtZXRhTGV2ZWxOb2RlVmVyaWZpZXIgZnJvbSBcIi4uL3ZlcmlmaWVyL25vZGUvbWV0YUxldmVsXCI7XG5cbmltcG9ydCB7IENPTlRBSU5FRCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGlzU3RhdGVtZW50TmVnYXRlZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmVyaWZ5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3Rlcm0hXCIpLFxuICAgICAgc3RhdGVtZW50VGVybU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3N0YXRlbWVudC9tZXRhQXJndW1lbnQvc3RhdGVtZW50Ly90ZXJtXCIpLFxuICAgICAgb3BlcmF0b3JUZXJtaW5hbE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3N0YXRlbWVudC9Ab3BlcmF0b3JcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNDb250YWluZWRBc3NlcnRpb247XG5cbiAgY29uc3Qgc3RhdGVtZW50Q29udGFpbmVkQXNzZXJ0aW9uID0gaXNTdGF0ZW1lbnRDb250YWluZWRBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudENvbnRhaW5lZEFzc2VydGlvbikge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgdmVyaWZ5U3RhdGVtZW50QXNEZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uLFxuICAgICAgdmVyaWZ5U3RhdGVtZW50QXNTdGF0ZWRDb250YWluZWRBc3NlcnRpb25cbiAgICBdO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IHN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKChzdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IHN0YXRlbWVudEZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0NvbnRhaW5lZEFzc2VydGlvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0Rlcml2ZWRDb250YWluZWRBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRDb250YWluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgZGVyaXZlZCAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROZWdhdGVkID0gaXNTdGF0ZW1lbnROZWdhdGVkKHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBuZWdhdGVkID0gc3RhdGVtZW50TmVnYXRlZCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50VGVybU5vZGVzID0gc3RhdGVtZW50VGVybU5vZGVzUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgdGVybU5vZGVNYXRjaGVzTWV0YUFyZ3VtZW50VmFyaWFibGVOb2RlID0gc3RhdGVtZW50VGVybU5vZGVzLnNvbWUoKHN0YXRlbWVudFRlcm1Ob2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUgPSB0ZXJtTm9kZS5tYXRjaChzdGF0ZW1lbnRUZXJtTm9kZSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoIW5lZ2F0ZWQpIHtcbiAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRDb250YWluZWRBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICBpZiAoIXRlcm1Ob2RlTWF0Y2hlc01ldGFBcmd1bWVudFZhcmlhYmxlTm9kZSkge1xuICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZENvbnRhaW5lZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBkZXJpdmVkICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGNvbnRhaW5lZCBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc1N0YXRlZENvbnRhaW5lZEFzc2VydGlvbihzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBsb2NhbENvbnRleHQuaXNJbnRyaW5zaWNMZXZlbCgpO1xuXG4gICAgaWYgKGludHJpbnNpY0xldmVsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbiBjYW5ub3QgYmUgdmVyaWZpZWQgYXQgaW50cmluc2ljIGxldmVsLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbWV0YUxldmVsTm9kZVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc1N0YXRlZENvbnRhaW5lZEFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGVtZW50Q29udGFpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUpIHtcbiAgY29uc3Qgb3BlcmF0b3JUZXJtaW5hbE5vZGVzID0gb3BlcmF0b3JUZXJtaW5hbE5vZGVzUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIHN0YXRlbWVudENvbnRhaW5lZEFzc2VydGlvbiA9IG9wZXJhdG9yVGVybWluYWxOb2Rlcy5zb21lKChvcGVyYXRvclRlcm1pbmFsTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBvcGVyYXRvclRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgICAgICAgY29udGVudENvbnRhaW5lZCA9IChjb250ZW50ID09PSBDT05UQUlORUQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRlbnRDb250YWluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudENvbnRhaW5lZEFzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiIsImlzU3RhdGVtZW50Q29udGFpbmVkQXNzZXJ0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInN0YXRlbWVudFRlcm1Ob2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm9wZXJhdG9yVGVybWluYWxOb2Rlc1F1ZXJ5Iiwic3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInN0YXRlbWVudFZlcmlmaWVkQXNDb250YWluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnRDb250YWluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInN0YXRlbWVudEZ1bmN0aW9ucyIsInZlcmlmeVN0YXRlbWVudEFzRGVyaXZlZENvbnRhaW5lZEFzc2VydGlvbiIsInZlcmlmeVN0YXRlbWVudEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uIiwic29tZSIsInN0YXRlbWVudEZ1bmN0aW9uIiwiZGVidWciLCJzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZENvbnRhaW5lZEFzc2VydGlvbiIsInN0YXRlbWVudE5lZ2F0ZWQiLCJpc1N0YXRlbWVudE5lZ2F0ZWQiLCJ0ZXJtTm9kZSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnRUZXJtTm9kZXMiLCJ0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnRUZXJtTm9kZSIsIm1hdGNoIiwic3RhdGVtZW50VmVyaWZpZWRBc1N0YXRlZENvbnRhaW5lZEFzc2VydGlvbiIsImludHJpbnNpY0xldmVsIiwiaXNJbnRyaW5zaWNMZXZlbCIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwibWV0YUxldmVsTm9kZVZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwidmVyaWZpZWRBaGVhZCIsIm9wZXJhdG9yVGVybWluYWxOb2RlcyIsIm9wZXJhdG9yVGVybWluYWxOb2RlIiwiY29udGVudCIsImdldENvbnRlbnQiLCJjb250ZW50Q29udGFpbmVkIiwiQ09OVEFJTkVEIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFZQSxPQTZCQztlQTdCdUJBOztJQXNHUkMsNkJBQTZCO2VBQTdCQTs7O2dFQWhIa0I7eUJBRVI7c0JBQ1M7cUJBQ0c7Ozs7OztBQUV0QyxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMscUJBQzFCQywwQkFBMEJDLElBQUFBLGlCQUFVLEVBQUMsNENBQ3JDQyw2QkFBNkJELElBQUFBLGlCQUFVLEVBQUM7QUFFL0IsU0FBU0wsb0NBQW9DTyxhQUFhLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQzNHLElBQUlDO0lBRUosSUFBTUMsOEJBQThCWCw4QkFBOEJNO0lBRWxFLElBQUlLLDZCQUE2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
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
default: function() {
|
|
13
|
-
return verifyStatementAsDefinedAssertion;
|
|
14
|
-
},
|
|
15
|
-
isStatementDefinedAssertion: function() {
|
|
16
|
-
return isStatementDefinedAssertion;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _term = /*#__PURE__*/ _interop_require_default(require("./term"));
|
|
20
|
-
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../verifier/node/metaLevel"));
|
|
21
|
-
var _array = require("../utilities/array");
|
|
22
|
-
var _constants = require("../constants");
|
|
23
|
-
var _verify = require("../utilities/verify");
|
|
24
|
-
var _query = require("../utilities/query");
|
|
25
|
-
function _interop_require_default(obj) {
|
|
26
|
-
return obj && obj.__esModule ? obj : {
|
|
27
|
-
default: obj
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
var termNodeQuery = (0, _query.nodeQuery)("/statement/term!"), variableNodeQuery = (0, _query.nodeQuery)("/statement/term/variable!"), operatorTerminalNodesQuery = (0, _query.nodesQuery)("/statement/@operator");
|
|
31
|
-
function verifyStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
32
|
-
var statementVerifiedAsDefinedAssertion = false;
|
|
33
|
-
var statementDefinedAssertion = isStatementDefinedAssertion(statementNode);
|
|
34
|
-
if (statementDefinedAssertion) {
|
|
35
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
36
|
-
localContext.trace("Verifying the '".concat(statementString, "' statement as a defined assertion..."), statementNode);
|
|
37
|
-
var definedAssertionFunctions = [
|
|
38
|
-
verifyDerivedStatementAsDefinedAssertion,
|
|
39
|
-
verifyStatedStatementAsDefinedAssertion
|
|
40
|
-
];
|
|
41
|
-
statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some(function(definedAssertionFunction) {
|
|
42
|
-
var statementVerifiedAsDefinedAssertion = definedAssertionFunction(statementNode, assignments, derived, localContext);
|
|
43
|
-
if (statementVerifiedAsDefinedAssertion) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
if (statementVerifiedAsDefinedAssertion) {
|
|
48
|
-
localContext.debug("...verified the '".concat(statementString, "' statement as a defined assertion."), statementNode);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return statementVerifiedAsDefinedAssertion;
|
|
52
|
-
}
|
|
53
|
-
function verifyDerivedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
54
|
-
var derivedStatementVerifiedAsDefeindAssertion = false;
|
|
55
|
-
if (derived) {
|
|
56
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
57
|
-
localContext.trace("Verifying the derived '".concat(statementString, "' statement as a defined assertion..."), statementNode);
|
|
58
|
-
var statementNegated = (0, _verify.isStatementNegated)(statementNode), variableNode = variableNodeQuery(statementNode), termNode = termNodeQuery(statementNode);
|
|
59
|
-
if (false) {
|
|
60
|
-
///
|
|
61
|
-
} else if (variableNode !== null) {
|
|
62
|
-
var variable = localContext.findVariableByVariableNode(variableNode);
|
|
63
|
-
if (variable !== null) {
|
|
64
|
-
var variableDefined = localContext.isVariableDefined(variable);
|
|
65
|
-
if (!statementNegated) {
|
|
66
|
-
if (variableDefined) {
|
|
67
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (statementNegated) {
|
|
71
|
-
if (!variableDefined) {
|
|
72
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
} else if (termNode !== null) {
|
|
77
|
-
var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext, function() {
|
|
78
|
-
var verifiedAhead = true;
|
|
79
|
-
return verifiedAhead;
|
|
80
|
-
});
|
|
81
|
-
if (termVerified) {
|
|
82
|
-
var firstTerm = (0, _array.first)(terms), term = firstTerm, termGrounded = localContext.isTermGrounded(term);
|
|
83
|
-
if (!statementNegated) {
|
|
84
|
-
if (termGrounded) {
|
|
85
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (statementNegated) {
|
|
89
|
-
if (!termGrounded) {
|
|
90
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (derivedStatementVerifiedAsDefeindAssertion) {
|
|
96
|
-
localContext.debug("...verified the derived '".concat(statementString, "' statement as a defined assertion."), statementNode);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return derivedStatementVerifiedAsDefeindAssertion;
|
|
100
|
-
}
|
|
101
|
-
function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
102
|
-
var statedStatementVerifiedAsDefinedAssertion = false;
|
|
103
|
-
if (!derived) {
|
|
104
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
105
|
-
localContext.trace("Verifying the stated '".concat(statementString, "' statement as a defined assertion..."), statementNode);
|
|
106
|
-
var intrinsicLevel = localContext.isIntrinsicLevel();
|
|
107
|
-
if (intrinsicLevel) {
|
|
108
|
-
localContext.debug("The stated '".concat(statementString, "' statement as a defined assertion cannot be verified at intrinsic level."), statementNode);
|
|
109
|
-
} else {
|
|
110
|
-
var nonTerminalNode = statementNode, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNode, localContext, function() {
|
|
111
|
-
var verifiedAhead = true;
|
|
112
|
-
return verifiedAhead;
|
|
113
|
-
});
|
|
114
|
-
statedStatementVerifiedAsDefinedAssertion = nonTerminalNodeVerified; ///
|
|
115
|
-
}
|
|
116
|
-
if (statedStatementVerifiedAsDefinedAssertion) {
|
|
117
|
-
localContext.debug("...verified the stated '".concat(statementString, "' statement as a defined assertion."), statementNode);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return statedStatementVerifiedAsDefinedAssertion;
|
|
121
|
-
}
|
|
122
|
-
function isStatementDefinedAssertion(statementNode) {
|
|
123
|
-
var operatorTerminalNodes = operatorTerminalNodesQuery(statementNode), statementDefinedAssertion = operatorTerminalNodes.some(function(operatorTerminalNode) {
|
|
124
|
-
var content = operatorTerminalNode.getContent(), contentDefined = content === _constants.DEFINED;
|
|
125
|
-
if (contentDefined) {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
return statementDefinedAssertion;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5VGVybSBmcm9tIFwiLi90ZXJtXCI7XG5pbXBvcnQgbWV0YUxldmVsTm9kZVZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci9ub2RlL21ldGFMZXZlbFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IERFRklORUQgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBpc1N0YXRlbWVudE5lZ2F0ZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC90ZXJtIVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC90ZXJtL3ZhcmlhYmxlIVwiKSxcbiAgICAgIG9wZXJhdG9yVGVybWluYWxOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdGF0ZW1lbnQvQG9wZXJhdG9yXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uID0gaXNTdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9ucyA9IFtcbiAgICAgIHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24sXG4gICAgICB2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb25cbiAgICBdO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnVuY3Rpb25zLnNvbWUoKGRlZmluZWRBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnVuY3Rpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbikge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGlmIChkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSBkZXJpdmVkICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROZWdhdGVkID0gaXNTdGF0ZW1lbnROZWdhdGVkKHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZURlZmluZWQgPSBsb2NhbENvbnRleHQuaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUpO1xuXG4gICAgICAgIGlmICghc3RhdGVtZW50TmVnYXRlZCkge1xuICAgICAgICAgIGlmICh2YXJpYWJsZURlZmluZWQpIHtcbiAgICAgICAgICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudE5lZ2F0ZWQpIHtcbiAgICAgICAgICBpZiAoIXZhcmlhYmxlRGVmaW5lZCkge1xuICAgICAgICAgICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgdGVybSA9IGZpcnN0VGVybSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IGxvY2FsQ29udGV4dC5pc1Rlcm1Hcm91bmRlZCh0ZXJtKTtcblxuICAgICAgICBpZiAoIXN0YXRlbWVudE5lZ2F0ZWQpIHtcbiAgICAgICAgICBpZiAodGVybUdyb3VuZGVkKSB7XG4gICAgICAgICAgICBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmVpbmRBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZW1lbnROZWdhdGVkKSB7XG4gICAgICAgICAgaWYgKCF0ZXJtR3JvdW5kZWQpIHtcbiAgICAgICAgICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbikge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgZGVyaXZlZCAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBpZiAoIWRlcml2ZWQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlIHN0YXRlZCAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBsb2NhbENvbnRleHQuaXNJbnRyaW5zaWNMZXZlbCgpO1xuXG4gICAgaWYgKGludHJpbnNpY0xldmVsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24gY2Fubm90IGJlIHZlcmlmaWVkIGF0IGludHJpbnNpYyBsZXZlbC5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG1ldGFMZXZlbE5vZGVWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUpIHtcbiAgY29uc3Qgb3BlcmF0b3JUZXJtaW5hbE5vZGVzID0gb3BlcmF0b3JUZXJtaW5hbE5vZGVzUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIHN0YXRlbWVudERlZmluZWRBc3NlcnRpb24gPSBvcGVyYXRvclRlcm1pbmFsTm9kZXMuc29tZSgob3BlcmF0b3JUZXJtaW5hbE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gb3BlcmF0b3JUZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnREZWZpbmVkID0gKGNvbnRlbnQgPT09IERFRklORUQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRlbnREZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiIsImlzU3RhdGVtZW50RGVmaW5lZEFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm9wZXJhdG9yVGVybWluYWxOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsInN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbiIsInN0YXRlbWVudERlZmluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsImRlZmluZWRBc3NlcnRpb25GdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uIiwidmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uIiwic29tZSIsImRlZmluZWRBc3NlcnRpb25GdW5jdGlvbiIsImRlYnVnIiwiZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uIiwic3RhdGVtZW50TmVnYXRlZCIsImlzU3RhdGVtZW50TmVnYXRlZCIsInZhcmlhYmxlTm9kZSIsInRlcm1Ob2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlRGVmaW5lZCIsImlzVmFyaWFibGVEZWZpbmVkIiwidGVybXMiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwidmVyaWZpZWRBaGVhZCIsImZpcnN0VGVybSIsImZpcnN0IiwidGVybSIsInRlcm1Hcm91bmRlZCIsImlzVGVybUdyb3VuZGVkIiwic3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24iLCJpbnRyaW5zaWNMZXZlbCIsImlzSW50cmluc2ljTGV2ZWwiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsIm1ldGFMZXZlbE5vZGVWZXJpZmllciIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIm9wZXJhdG9yVGVybWluYWxOb2RlcyIsIm9wZXJhdG9yVGVybWluYWxOb2RlIiwiY29udGVudCIsImdldENvbnRlbnQiLCJjb250ZW50RGVmaW5lZCIsIkRFRklORUQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQWNBLE9BNkJDO2VBN0J1QkE7O0lBaUlSQywyQkFBMkI7ZUFBM0JBOzs7MkRBN0lPO2dFQUNXO3FCQUVaO3lCQUNFO3NCQUNXO3FCQUNHOzs7Ozs7QUFFdEMsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHFCQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDLDhCQUM5QkUsNkJBQTZCQyxJQUFBQSxpQkFBVSxFQUFDO0FBRS9CLFNBQVNOLGtDQUFrQ08sYUFBYSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUN6RyxJQUFJQyxzQ0FBc0M7SUFFMUMsSUFBTUMsNEJBQTRCWCw0QkFBNEJNO0lBRTlELElBQUlLLDJCQUEyQjtRQUM3QixJQUFNQyxrQkFBa0JILGFBQWFJLFlBQVksQ0FBQ1A7UUFFbERHLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQkYsaUJBQWdCLDBDQUF3Q047UUFFN0YsSUFBTVMsNEJBQTRCO1lBQ2hDQztZQUNBQztTQUNEO1FBRURQLHND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
|
package/src/metaConsequent.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import LocalContext from "./context/local";
|
|
4
|
-
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
5
|
-
|
|
6
|
-
import { nodeAsString } from "./utilities/string";
|
|
7
|
-
import { statementNodeFromStatementString, metastatementNodeFromMetastatementString } from "./utilities/node";
|
|
8
|
-
|
|
9
|
-
export default class MetaConsequent {
|
|
10
|
-
constructor(metastatementNode, statementNode) {
|
|
11
|
-
this.metastatementNode = metastatementNode;
|
|
12
|
-
this.statementNode = statementNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getMetastatementNode() {
|
|
16
|
-
return this.metastatementNode;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getStatementNode() {
|
|
20
|
-
return this.statementNode;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext) {
|
|
24
|
-
let matchesMetastatementNode = false;
|
|
25
|
-
|
|
26
|
-
if (this.metastatementNode !== null) {
|
|
27
|
-
const fileContextA = fileContext, ///
|
|
28
|
-
nonTerminalNodeA = this.metastatementNode, ///
|
|
29
|
-
nonTerminalNodeB = metastatementNode, ///
|
|
30
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
31
|
-
localContextB = localContext, ///
|
|
32
|
-
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
33
|
-
const verifiedAhead = true;
|
|
34
|
-
|
|
35
|
-
return verifiedAhead;
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
matchesMetastatementNode = nonTerminalNodeVerified; ///
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return matchesMetastatementNode;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
toJSON(tokens) {
|
|
45
|
-
const metastatementString = nodeAsString(this.metastatementNode, tokens),
|
|
46
|
-
statementString = nodeAsString(this.statementNode, tokens),
|
|
47
|
-
metastatement = metastatementString, ///
|
|
48
|
-
statement = statementString, ///
|
|
49
|
-
json = {
|
|
50
|
-
metastatement,
|
|
51
|
-
statement
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
return json;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
static fromStatementNode(statementNode) {
|
|
58
|
-
const metastatementNode = null,
|
|
59
|
-
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
60
|
-
|
|
61
|
-
return metaConsequent;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static fromMetastatementNode(metastatementNode) {
|
|
65
|
-
const statementNode = null,
|
|
66
|
-
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
67
|
-
|
|
68
|
-
return metaConsequent;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
static fromJSONAndFileContext(json, fileContext) {
|
|
72
|
-
const { metastatement, statement } = json,
|
|
73
|
-
metastatementString = metastatement, ///
|
|
74
|
-
statementString = statement, ///
|
|
75
|
-
lexer = fileContext.getLexer(),
|
|
76
|
-
parser = fileContext.getParser(),
|
|
77
|
-
metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
|
|
78
|
-
statementNode = statementNodeFromStatementString(statementString, lexer, parser),
|
|
79
|
-
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
80
|
-
|
|
81
|
-
return metaConsequent;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Label from "./label";
|
|
4
|
-
import MetaConsequent from "./metaConsequent";
|
|
5
|
-
import MetaSupposition from "./metaSupposition";
|
|
6
|
-
import MetastatementForMetavariableSubstitution from "./substitution/metastatementForMetavariable";
|
|
7
|
-
|
|
8
|
-
import { reverse, correlate } from "./utilities/array";
|
|
9
|
-
|
|
10
|
-
export default class MetaLemmaMetatheorem {
|
|
11
|
-
constructor(labels, metaSuppositions, metaConsequent, substitutions, fileContext) {
|
|
12
|
-
this.labels = labels;
|
|
13
|
-
this.metaSuppositions = metaSuppositions;
|
|
14
|
-
this.metaConsequent = metaConsequent;
|
|
15
|
-
this.substitutions = substitutions;
|
|
16
|
-
this.fileContext = fileContext;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getLabels() {
|
|
20
|
-
return this.labels;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getMetaSuppositions() {
|
|
24
|
-
return this.metaSuppositions;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
getMetaConsequent() {
|
|
28
|
-
return this.metaConsequent;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
getSubstitutions() {
|
|
32
|
-
return this.substitutions;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
getFileContext() {
|
|
36
|
-
return this.fileContext;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
matchMetastatement(metastatementNode, localContext) {
|
|
40
|
-
let metastatementNatches = false;
|
|
41
|
-
|
|
42
|
-
const metaproofSteps = localContext.getProofSteps(),
|
|
43
|
-
substitutions = [],
|
|
44
|
-
metaSuppositionsMatch = matchMetaSuppositions(this.metaSuppositions, metaproofSteps, substitutions, this.fileContext, localContext);
|
|
45
|
-
|
|
46
|
-
if (metaSuppositionsMatch) {
|
|
47
|
-
const metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.fileContext, localContext);
|
|
48
|
-
|
|
49
|
-
metastatementNatches = metaConsequentMatches; ///
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return metastatementNatches;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
matchMetavariableNode(metavariableNode) {
|
|
56
|
-
const matchesMetavariableNode = this.labels.some((label) => {
|
|
57
|
-
const labelMatchesMetavariableNode = label.matchMetavariableNode(metavariableNode);
|
|
58
|
-
|
|
59
|
-
if (labelMatchesMetavariableNode) {
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
return matchesMetavariableNode;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
toJSON(tokens) {
|
|
68
|
-
const labelsJSON = this.labels.map((label) => {
|
|
69
|
-
const labelJSON = label.toJSON(tokens);
|
|
70
|
-
|
|
71
|
-
return labelJSON;
|
|
72
|
-
}),
|
|
73
|
-
metaSuppositionsJSON = this.metaSuppositions.map((metaSupposition) => {
|
|
74
|
-
const metaSuppositionJSON = metaSupposition.toJSON(tokens);
|
|
75
|
-
|
|
76
|
-
return metaSuppositionJSON;
|
|
77
|
-
}),
|
|
78
|
-
metaConsequentJSON = this.metaConsequent.toJSON(tokens),
|
|
79
|
-
substitutionsJSON = this.substitutions.map((substitution) => {
|
|
80
|
-
const substitutionJSON = substitution.toJSON();
|
|
81
|
-
|
|
82
|
-
return substitutionJSON;
|
|
83
|
-
}),
|
|
84
|
-
localContextJSON = this.fileContext.toJSON(tokens),
|
|
85
|
-
labels = labelsJSON, ///
|
|
86
|
-
metaSuppositions = metaSuppositionsJSON, ///
|
|
87
|
-
metaConsequent = metaConsequentJSON, ///
|
|
88
|
-
substitutions = substitutionsJSON, ///
|
|
89
|
-
fileContext = localContextJSON, ///
|
|
90
|
-
json = {
|
|
91
|
-
labels,
|
|
92
|
-
metaSuppositions,
|
|
93
|
-
metaConsequent,
|
|
94
|
-
substitutions,
|
|
95
|
-
fileContext
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
return json;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static fromJSONAndFileContext(Class, json, fileContext) {
|
|
102
|
-
let { labels } = json;
|
|
103
|
-
|
|
104
|
-
const labelsJSON = labels; ///
|
|
105
|
-
|
|
106
|
-
labels = labelsJSON.map((labelJSON) => {
|
|
107
|
-
const json = labelJSON, ///
|
|
108
|
-
label = Label.fromJSONAndFileContext(json, fileContext);
|
|
109
|
-
|
|
110
|
-
return label;
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
let { metaSuppositions, metaConsequent, substitutions } = json;
|
|
114
|
-
|
|
115
|
-
const metaSuppositionsJSON = metaSuppositions; ///
|
|
116
|
-
|
|
117
|
-
metaSuppositions = metaSuppositionsJSON.map((metaSuppositionJSON) => {
|
|
118
|
-
const json = metaSuppositionJSON, ///
|
|
119
|
-
metaSupposition = MetaSupposition.fromJSONAndFileContext(json, fileContext);
|
|
120
|
-
|
|
121
|
-
return metaSupposition;
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
const metaConsequentJSON = metaConsequent; ///
|
|
125
|
-
|
|
126
|
-
json = metaConsequentJSON; ///
|
|
127
|
-
|
|
128
|
-
metaConsequent = MetaConsequent.fromJSONAndFileContext(json, fileContext);
|
|
129
|
-
|
|
130
|
-
const substitutionsJSON = substitutions; ///
|
|
131
|
-
|
|
132
|
-
substitutions = substitutionsJSON.map((substitutionJSON) => {
|
|
133
|
-
const json = substitutionJSON, ///
|
|
134
|
-
metastatementForMetavariableSubstitution = MetastatementForMetavariableSubstitution.fromJSONAndFileContext(json, fileContext),
|
|
135
|
-
substitution = metastatementForMetavariableSubstitution; ///
|
|
136
|
-
|
|
137
|
-
return substitution;
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
return new Class(labels, metaSuppositions, metaConsequent, substitutions, fileContext); ///
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
static fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(Class, labels, metaSuppositions, metaConsequent, substitutions, fileContext) { return new Class(labels, metaSuppositions, metaConsequent, substitutions, fileContext); }
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function matchMetaSuppositions(metaSuppositions, metaproofSteps, substitutions, fileContext, localContext) {
|
|
147
|
-
metaSuppositions = reverse(metaSuppositions); ///
|
|
148
|
-
|
|
149
|
-
metaproofSteps = reverse(metaproofSteps); ///
|
|
150
|
-
|
|
151
|
-
const metaSuppositionsMatch = correlate(metaSuppositions, metaproofSteps, (metaSupposition, metaproofStep) => {
|
|
152
|
-
const metaSuppositionMatches = matchMetaSupposition(metaSupposition, metaproofStep, substitutions, fileContext, localContext);
|
|
153
|
-
|
|
154
|
-
if (metaSuppositionMatches) {
|
|
155
|
-
return true;
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
return metaSuppositionsMatch;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
function matchMetaSupposition(metaSupposition, metaproofStep, substitutions, fileContext, localContext) {
|
|
163
|
-
let matchesMetaSupposition = false;
|
|
164
|
-
|
|
165
|
-
const metaSubproofNode = metaproofStep.getMetaSubproofNode(),
|
|
166
|
-
metastatementNode = metaproofStep.getMetastatementNode();
|
|
167
|
-
|
|
168
|
-
if (metaSubproofNode !== null) {
|
|
169
|
-
const metaSuppositionMatchesMetaSubproofNode = metaSupposition.matchMetaSubproofNode(metaSubproofNode, substitutions, fileContext, localContext);
|
|
170
|
-
|
|
171
|
-
matchesMetaSupposition - metaSuppositionMatchesMetaSubproofNode; ///
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (metastatementNode !== null) {
|
|
175
|
-
const metaSuppositionMatchesMetastatementNode = metaSupposition.matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext);
|
|
176
|
-
|
|
177
|
-
matchesMetaSupposition - metaSuppositionMatchesMetastatementNode; ///
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return matchesMetaSupposition;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
function matchMetaConsequent(metaConsequent, metastatementNode, substitutions, fileContext, localContext) {
|
|
184
|
-
const metaConsequentMatchesMetastatementNode = metaConsequent.matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext),
|
|
185
|
-
metaConsequentMatches = metaConsequentMatchesMetastatementNode; ///
|
|
186
|
-
|
|
187
|
-
return metaConsequentMatches;
|
|
188
|
-
}
|