occam-verify-cli 0.0.465 → 0.0.466
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/antecedent.js +214 -0
- package/lib/axiom.js +93 -78
- package/lib/axiomLemmaTheorem.js +190 -0
- package/lib/consequent.js +157 -0
- package/lib/constants.js +9 -1
- package/lib/lemma.js +93 -78
- package/lib/ruleNames.js +4 -4
- package/lib/substitution.js +123 -0
- package/lib/theorem.js +93 -78
- package/lib/utilities/statement.js +45 -0
- package/lib/utilities/string.js +6 -6
- package/lib/verify/antecedentOrAntecedents.js +38 -0
- package/lib/verify/axiom.js +15 -14
- package/lib/verify/conditinalIndicative.js +32 -0
- package/lib/verify/{indicativeConditional.js → conditionalIndicative.js} +10 -10
- package/lib/verify/consequent.js +36 -0
- package/lib/verify/lemma.js +25 -19
- package/lib/verify/metaproof.js +3 -3
- package/lib/verify/rule.js +2 -3
- package/lib/verify/theorem.js +21 -18
- package/lib/verify/unconditionalIndicative.js +28 -0
- package/package.json +1 -1
- package/src/antecedent.js +235 -0
- package/src/axiom.js +5 -95
- package/src/axiomLemmaTheorem.js +190 -0
- package/src/consequent.js +187 -0
- package/src/constants.js +2 -0
- package/src/lemma.js +5 -95
- package/src/ruleNames.js +1 -1
- package/src/substitution.js +130 -0
- package/src/theorem.js +5 -95
- package/src/utilities/statement.js +50 -0
- package/src/utilities/string.js +6 -6
- package/src/verify/antecedentOrAntecedents.js +40 -0
- package/src/verify/axiom.js +21 -16
- package/src/verify/conditinalIndicative.js +31 -0
- package/src/verify/conditionalIndicative.js +29 -0
- package/src/verify/consequent.js +36 -0
- package/src/verify/lemma.js +38 -21
- package/src/verify/metaproof.js +2 -1
- package/src/verify/rule.js +1 -3
- package/src/verify/theorem.js +28 -22
- package/src/verify/unconditionalIndicative.js +24 -0
- package/src/verify/indicativeConditional.js +0 -29
package/lib/verify/rule.js
CHANGED
|
@@ -42,8 +42,7 @@ function verifyRule(ruleNode, fileContext) {
|
|
|
42
42
|
var metaproofNode = metaproofNodeQuery(ruleNode), firstConclusion = (0, _array.first)(conclusions), conclusion = firstConclusion; ///
|
|
43
43
|
var metaproofVerified = true;
|
|
44
44
|
if (metaproofNode !== null) {
|
|
45
|
-
|
|
46
|
-
metaproofVerified = (0, _metaproof.default)(metaproofNode, metastatementNode, metaproofContext);
|
|
45
|
+
metaproofVerified = (0, _metaproof.default)(metaproofNode, conclusion, metaproofContext);
|
|
47
46
|
}
|
|
48
47
|
if (metaproofVerified) {
|
|
49
48
|
var rule = _rule.default.fromLabelsPremisesAndConclusion(labels, premises, conclusion);
|
|
@@ -59,4 +58,4 @@ function verifyRule(ruleNode, fileContext) {
|
|
|
59
58
|
return ruleVerified;
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcnVsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFJ1bGUgZnJvbSBcIi4uL3J1bGVcIjtcbmltcG9ydCB2ZXJpZnlMYWJlbHMgZnJvbSBcIi4uL3ZlcmlmeS9sYWJlbHNcIjtcbmltcG9ydCB2ZXJpZnlNZXRhcHJvb2YgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhcHJvb2ZcIjtcbmltcG9ydCBNZXRhcHJvb2ZDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L21ldGFwcm9vZlwiO1xuaW1wb3J0IHZlcmlmeUNvbmRpdGlvbmFsSW5mZXJlbmNlIGZyb20gXCIuLi92ZXJpZnkvY29uZGl0aW5hbEluZmVyZW5jZVwiO1xuaW1wb3J0IHZlcmlmeVVuY29uZGl0aW9uYWxJbmZlcmVuY2UgZnJvbSBcIi4uL3ZlcmlmeS91bmNvbmRpdGlvbmFsSW5mZXJlbmNlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvcnVsZS9sYWJlbFwiKSxcbiAgICAgIG1ldGFwcm9vZk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9ydWxlL21ldGFwcm9vZiFcIiksXG4gICAgICBjb25kaXRpb25hbEluZmVyZW5jZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9ydWxlL2NvbmRpdGlvbmFsSW5mZXJlbmNlIVwiKSxcbiAgICAgIHVuY29uZGl0aW9uYWxJbmZlcmVuY2VOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcnVsZS91bmNvbmRpdGlvbmFsSW5mZXJlbmNlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UnVsZShydWxlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHJ1bGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGZpbGVDb250ZXh0LmJlZ2luKHJ1bGVOb2RlKTtcblxuICBjb25zdCBsYWJlbE5vZGVzID0gbGFiZWxOb2Rlc1F1ZXJ5KHJ1bGVOb2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKSxcbiAgICAgICAgbWV0YXByb29mQ29udGV4dCA9IE1ldGFwcm9vZkNvbnRleHQuZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KTtcblxuICBmaWxlQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBydWxlLi4uYCk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsTm9kZXMsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IHByZW1pc2VzID0gW10sXG4gICAgICAgICAgY29uY2x1c2lvbnMgPSBbXSxcbiAgICAgICAgICBjb25kaXRpb25hbEluZmVyZW5jZU5vZGUgPSBjb25kaXRpb25hbEluZmVyZW5jZU5vZGVRdWVyeShydWxlTm9kZSksXG4gICAgICAgICAgdW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUgPSB1bmNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZVF1ZXJ5KHJ1bGVOb2RlKTtcblxuICAgIGxldCBjb25kaXRpb25hbEluZmVyZW5jZVZlcmlmaWVkID0gZmFsc2UsXG4gICAgICAgIHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgaWYgKGNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IHZlcmlmeUNvbmRpdGlvbmFsSW5mZXJlbmNlKGNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZSwgcHJlbWlzZXMsIGNvbmNsdXNpb25zLCBtZXRhcHJvb2ZDb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IHZlcmlmeVVuY29uZGl0aW9uYWxJbmZlcmVuY2UodW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUsIGNvbmNsdXNpb25zLCBtZXRhcHJvb2ZDb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCB8fCB1bmNvbmRpdGlvbmFsSW5mZXJlbmNlVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IG1ldGFwcm9vZk5vZGUgPSBtZXRhcHJvb2ZOb2RlUXVlcnkocnVsZU5vZGUpLFxuICAgICAgICAgICAgZmlyc3RDb25jbHVzaW9uID0gZmlyc3QoY29uY2x1c2lvbnMpLFxuICAgICAgICAgICAgY29uY2x1c2lvbiA9IGZpcnN0Q29uY2x1c2lvbjsgLy8vXG5cbiAgICAgIGxldCBtZXRhcHJvb2ZWZXJpZmllZCA9IHRydWU7XG5cbiAgICAgIGlmIChtZXRhcHJvb2ZOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIG1ldGFwcm9vZlZlcmlmaWVkID0gdmVyaWZ5TWV0YXByb29mKG1ldGFwcm9vZk5vZGUsIGNvbmNsdXNpb24sIG1ldGFwcm9vZkNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0YXByb29mVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgcnVsZSA9IFJ1bGUuZnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbihsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5hZGRSdWxlKHJ1bGUpO1xuXG4gICAgICAgIHJ1bGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHJ1bGVWZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBydWxlLmApO1xuICB9XG5cbiAgcnVsZVZlcmlmaWVkID9cbiAgICBmaWxlQ29udGV4dC5jb21wbGV0ZShydWxlTm9kZSkgOlxuICAgICAgZmlsZUNvbnRleHQuY29tcGxldGUocnVsZU5vZGUpO1xuXG4gIHJldHVybiBydWxlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UnVsZSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJtZXRhcHJvb2ZOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJjb25kaXRpb25hbEluZmVyZW5jZU5vZGVRdWVyeSIsInVuY29uZGl0aW9uYWxJbmZlcmVuY2VOb2RlUXVlcnkiLCJydWxlTm9kZSIsImZpbGVDb250ZXh0IiwicnVsZVZlcmlmaWVkIiwiYmVnaW4iLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsIm1ldGFwcm9vZkNvbnRleHQiLCJNZXRhcHJvb2ZDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwiZGVidWciLCJsYWJlbHMiLCJsYWJlbHNWZXJpZmllZCIsInZlcmlmeUxhYmVscyIsInByZW1pc2VzIiwiY29uY2x1c2lvbnMiLCJjb25kaXRpb25hbEluZmVyZW5jZU5vZGUiLCJ1bmNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZSIsImNvbmRpdGlvbmFsSW5mZXJlbmNlVmVyaWZpZWQiLCJ1bmNvbmRpdGlvbmFsSW5mZXJlbmNlVmVyaWZpZWQiLCJ2ZXJpZnlDb25kaXRpb25hbEluZmVyZW5jZSIsInZlcmlmeVVuY29uZGl0aW9uYWxJbmZlcmVuY2UiLCJtZXRhcHJvb2ZOb2RlIiwiZmlyc3RDb25jbHVzaW9uIiwiZmlyc3QiLCJjb25jbHVzaW9uIiwibWV0YXByb29mVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhcHJvb2YiLCJydWxlIiwiUnVsZSIsImZyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24iLCJhZGRSdWxlIiwiaW5mbyIsImNvbXBsZXRlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUF3QkE7Ozt5REFoQlA7MkRBQ1E7OERBQ0c7K0RBQ0M7d0VBQ1U7MkVBQ0U7cUJBRW5CO3NCQUNRO3FCQUNROzs7Ozs7QUFFdEMsSUFBTUMsa0JBQWtCQyxJQUFBQSxpQkFBVSxFQUFDLGdCQUM3QkMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLHFCQUMvQkMsZ0NBQWdDRCxJQUFBQSxnQkFBUyxFQUFDLGdDQUMxQ0Usa0NBQWtDRixJQUFBQSxnQkFBUyxFQUFDO0FBRW5DLFNBQVNKLFdBQVdPLFFBQVEsRUFBRUMsV0FBVyxFQUFFO0lBQ3hELElBQUlDLGVBQWUsS0FBSztJQUV4QkQsWUFBWUUsS0FBSyxDQUFDSDtJQUVsQixJQUFNSSxhQUFhVixnQkFBZ0JNLFdBQzdCSyxlQUFlQyxJQUFBQSxxQkFBYSxFQUFDRixhQUM3QkcsbUJBQW1CQyxtQkFBZ0IsQ0FBQ0MsZUFBZSxDQUFDUjtJQUUxREEsWUFBWVMsS0FBSyxDQUFDLEFBQUMsa0JBQThCLE9BQWJMLGNBQWE7SUFFakQsSUFBTU0sU0FBUyxFQUFFLEVBQ1hDLGlCQUFpQkMsSUFBQUEsZUFBWSxFQUFDVCxZQUFZTyxRQUFRVjtJQUV4RCxJQUFJVyxnQkFBZ0I7UUFDbEIsSUFBTUUsV0FBVyxFQUFFLEVBQ2JDLGNBQWMsRUFBRSxFQUNoQkMsMkJBQTJCbEIsOEJBQThCRSxXQUN6RGlCLDZCQUE2QmxCLGdDQUFnQ0M7UUFFbkUsSUFBSWtCLCtCQUErQixLQUFLLEVBQ3BDQyxpQ0FBaUMsS0FBSztRQUUxQyxJQUFJSCw2QkFBNkIsSUFBSSxFQUFFO1lBQ3JDRSwrQkFBK0JFLElBQUFBLDRCQUEwQixFQUFDSiwwQkFBMEJGLFVBQVVDLGFBQWFSO1FBQzdHLENBQUM7UUFFRCxJQUFJVSwrQkFBK0IsSUFBSSxFQUFFO1lBQ3ZDRSxpQ0FBaUNFLElBQUFBLCtCQUE0QixFQUFDSiw0QkFBNEJGLGFBQWFSO1FBQ3pHLENBQUM7UUFFRCxJQUFJVyxnQ0FBZ0NDLGdDQUFnQztZQUNsRSxJQUFNRyxnQkFBZ0IxQixtQkFBbUJJLFdBQ25DdUIsa0JBQWtCQyxJQUFBQSxZQUFLLEVBQUNULGNBQ3hCVSxhQUFhRixpQkFBaUIsR0FBRztZQUV2QyxJQUFJRyxvQkFBb0IsSUFBSTtZQUU1QixJQUFJSixrQkFBa0IsSUFBSSxFQUFFO2dCQUMxQkksb0JBQW9CQyxJQUFBQSxrQkFBZSxFQUFDTCxlQUFlRyxZQUFZbEI7WUFDakUsQ0FBQztZQUVELElBQUltQixtQkFBbUI7Z0JBQ3JCLElBQU1FLE9BQU9DLGFBQUksQ0FBQ0MsK0JBQStCLENBQUNuQixRQUFRRyxVQUFVVztnQkFFcEV4QixZQUFZOEIsT0FBTyxDQUFDSDtnQkFFcEIxQixlQUFlLElBQUk7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSUEsY0FBYztRQUNoQkQsWUFBWStCLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiM0IsY0FBYTtJQUNqRCxDQUFDO0lBRURILGVBQ0VELFlBQVlnQyxRQUFRLENBQUNqQyxZQUNuQkMsWUFBWWdDLFFBQVEsQ0FBQ2pDLFNBQVM7SUFFbEMsT0FBT0U7QUFDVCJ9
|
package/lib/verify/theorem.js
CHANGED
|
@@ -9,11 +9,12 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _theorem = /*#__PURE__*/ _interopRequireDefault(require("../theorem"));
|
|
12
|
-
var _proof = /*#__PURE__*/ _interopRequireDefault(require("
|
|
13
|
-
var _labels = /*#__PURE__*/ _interopRequireDefault(require("../verify/labels"));
|
|
12
|
+
var _proof = /*#__PURE__*/ _interopRequireDefault(require("../verify/proof"));
|
|
14
13
|
var _proof1 = /*#__PURE__*/ _interopRequireDefault(require("../context/proof"));
|
|
15
|
-
var
|
|
16
|
-
var
|
|
14
|
+
var _labels = /*#__PURE__*/ _interopRequireDefault(require("../verify/labels"));
|
|
15
|
+
var _conditinalIndicative = /*#__PURE__*/ _interopRequireDefault(require("../verify/conditinalIndicative"));
|
|
16
|
+
var _unconditionalIndicative = /*#__PURE__*/ _interopRequireDefault(require("../verify/unconditionalIndicative"));
|
|
17
|
+
var _array = require("../utilities/array");
|
|
17
18
|
var _string = require("../utilities/string");
|
|
18
19
|
var _query = require("../utilities/query");
|
|
19
20
|
function _interopRequireDefault(obj) {
|
|
@@ -21,7 +22,7 @@ function _interopRequireDefault(obj) {
|
|
|
21
22
|
default: obj
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
|
-
var proofNodeQuery = (0, _query.nodeQuery)("/theorem/proof"), labelNodesQuery = (0, _query.nodesQuery)("/theorem/label"),
|
|
25
|
+
var proofNodeQuery = (0, _query.nodeQuery)("/theorem/proof!"), labelNodesQuery = (0, _query.nodesQuery)("/theorem/label"), conditionalIndicativeNodeQuery = (0, _query.nodeQuery)("/theorem/conditionalIndicative!"), unconditionalIndicativeNodeQuery = (0, _query.nodeQuery)("/theorem/unconditionalIndicative!");
|
|
25
26
|
function verifyTheorem(theoremNode, fileContext) {
|
|
26
27
|
var theoremVerified = false;
|
|
27
28
|
fileContext.begin(theoremNode);
|
|
@@ -29,26 +30,28 @@ function verifyTheorem(theoremNode, fileContext) {
|
|
|
29
30
|
fileContext.debug("Verifying the '".concat(labelsString, "' theorem..."));
|
|
30
31
|
var labels = [], labelsVerified = (0, _labels.default)(labelNodes, labels, fileContext);
|
|
31
32
|
if (labelsVerified) {
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
if (
|
|
35
|
-
|
|
33
|
+
var antecedents = [], consequents = [], conditionalIndicativeNode = conditionalIndicativeNodeQuery(theoremNode), unconditionalIndicativeNode = unconditionalIndicativeNodeQuery(theoremNode);
|
|
34
|
+
var conditionalIndicativeVerified = false, unconditionalIndicativeVerified = false;
|
|
35
|
+
if (conditionalIndicativeNode !== null) {
|
|
36
|
+
conditionalIndicativeVerified = (0, _conditinalIndicative.default)(conditionalIndicativeNode, antecedents, consequents, proofContext);
|
|
36
37
|
}
|
|
37
|
-
if (
|
|
38
|
-
|
|
38
|
+
if (unconditionalIndicativeNode !== null) {
|
|
39
|
+
unconditionalIndicativeVerified = (0, _unconditionalIndicative.default)(unconditionalIndicativeNode, consequents, proofContext);
|
|
39
40
|
}
|
|
40
|
-
if (
|
|
41
|
-
var proofNode = proofNodeQuery(theoremNode),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
if (conditionalIndicativeVerified || unconditionalIndicativeVerified) {
|
|
42
|
+
var proofNode = proofNodeQuery(theoremNode), firstConsequent = (0, _array.first)(consequents), consequent = firstConsequent, proofVerified = (0, _proof.default)(proofNode, consequent, proofContext);
|
|
43
|
+
if (proofVerified) {
|
|
44
|
+
var theorem = _theorem.default.fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent);
|
|
45
|
+
fileContext.addTheorem(theorem);
|
|
46
|
+
theoremVerified = true;
|
|
47
|
+
}
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
50
|
if (theoremVerified) {
|
|
48
51
|
fileContext.info("Verified the '".concat(labelsString, "' theorem."));
|
|
49
52
|
}
|
|
50
|
-
theoremVerified ? fileContext.complete(theoremNode) : fileContext.
|
|
53
|
+
theoremVerified ? fileContext.complete(theoremNode) : fileContext.complete(theoremNode);
|
|
51
54
|
return theoremVerified;
|
|
52
55
|
}
|
|
53
56
|
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4uL3RoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlQcm9vZiBmcm9tIFwiLi4vdmVyaWZ5L3Byb29mXCI7XG5pbXBvcnQgUHJvb2ZDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3Byb29mXCI7XG5pbXBvcnQgdmVyaWZ5TGFiZWxzIGZyb20gXCIuLi92ZXJpZnkvbGFiZWxzXCI7XG5pbXBvcnQgdmVyaWZ5Q29uZGl0aW9uYWxJbmRpY2F0aXZlIGZyb20gXCIuLi92ZXJpZnkvY29uZGl0aW5hbEluZGljYXRpdmVcIjtcbmltcG9ydCB2ZXJpZnlVbmNvbmRpdGlvbmFsSW5kaWNhdGl2ZSBmcm9tIFwiLi4vdmVyaWZ5L3VuY29uZGl0aW9uYWxJbmRpY2F0aXZlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHByb29mTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW0vcHJvb2YhXCIpLFxuICAgICAgbGFiZWxOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi90aGVvcmVtL2xhYmVsXCIpLFxuICAgICAgY29uZGl0aW9uYWxJbmRpY2F0aXZlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW0vY29uZGl0aW9uYWxJbmRpY2F0aXZlIVwiKSxcbiAgICAgIHVuY29uZGl0aW9uYWxJbmRpY2F0aXZlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW0vdW5jb25kaXRpb25hbEluZGljYXRpdmUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUaGVvcmVtKHRoZW9yZW1Ob2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdGhlb3JlbVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgZmlsZUNvbnRleHQuYmVnaW4odGhlb3JlbU5vZGUpO1xuXG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBub2Rlc0FzU3RyaW5nKGxhYmVsTm9kZXMpLFxuICAgICAgICBwcm9vZkNvbnRleHQgPSBQcm9vZkNvbnRleHQuZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KTtcblxuICBmaWxlQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyB0aGVvcmVtLi4uYCk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsTm9kZXMsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IGFudGVjZWRlbnRzID0gW10sXG4gICAgICAgICAgY29uc2VxdWVudHMgPSBbXSxcbiAgICAgICAgICBjb25kaXRpb25hbEluZGljYXRpdmVOb2RlID0gY29uZGl0aW9uYWxJbmRpY2F0aXZlTm9kZVF1ZXJ5KHRoZW9yZW1Ob2RlKSxcbiAgICAgICAgICB1bmNvbmRpdGlvbmFsSW5kaWNhdGl2ZU5vZGUgPSB1bmNvbmRpdGlvbmFsSW5kaWNhdGl2ZU5vZGVRdWVyeSh0aGVvcmVtTm9kZSk7XG5cbiAgICBsZXQgY29uZGl0aW9uYWxJbmRpY2F0aXZlVmVyaWZpZWQgPSBmYWxzZSxcbiAgICAgICAgdW5jb25kaXRpb25hbEluZGljYXRpdmVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgaWYgKGNvbmRpdGlvbmFsSW5kaWNhdGl2ZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbmRpdGlvbmFsSW5kaWNhdGl2ZVZlcmlmaWVkID0gdmVyaWZ5Q29uZGl0aW9uYWxJbmRpY2F0aXZlKGNvbmRpdGlvbmFsSW5kaWNhdGl2ZU5vZGUsIGFudGVjZWRlbnRzLCBjb25zZXF1ZW50cywgcHJvb2ZDb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodW5jb25kaXRpb25hbEluZGljYXRpdmVOb2RlICE9PSBudWxsKSB7XG4gICAgICB1bmNvbmRpdGlvbmFsSW5kaWNhdGl2ZVZlcmlmaWVkID0gdmVyaWZ5VW5jb25kaXRpb25hbEluZGljYXRpdmUodW5jb25kaXRpb25hbEluZGljYXRpdmVOb2RlLCBjb25zZXF1ZW50cywgcHJvb2ZDb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZGl0aW9uYWxJbmRpY2F0aXZlVmVyaWZpZWQgfHwgdW5jb25kaXRpb25hbEluZGljYXRpdmVWZXJpZmllZCkge1xuICAgICAgY29uc3QgcHJvb2ZOb2RlID0gcHJvb2ZOb2RlUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICAgICAgZmlyc3RDb25zZXF1ZW50ID0gZmlyc3QoY29uc2VxdWVudHMpLFxuICAgICAgICAgICAgY29uc2VxdWVudCA9IGZpcnN0Q29uc2VxdWVudCwgLy8vXG4gICAgICAgICAgICBwcm9vZlZlcmlmaWVkID0gdmVyaWZ5UHJvb2YocHJvb2ZOb2RlLCBjb25zZXF1ZW50LCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICBpZiAocHJvb2ZWZXJpZmllZCkge1xuICAgICAgICBjb25zdCB0aGVvcmVtID0gVGhlb3JlbS5mcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50KGxhYmVscywgYW50ZWNlZGVudHMsIGNvbnNlcXVlbnQpO1xuXG4gICAgICAgIGZpbGVDb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG5cbiAgICAgICAgdGhlb3JlbVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodGhlb3JlbVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke2xhYmVsc1N0cmluZ30nIHRoZW9yZW0uYCk7XG4gIH1cblxuICB0aGVvcmVtVmVyaWZpZWQgP1xuICAgIGZpbGVDb250ZXh0LmNvbXBsZXRlKHRoZW9yZW1Ob2RlKSA6XG4gICAgICBmaWxlQ29udGV4dC5jb21wbGV0ZSh0aGVvcmVtTm9kZSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUaGVvcmVtIiwicHJvb2ZOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJsYWJlbE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwiY29uZGl0aW9uYWxJbmRpY2F0aXZlTm9kZVF1ZXJ5IiwidW5jb25kaXRpb25hbEluZGljYXRpdmVOb2RlUXVlcnkiLCJ0aGVvcmVtTm9kZSIsImZpbGVDb250ZXh0IiwidGhlb3JlbVZlcmlmaWVkIiwiYmVnaW4iLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsInByb29mQ29udGV4dCIsIlByb29mQ29udGV4dCIsImZyb21GaWxlQ29udGV4dCIsImRlYnVnIiwibGFiZWxzIiwibGFiZWxzVmVyaWZpZWQiLCJ2ZXJpZnlMYWJlbHMiLCJhbnRlY2VkZW50cyIsImNvbnNlcXVlbnRzIiwiY29uZGl0aW9uYWxJbmRpY2F0aXZlTm9kZSIsInVuY29uZGl0aW9uYWxJbmRpY2F0aXZlTm9kZSIsImNvbmRpdGlvbmFsSW5kaWNhdGl2ZVZlcmlmaWVkIiwidW5jb25kaXRpb25hbEluZGljYXRpdmVWZXJpZmllZCIsInZlcmlmeUNvbmRpdGlvbmFsSW5kaWNhdGl2ZSIsInZlcmlmeVVuY29uZGl0aW9uYWxJbmRpY2F0aXZlIiwicHJvb2ZOb2RlIiwiZmlyc3RDb25zZXF1ZW50IiwiZmlyc3QiLCJjb25zZXF1ZW50IiwicHJvb2ZWZXJpZmllZCIsInZlcmlmeVByb29mIiwidGhlb3JlbSIsIlRoZW9yZW0iLCJmcm9tTGFiZWxzQW50ZWNlZGVudHNBbmRDb25zZXF1ZW50IiwiYWRkVGhlb3JlbSIsImluZm8iLCJjb21wbGV0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBd0JBOzs7NERBaEJKOzBEQUNJOzJEQUNDOzJEQUNBO3lFQUNlOzRFQUNFO3FCQUVwQjtzQkFDUTtxQkFDUTs7Ozs7O0FBRXRDLElBQU1DLGlCQUFpQkMsSUFBQUEsZ0JBQVMsRUFBQyxvQkFDM0JDLGtCQUFrQkMsSUFBQUEsaUJBQVUsRUFBQyxtQkFDN0JDLGlDQUFpQ0gsSUFBQUEsZ0JBQVMsRUFBQyxvQ0FDM0NJLG1DQUFtQ0osSUFBQUEsZ0JBQVMsRUFBQztBQUVwQyxTQUFTRixjQUFjTyxXQUFXLEVBQUVDLFdBQVcsRUFBRTtJQUM5RCxJQUFJQyxrQkFBa0IsS0FBSztJQUUzQkQsWUFBWUUsS0FBSyxDQUFDSDtJQUVsQixJQUFNSSxhQUFhUixnQkFBZ0JJLGNBQzdCSyxlQUFlQyxJQUFBQSxxQkFBYSxFQUFDRixhQUM3QkcsZUFBZUMsZUFBWSxDQUFDQyxlQUFlLENBQUNSO0lBRWxEQSxZQUFZUyxLQUFLLENBQUMsQUFBQyxrQkFBOEIsT0FBYkwsY0FBYTtJQUVqRCxJQUFNTSxTQUFTLEVBQUUsRUFDWEMsaUJBQWlCQyxJQUFBQSxlQUFZLEVBQUNULFlBQVlPLFFBQVFWO0lBRXhELElBQUlXLGdCQUFnQjtRQUNsQixJQUFNRSxjQUFjLEVBQUUsRUFDaEJDLGNBQWMsRUFBRSxFQUNoQkMsNEJBQTRCbEIsK0JBQStCRSxjQUMzRGlCLDhCQUE4QmxCLGlDQUFpQ0M7UUFFckUsSUFBSWtCLGdDQUFnQyxLQUFLLEVBQ3JDQyxrQ0FBa0MsS0FBSztRQUUzQyxJQUFJSCw4QkFBOEIsSUFBSSxFQUFFO1lBQ3RDRSxnQ0FBZ0NFLElBQUFBLDZCQUEyQixFQUFDSiwyQkFBMkJGLGFBQWFDLGFBQWFSO1FBQ25ILENBQUM7UUFFRCxJQUFJVSxnQ0FBZ0MsSUFBSSxFQUFFO1lBQ3hDRSxrQ0FBa0NFLElBQUFBLGdDQUE2QixFQUFDSiw2QkFBNkJGLGFBQWFSO1FBQzVHLENBQUM7UUFFRCxJQUFJVyxpQ0FBaUNDLGlDQUFpQztZQUNwRSxJQUFNRyxZQUFZNUIsZUFBZU0sY0FDM0J1QixrQkFBa0JDLElBQUFBLFlBQUssRUFBQ1QsY0FDeEJVLGFBQWFGLGlCQUNiRyxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ0wsV0FBV0csWUFBWWxCO1lBRXpELElBQUltQixlQUFlO2dCQUNqQixJQUFNRSxVQUFVQyxnQkFBTyxDQUFDQyxrQ0FBa0MsQ0FBQ25CLFFBQVFHLGFBQWFXO2dCQUVoRnhCLFlBQVk4QixVQUFVLENBQUNIO2dCQUV2QjFCLGtCQUFrQixJQUFJO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLGlCQUFpQjtRQUNuQkQsWUFBWStCLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiM0IsY0FBYTtJQUNqRCxDQUFDO0lBRURILGtCQUNFRCxZQUFZZ0MsUUFBUSxDQUFDakMsZUFDbkJDLFlBQVlnQyxRQUFRLENBQUNqQyxZQUFZO0lBRXJDLE9BQU9FO0FBQ1QifQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return verifyUnconditionalIndicative;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _consequent = /*#__PURE__*/ _interopRequireDefault(require("../verify/consequent"));
|
|
12
|
+
var _query = require("../utilities/query");
|
|
13
|
+
function _interopRequireDefault(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
var consequentNodeQuery = (0, _query.nodeQuery)("/unconditionalIndicative/consequent!");
|
|
19
|
+
function verifyUnconditionalIndicative(conditionalIndicativeNode, consequents, proofContext) {
|
|
20
|
+
var unconditionalIndicativeVerified;
|
|
21
|
+
proofContext.begin(conditionalIndicativeNode);
|
|
22
|
+
var consequentNode = consequentNodeQuery(conditionalIndicativeNode), consequentVerified = (0, _consequent.default)(consequentNode, consequents, proofContext);
|
|
23
|
+
unconditionalIndicativeVerified = consequentVerified; ///
|
|
24
|
+
unconditionalIndicativeVerified ? proofContext.complete(conditionalIndicativeNode) : proofContext.halt(conditionalIndicativeNode);
|
|
25
|
+
return unconditionalIndicativeVerified;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdW5jb25kaXRpb25hbEluZGljYXRpdmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlDb25zZXF1ZW50IGZyb20gXCIuLi92ZXJpZnkvY29uc2VxdWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGNvbnNlcXVlbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5jb25kaXRpb25hbEluZGljYXRpdmUvY29uc2VxdWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVuY29uZGl0aW9uYWxJbmRpY2F0aXZlKGNvbmRpdGlvbmFsSW5kaWNhdGl2ZU5vZGUsIGNvbnNlcXVlbnRzLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHVuY29uZGl0aW9uYWxJbmRpY2F0aXZlVmVyaWZpZWQ7XG5cbiAgcHJvb2ZDb250ZXh0LmJlZ2luKGNvbmRpdGlvbmFsSW5kaWNhdGl2ZU5vZGUpO1xuXG4gIGNvbnN0IGNvbnNlcXVlbnROb2RlID0gY29uc2VxdWVudE5vZGVRdWVyeShjb25kaXRpb25hbEluZGljYXRpdmVOb2RlKSxcbiAgICAgICAgY29uc2VxdWVudFZlcmlmaWVkID0gdmVyaWZ5Q29uc2VxdWVudChjb25zZXF1ZW50Tm9kZSwgY29uc2VxdWVudHMsIHByb29mQ29udGV4dCk7XG5cbiAgdW5jb25kaXRpb25hbEluZGljYXRpdmVWZXJpZmllZCA9IGNvbnNlcXVlbnRWZXJpZmllZDsgIC8vL1xuXG4gIHVuY29uZGl0aW9uYWxJbmRpY2F0aXZlVmVyaWZpZWQgP1xuICAgIHByb29mQ29udGV4dC5jb21wbGV0ZShjb25kaXRpb25hbEluZGljYXRpdmVOb2RlKSA6XG4gICAgICBwcm9vZkNvbnRleHQuaGFsdChjb25kaXRpb25hbEluZGljYXRpdmVOb2RlKTtcblxuICByZXR1cm4gdW5jb25kaXRpb25hbEluZGljYXRpdmVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbmNvbmRpdGlvbmFsSW5kaWNhdGl2ZSIsImNvbnNlcXVlbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJjb25kaXRpb25hbEluZGljYXRpdmVOb2RlIiwiY29uc2VxdWVudHMiLCJwcm9vZkNvbnRleHQiLCJ1bmNvbmRpdGlvbmFsSW5kaWNhdGl2ZVZlcmlmaWVkIiwiYmVnaW4iLCJjb25zZXF1ZW50Tm9kZSIsImNvbnNlcXVlbnRWZXJpZmllZCIsInZlcmlmeUNvbnNlcXVlbnQiLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBd0JBOzs7K0RBTks7cUJBRUg7Ozs7OztBQUUxQixJQUFNQyxzQkFBc0JDLElBQUFBLGdCQUFTLEVBQUM7QUFFdkIsU0FBU0YsOEJBQThCRyx5QkFBeUIsRUFBRUMsV0FBVyxFQUFFQyxZQUFZLEVBQUU7SUFDMUcsSUFBSUM7SUFFSkQsYUFBYUUsS0FBSyxDQUFDSjtJQUVuQixJQUFNSyxpQkFBaUJQLG9CQUFvQkUsNEJBQ3JDTSxxQkFBcUJDLElBQUFBLG1CQUFnQixFQUFDRixnQkFBZ0JKLGFBQWFDO0lBRXpFQyxrQ0FBa0NHLG9CQUFxQixHQUFHO0lBRTFESCxrQ0FDRUQsYUFBYU0sUUFBUSxDQUFDUiw2QkFDcEJFLGFBQWFPLElBQUksQ0FBQ1QsMEJBQTBCO0lBRWhELE9BQU9HO0FBQ1QifQ==
|
package/package.json
CHANGED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Substitution from "./substitution";
|
|
4
|
+
|
|
5
|
+
import { first } from "./utilities/array";
|
|
6
|
+
import { nodeAsString } from "./utilities/string";
|
|
7
|
+
import { nodeQuery, nodesQuery } from "./utilities/query";
|
|
8
|
+
import { variableNameFromVariableNode } from "./utilities/query";
|
|
9
|
+
import { statementNodeFromStatementString } from "./utilities/string";
|
|
10
|
+
import { VARIABLE_RULE_NAME, STATEMENT_RULE_NAME } from "./ruleNames";
|
|
11
|
+
|
|
12
|
+
const statementNodesQuery = nodesQuery("/subproofAssertion/statement"),
|
|
13
|
+
subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
|
|
14
|
+
unqualifiedStatementStatementNodesQuery = nodesQuery("/subproof/unqualifiedStatement/statement!"),
|
|
15
|
+
qualifiedOrUnqualifiedStatementStatementNodeQuery = nodeQuery("/subproof/metaDerivation|abridgedMetaDerivation/qualifiedStatement|unqualifiedStatement[-1]/statement!");
|
|
16
|
+
|
|
17
|
+
export default class Antecedent {
|
|
18
|
+
constructor(statementNode) {
|
|
19
|
+
this.statementNode = statementNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getStatementNode() {
|
|
23
|
+
return this.statementNode;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
matchSubproofNode(subproofNode, substitutions) {
|
|
27
|
+
let subproofNodeMatches = false;
|
|
28
|
+
|
|
29
|
+
const subproofAssertionNode = subproofAssertionNodeQuery(this.statementNode);
|
|
30
|
+
|
|
31
|
+
if (subproofAssertionNode !== null) {
|
|
32
|
+
const subproofAssertionStatementNodes = statementNodesQuery(subproofAssertionNode),
|
|
33
|
+
unqualifiedStatementStatementNodes = unqualifiedStatementStatementNodesQuery(subproofNode),
|
|
34
|
+
qualifiedOrUnqualifiedStatementStatementNode = qualifiedOrUnqualifiedStatementStatementNodeQuery(subproofNode),
|
|
35
|
+
statementNodes = [
|
|
36
|
+
...unqualifiedStatementStatementNodes,
|
|
37
|
+
qualifiedOrUnqualifiedStatementStatementNode
|
|
38
|
+
],
|
|
39
|
+
statementNodesLength = statementNodes.length,
|
|
40
|
+
subproofAssertionStatementNodesLength = subproofAssertionStatementNodes.length;
|
|
41
|
+
|
|
42
|
+
if (statementNodesLength === subproofAssertionStatementNodesLength) {
|
|
43
|
+
subproofNodeMatches = subproofAssertionStatementNodes.every((subproofAssertionStatementNode, index) => {
|
|
44
|
+
const statementNode = statementNodes[index],
|
|
45
|
+
nonTerminalNode = statementNode, ///
|
|
46
|
+
antecedentNonTerminalNode = subproofAssertionStatementNode, ///
|
|
47
|
+
antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions);
|
|
48
|
+
|
|
49
|
+
if (antecedentNonTerminalNodeMatches) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return subproofNodeMatches;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
matchStatementNode(statementNode, substitutions) {
|
|
60
|
+
const nonTerminalNode = statementNode, ///
|
|
61
|
+
antecedentNonTerminalNode = this.statementNode, ///
|
|
62
|
+
antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions),
|
|
63
|
+
statementNodeMatches = antecedentNonTerminalNodeMatches; ///
|
|
64
|
+
|
|
65
|
+
return statementNodeMatches;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
toJSON() {
|
|
69
|
+
const statementString = nodeAsString(this.statementNode),
|
|
70
|
+
statement = statementString, ///
|
|
71
|
+
json = {
|
|
72
|
+
statement
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return json;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static fromJSON(json, releaseContext) {
|
|
79
|
+
const { statement } = json,
|
|
80
|
+
statementString = statement, ///
|
|
81
|
+
statementNode = statementNodeFromStatementString(statementString, releaseContext),
|
|
82
|
+
antecedent = new Antecedent(statementNode);
|
|
83
|
+
|
|
84
|
+
return antecedent;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static fromStatementNode(statementNode) {
|
|
88
|
+
const antecedent = new Antecedent(statementNode);
|
|
89
|
+
|
|
90
|
+
return antecedent;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function matchAntecedentNode(antecedentNode, node, substitutions) {
|
|
95
|
+
let antecedentNodeMatches = false;
|
|
96
|
+
|
|
97
|
+
const nodeTerminalNode = node.isTerminalNode(),
|
|
98
|
+
ruleNodeTerminalNode = antecedentNode.isTerminalNode();
|
|
99
|
+
|
|
100
|
+
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
101
|
+
if (nodeTerminalNode) {
|
|
102
|
+
const terminalNode = node, ///
|
|
103
|
+
antecedentTerminalNode = antecedentNode, ///
|
|
104
|
+
antecedentTerminalNodeMatches = matchAntecedentTerminalNode(antecedentTerminalNode, terminalNode, substitutions);
|
|
105
|
+
|
|
106
|
+
antecedentNodeMatches = antecedentTerminalNodeMatches; ///
|
|
107
|
+
} else {
|
|
108
|
+
const nonTerminalNode = node, ///
|
|
109
|
+
antecedentNonTerminalNode = antecedentNode, ///
|
|
110
|
+
antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions);
|
|
111
|
+
|
|
112
|
+
antecedentNodeMatches = antecedentNonTerminalNodeMatches; ///
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return antecedentNodeMatches;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function matchAntecedentNodes(antecedentNodes, nodes, substitutions) {
|
|
120
|
+
let antecedentNodesMatches = false;
|
|
121
|
+
|
|
122
|
+
const nodesLength = nodes.length,
|
|
123
|
+
antecedentNodesLength = antecedentNodes.length;
|
|
124
|
+
|
|
125
|
+
if (nodesLength === antecedentNodesLength) {
|
|
126
|
+
antecedentNodesMatches = nodes.every((node, index) => {
|
|
127
|
+
const antecedentNode = antecedentNodes[index],
|
|
128
|
+
antecedentNodeMatches = matchAntecedentNode(antecedentNode, node, substitutions);
|
|
129
|
+
|
|
130
|
+
if (antecedentNodeMatches) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return antecedentNodesMatches;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function matchAntecedentVariable(antecedentVariableNode, nodes, substitutions) {
|
|
140
|
+
let antecedentVariableMatches;
|
|
141
|
+
|
|
142
|
+
const antecedentVariableName = variableNameFromVariableNode(antecedentVariableNode),
|
|
143
|
+
substitution = substitutions.find((substitution) => {
|
|
144
|
+
const variableName = substitution.getVariableName();
|
|
145
|
+
|
|
146
|
+
if (variableName === antecedentVariableName) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
}) || null;
|
|
150
|
+
|
|
151
|
+
if (substitution !== null) {
|
|
152
|
+
const substitutionNodesMatch = substitution.matchNodes(nodes);
|
|
153
|
+
|
|
154
|
+
antecedentVariableMatches = substitutionNodesMatch; ///
|
|
155
|
+
} else {
|
|
156
|
+
const variableName = antecedentVariableName, ///
|
|
157
|
+
substitution = Substitution.fromVariableNameAndNodes(variableName, nodes);
|
|
158
|
+
|
|
159
|
+
substitutions.push(substitution);
|
|
160
|
+
|
|
161
|
+
antecedentVariableMatches = true;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return antecedentVariableMatches;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function matchAntecedentTerminalNode(antecedentTerminalNode, terminalNode, substitutions) {
|
|
168
|
+
const matches = antecedentTerminalNode.match(terminalNode),
|
|
169
|
+
antecedentTerminalNodeMatches = matches;
|
|
170
|
+
|
|
171
|
+
return antecedentTerminalNodeMatches;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions) {
|
|
175
|
+
let antecedentNonTerminalNodeMatches = false;
|
|
176
|
+
|
|
177
|
+
const ruleName = nonTerminalNode.getRuleName(),
|
|
178
|
+
antecedentRuleName = antecedentNonTerminalNode.getRuleName(); ///
|
|
179
|
+
|
|
180
|
+
if (ruleName === antecedentRuleName) {
|
|
181
|
+
const childNodes = nonTerminalNode.getChildNodes(),
|
|
182
|
+
antecedentChildNodes = antecedentNonTerminalNode.getChildNodes(),
|
|
183
|
+
nodes = childNodes, ///
|
|
184
|
+
antecedentNodes = antecedentChildNodes, ///
|
|
185
|
+
antecedentChildNodesMatches = matchAntecedentNodes(antecedentNodes, nodes, substitutions);
|
|
186
|
+
|
|
187
|
+
antecedentNonTerminalNodeMatches = antecedentChildNodesMatches; ///
|
|
188
|
+
|
|
189
|
+
if (!antecedentNonTerminalNodeMatches) {
|
|
190
|
+
const ruleNameStatementRuleName = (ruleName === STATEMENT_RULE_NAME);
|
|
191
|
+
|
|
192
|
+
if (ruleNameStatementRuleName) {
|
|
193
|
+
const statementNode = nonTerminalNode, ///
|
|
194
|
+
antecedentStatementNode = antecedentNonTerminalNode, ///
|
|
195
|
+
antecedentStatementNodeMatches = matchAntecedentStatementNode(antecedentStatementNode, statementNode, substitutions);
|
|
196
|
+
|
|
197
|
+
antecedentNonTerminalNodeMatches = antecedentStatementNodeMatches; ///
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return antecedentNonTerminalNodeMatches;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function matchAntecedentStatementNode(antecedentStatementNode, statementNode, substitutions) {
|
|
206
|
+
let antecedentStatementNodeMatches = false;
|
|
207
|
+
|
|
208
|
+
const antecedentNonTerminalNode = antecedentStatementNode, ///
|
|
209
|
+
antecedentChildNodes = antecedentNonTerminalNode.getChildNodes(),
|
|
210
|
+
antecedentChildNodesLength = antecedentChildNodes.length;
|
|
211
|
+
|
|
212
|
+
if (antecedentChildNodesLength === 1) {
|
|
213
|
+
const firstAntecedentChildNode = first(antecedentChildNodes),
|
|
214
|
+
antecedentChildNode = firstAntecedentChildNode, ///
|
|
215
|
+
antecedentChildNodeNonTerminalNode = antecedentChildNode.isNonTerminalNode();
|
|
216
|
+
|
|
217
|
+
if (antecedentChildNodeNonTerminalNode) {
|
|
218
|
+
const antecedentNonTerminalChildNode = antecedentChildNode, ///
|
|
219
|
+
antecedentNonTerminalChildNodeRuleName = antecedentNonTerminalChildNode.getRuleName(),
|
|
220
|
+
antecedentNonTerminalChildNodeRuleNameVariableRuleName = (antecedentNonTerminalChildNodeRuleName === VARIABLE_RULE_NAME);
|
|
221
|
+
|
|
222
|
+
if (antecedentNonTerminalChildNodeRuleNameVariableRuleName) {
|
|
223
|
+
const antecedentVariableNode = antecedentNonTerminalChildNode, ///
|
|
224
|
+
nonTerminalNode = statementNode, ///
|
|
225
|
+
childNodes = nonTerminalNode.getChildNodes(),
|
|
226
|
+
nodes = childNodes, ///
|
|
227
|
+
antecedentVariableMatches = matchAntecedentVariable(antecedentVariableNode, nodes, substitutions);
|
|
228
|
+
|
|
229
|
+
antecedentStatementNodeMatches = antecedentVariableMatches; ///
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return antecedentStatementNodeMatches;
|
|
235
|
+
}
|
package/src/axiom.js
CHANGED
|
@@ -1,103 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import AxiomLemmaTheorem from "./axiomLemmaTheorem";
|
|
4
4
|
|
|
5
5
|
import { AXIOM_KIND } from "./kinds";
|
|
6
|
-
import { nodeAsString } from "./utilities/string";
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
export default class Axiom extends AxiomLemmaTheorem {
|
|
8
|
+
static kind = AXIOM_KIND;
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
constructor(labels, unqualifiedStatementNode, indicativeConditionalNode) {
|
|
12
|
-
this.labels = labels;
|
|
13
|
-
this.unqualifiedStatementNode = unqualifiedStatementNode;
|
|
14
|
-
this.indicativeConditionalNode = indicativeConditionalNode;
|
|
15
|
-
}
|
|
10
|
+
static fromJSON(json, releaseContext) { return AxiomLemmaTheorem.fromJSON(Axiom, json); }
|
|
16
11
|
|
|
17
|
-
|
|
18
|
-
return this.labels;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getUnqualifiedStatementNode() {
|
|
22
|
-
return this.unqualifiedStatementNode;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
getIndicativeConditionalNode() {
|
|
26
|
-
return this.indicativeConditionalNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
matchLabelName(labelName) {
|
|
30
|
-
const matchesLabelName = this.labels.some((label) => {
|
|
31
|
-
const name = labelName, ///
|
|
32
|
-
labelMatchesName = label.matchName(name);
|
|
33
|
-
|
|
34
|
-
if (labelMatchesName) {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
return matchesLabelName;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
toJSON() {
|
|
43
|
-
const labelsJSON = this.labels.map((label) => {
|
|
44
|
-
const labelJSON = label.toJSON();
|
|
45
|
-
|
|
46
|
-
return labelJSON;
|
|
47
|
-
}),
|
|
48
|
-
unqualifiedStatementString = nodeAsString(this.unqualifiedStatementNode),
|
|
49
|
-
indicativeConditionalString = nodeAsString(this.indicativeConditionalNode),
|
|
50
|
-
kind = AXIOM_KIND,
|
|
51
|
-
labels = labelsJSON, ///
|
|
52
|
-
unqualifiedStatement = unqualifiedStatementString, ///
|
|
53
|
-
indicativeConditional = indicativeConditionalString, ///
|
|
54
|
-
json = {
|
|
55
|
-
kind,
|
|
56
|
-
labels,
|
|
57
|
-
unqualifiedStatement,
|
|
58
|
-
indicativeConditional
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
return json;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static fromJSON(json, releaseContext) {
|
|
65
|
-
let { labels } = json;
|
|
66
|
-
|
|
67
|
-
const labelsJSON = labels; ///
|
|
68
|
-
|
|
69
|
-
labels = labelsJSON.map((labelJSON) => {
|
|
70
|
-
const json = labelJSON, ///
|
|
71
|
-
label = Label.fromJSON(json, releaseContext);
|
|
72
|
-
|
|
73
|
-
return label;
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
let { unqualifiedStatement, indicativeConditional } = json;
|
|
77
|
-
|
|
78
|
-
let unqualifiedStatementNode = null,
|
|
79
|
-
indicativeConditionalNode = null;
|
|
80
|
-
|
|
81
|
-
if (unqualifiedStatement !== null) {
|
|
82
|
-
const unqualifiedStatementString = unqualifiedStatement; ///
|
|
83
|
-
|
|
84
|
-
unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementString(unqualifiedStatementString, releaseContext);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (indicativeConditional !== null) {
|
|
88
|
-
const indicativeConditionalString = indicativeConditional; ///
|
|
89
|
-
|
|
90
|
-
indicativeConditionalNode = indicativeConditionalNodeFromIndicativeConditionalString(indicativeConditionalString, releaseContext);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const axiom = new Axiom(labels, unqualifiedStatementNode, indicativeConditionalNode);
|
|
94
|
-
|
|
95
|
-
return axiom;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
static fromLabelsUnqualifiedStatementNodeAndIndicativeConditionalNode(labels, unqualifiedStatementNode, indicativeConditionalNode) {
|
|
99
|
-
const axiom = new Axiom(labels, unqualifiedStatementNode, indicativeConditionalNode);
|
|
100
|
-
|
|
101
|
-
return axiom;
|
|
102
|
-
}
|
|
12
|
+
static fromLabelsAntecedentsAndConsequent(labels, antecedents, consequent) { return AxiomLemmaTheorem.fromLabelsAntecedentsAndConsequent(Axiom, labels, antecedents, consequent); }
|
|
103
13
|
}
|