occam-verify-cli 1.0.437 → 1.0.438
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/element/derivation.js +3 -3
- package/lib/element/label.js +16 -18
- package/lib/element/premise.js +22 -22
- package/lib/element/rule.js +30 -54
- package/lib/element/statement.js +43 -45
- package/lib/element/step.js +14 -14
- package/lib/element/subDerivation.js +3 -3
- package/lib/element.js +19 -1
- package/lib/mixins/statement/validate.js +198 -0
- package/lib/utilities/element.js +10 -7
- package/lib/utilities/statement.js +11 -16
- package/package.json +6 -6
- package/src/element/derivation.js +2 -2
- package/src/element/label.js +11 -18
- package/src/element/premise.js +17 -16
- package/src/element/rule.js +30 -75
- package/src/element/statement.js +59 -44
- package/src/element/step.js +12 -12
- package/src/element/subDerivation.js +2 -2
- package/src/element.js +12 -0
- package/src/mixins/statement/validate.js +295 -0
- package/src/utilities/element.js +13 -9
- package/src/utilities/statement.js +27 -28
- package/lib/mixins/statement/verify.js +0 -198
- package/src/mixins/statement/verify.js +0 -295
|
@@ -37,47 +37,42 @@ _export(exports, {
|
|
|
37
37
|
return typeAssertionFromStatement;
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
|
-
var
|
|
41
|
-
function _interop_require_default(obj) {
|
|
42
|
-
return obj && obj.__esModule ? obj : {
|
|
43
|
-
default: obj
|
|
44
|
-
};
|
|
45
|
-
}
|
|
40
|
+
var _element = require("../utilities/element");
|
|
46
41
|
function equalityFromStatement(statement, context) {
|
|
47
|
-
var
|
|
42
|
+
var statementNode = statement.getNode(), equality = (0, _element.equalityFromStatementNode)(statementNode, context);
|
|
48
43
|
return equality;
|
|
49
44
|
}
|
|
50
45
|
function judgementFromStatement(statement, context) {
|
|
51
|
-
var
|
|
46
|
+
var statementNode = statement.getNode(), judgement = (0, _element.judgementFromStatementNode)(statementNode, context);
|
|
52
47
|
return judgement;
|
|
53
48
|
}
|
|
54
49
|
function metavariableFromStatement(statement, context) {
|
|
55
|
-
var
|
|
50
|
+
var statementNode = statement.getNode(), metavariable = (0, _element.metavariableFromStatementNode)(statementNode, context);
|
|
56
51
|
return metavariable;
|
|
57
52
|
}
|
|
58
53
|
function typeAssertionFromStatement(statement, context) {
|
|
59
|
-
var
|
|
54
|
+
var statementNode = statement.getNode(), typeAssertion = (0, _element.typeAssertionFromStatementNode)(statementNode, context);
|
|
60
55
|
return typeAssertion;
|
|
61
56
|
}
|
|
62
57
|
function definedAssertionFromStatement(statement, context) {
|
|
63
|
-
var
|
|
58
|
+
var statementNode = statement.getNode(), definedAssertion = (0, _element.dDefinedAssertionFromStatementNode)(statementNode, context);
|
|
64
59
|
return definedAssertion;
|
|
65
60
|
}
|
|
66
61
|
function propertyAssertionFromStatement(statement, context) {
|
|
67
|
-
var
|
|
62
|
+
var statementNode = statement.getNode(), propertyAssertion = (0, _element.propertyAssertionFromStatementNode)(statementNode, context);
|
|
68
63
|
return propertyAssertion;
|
|
69
64
|
}
|
|
70
65
|
function subproofAssertionFromStatement(statement, context) {
|
|
71
|
-
var
|
|
66
|
+
var statementNode = statement.getNode(), subproofAssertion = (0, _element.subproofAssertionFromStatementNode)(statementNode, context);
|
|
72
67
|
return subproofAssertion;
|
|
73
68
|
}
|
|
74
69
|
function containedAssertionFromStatement(statement, context) {
|
|
75
|
-
var
|
|
70
|
+
var statementNode = statement.getNode(), containedAssertion = (0, _element.containedAssertionFromStatementNode)(statementNode, context);
|
|
76
71
|
return containedAssertion;
|
|
77
72
|
}
|
|
78
73
|
function satisfiesAssertionFromStatement(statement, context) {
|
|
79
|
-
var
|
|
74
|
+
var statementNode = statement.getNode(), satisfiesAssertion = (0, _element.satisfiesAssertionFromStatementNode)(statementNode, context);
|
|
80
75
|
return satisfiesAssertion;
|
|
81
76
|
}
|
|
82
77
|
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAganVkZ2VtZW50RnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIGREZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXR5RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGVxdWFsaXR5ID0gZXF1YWxpdHlGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZXF1YWxpdHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAganVkZ2VtZW50ID0ganVkZ2VtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gZERlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gcHJvcGVydHlBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uID0gc2F0aXNmaWVzQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHNhdGlzZmllc0Fzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJlcXVhbGl0eUZyb21TdGF0ZW1lbnQiLCJqdWRnZW1lbnRGcm9tU3RhdGVtZW50IiwibWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudCIsInByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsInNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJ0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsImNvbnRleHQiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0Tm9kZSIsImVxdWFsaXR5IiwiZXF1YWxpdHlGcm9tU3RhdGVtZW50Tm9kZSIsImp1ZGdlbWVudCIsImp1ZGdlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUiLCJ0eXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZGVmaW5lZEFzc2VydGlvbiIsImREZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJwcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJzdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJjb250YWluZWRBc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInNhdGlzZmllc0Fzc2VydGlvbiIsInNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE2RGdCQTtlQUFBQTs7UUFyQkFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBT0FDO2VBQUFBOztRQU9BQztlQUFBQTs7UUFxQkFDO2VBQUFBOztRQXFCQUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXJCQUM7ZUFBQUE7Ozt1QkF2Qm9DO0FBRTdDLFNBQVNOLHNCQUFzQk8sU0FBUyxFQUFFQyxPQUFPO0lBQ3RELElBQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ0MsV0FBV0MsSUFBQUEsa0NBQXlCLEVBQUNILGVBQWVEO0lBRTFELE9BQU9HO0FBQ1Q7QUFFTyxTQUFTVix1QkFBdUJNLFNBQVMsRUFBRUMsT0FBTztJQUN2RCxJQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNHLFlBQVlDLElBQUFBLG1DQUEwQixFQUFDTCxlQUFlRDtJQUU1RCxPQUFPSztBQUNUO0FBRU8sU0FBU1gsMEJBQTBCSyxTQUFTLEVBQUVDLE9BQU87SUFDMUQsSUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDSyxlQUFlQyxJQUFBQSxzQ0FBNkIsRUFBQ1AsZUFBZUQ7SUFFbEUsT0FBT087QUFDVDtBQUVPLFNBQVNULDJCQUEyQkMsU0FBUyxFQUFFQyxPQUFPO0lBQzNELElBQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ08sZ0JBQWdCQyxJQUFBQSx1Q0FBOEIsRUFBQ1QsZUFBZUQ7SUFFcEUsT0FBT1M7QUFDVDtBQUVPLFNBQVNsQiw4QkFBOEJRLFNBQVMsRUFBRUMsT0FBTztJQUM5RCxJQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNTLG1CQUFtQkMsSUFBQUEsMkNBQWtDLEVBQUNYLGVBQWVEO0lBRTNFLE9BQU9XO0FBQ1Q7QUFFTyxTQUFTaEIsK0JBQStCSSxTQUFTLEVBQUVDLE9BQU87SUFDL0QsSUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDVyxvQkFBb0JDLElBQUFBLDJDQUFrQyxFQUFDYixlQUFlRDtJQUU1RSxPQUFPYTtBQUNUO0FBRU8sU0FBU2hCLCtCQUErQkUsU0FBUyxFQUFFQyxPQUFPO0lBQy9ELElBQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ2Esb0JBQW9CQyxJQUFBQSwyQ0FBa0MsRUFBQ2YsZUFBZUQ7SUFFNUUsT0FBT2U7QUFDVDtBQUVPLFNBQVN6QixnQ0FBZ0NTLFNBQVMsRUFBRUMsT0FBTztJQUNoRSxJQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNlLHFCQUFxQkMsSUFBQUEsNENBQW1DLEVBQUNqQixlQUFlRDtJQUU5RSxPQUFPaUI7QUFDVDtBQUVPLFNBQVNyQixnQ0FBZ0NHLFNBQVMsRUFBRUMsT0FBTztJQUNoRSxJQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNpQixxQkFBcUJDLElBQUFBLDRDQUFtQyxFQUFDbkIsZUFBZUQ7SUFFOUUsT0FBT21CO0FBQ1QifQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.438",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.36",
|
|
14
14
|
"necessary": "^17.0.9",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
16
|
-
"occam-entities": "^1.0.
|
|
17
|
-
"occam-file-system": "^6.0.
|
|
18
|
-
"occam-furtle": "^2.0.
|
|
19
|
-
"occam-grammars": "^1.3.
|
|
15
|
+
"occam-custom-grammars": "^5.0.1338",
|
|
16
|
+
"occam-entities": "^1.0.442",
|
|
17
|
+
"occam-file-system": "^6.0.457",
|
|
18
|
+
"occam-furtle": "^2.0.276",
|
|
19
|
+
"occam-grammars": "^1.3.433",
|
|
20
20
|
"occam-lexers": "^23.1.34",
|
|
21
21
|
"occam-parsers": "^23.1.37",
|
|
22
22
|
"occam-query": "^4.1.142"
|
|
@@ -32,9 +32,9 @@ export default define(class Derivation extends Element {
|
|
|
32
32
|
|
|
33
33
|
verifies = this.stepsOrSubproofs.every((stepOrSubproof) => { ///
|
|
34
34
|
const assignments = [],
|
|
35
|
-
|
|
35
|
+
stepOrSubproofValidates = stepOrSubproof.validate(substitutions, assignments, context);
|
|
36
36
|
|
|
37
|
-
if (
|
|
37
|
+
if (stepOrSubproofValidates) {
|
|
38
38
|
const stepOrSubproofUnifies = stepOrSubproof.unify(substitutions, context);
|
|
39
39
|
|
|
40
40
|
if (stepOrSubproofUnifies) {
|
package/src/element/label.js
CHANGED
|
@@ -16,17 +16,13 @@ export default define(class Label extends Element {
|
|
|
16
16
|
return this.metavariable;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
getMetavariableName() {
|
|
20
|
-
const metavariableName = this.metavariable.getName();
|
|
19
|
+
getMetavariableName() { return this.metavariable.getName(); }
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
}
|
|
21
|
+
getMetavariableNode() { return this.metavariable.getNode(); }
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
const metavariableNode = this.metavariable.getNode();
|
|
23
|
+
matchMetavariableName(metavariableName) { return this.metavariable.matchMetavariableName(metavariableName); }
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
}
|
|
25
|
+
isMetavariableEqualToMetavariable(metavariable) { return this.metavariable.isEqualTo(metavariable); }
|
|
30
26
|
|
|
31
27
|
matchReference(reference) {
|
|
32
28
|
const metavariable = reference.getMetavariable(),
|
|
@@ -36,37 +32,34 @@ export default define(class Label extends Element {
|
|
|
36
32
|
return referenceMatches;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
isMetavariableEqualToMetavariable(metavariable) { return this.metavariable.isEqualTo(metavariable); }
|
|
40
|
-
|
|
41
|
-
matchMetavariableName(metavariableName) { return this.metavariable.matchMetavariableName(metavariableName); }
|
|
42
|
-
|
|
43
35
|
verify(nameOnly) {
|
|
44
36
|
let verifies = false;
|
|
45
37
|
|
|
46
|
-
const
|
|
38
|
+
const context = this.getContext(),
|
|
39
|
+
labelString = this.getString(); ///
|
|
47
40
|
|
|
48
|
-
|
|
41
|
+
context.trace(`Verifying the '${labelString}' label...`);
|
|
49
42
|
|
|
50
43
|
let labelPresent;
|
|
51
44
|
|
|
52
45
|
if (nameOnly) {
|
|
53
46
|
const metavariableName = this.getMetavariableName();
|
|
54
47
|
|
|
55
|
-
labelPresent =
|
|
48
|
+
labelPresent = context.isLabelPresentByMetavariableName(metavariableName);
|
|
56
49
|
} else {
|
|
57
50
|
const metavariable = this.getMetavariable();
|
|
58
51
|
|
|
59
|
-
labelPresent =
|
|
52
|
+
labelPresent = context.isLabelPresentByMetavariable(metavariable);
|
|
60
53
|
}
|
|
61
54
|
|
|
62
55
|
if (labelPresent) {
|
|
63
|
-
|
|
56
|
+
context.debug(`The '${labelString}' label is already present.`);
|
|
64
57
|
} else {
|
|
65
58
|
verifies = true;
|
|
66
59
|
}
|
|
67
60
|
|
|
68
61
|
if (verifies) {
|
|
69
|
-
|
|
62
|
+
context.debug(`...verified the '${labelString}' label.`);
|
|
70
63
|
}
|
|
71
64
|
|
|
72
65
|
return verifies;
|
package/src/element/premise.js
CHANGED
|
@@ -25,25 +25,26 @@ export default define(class Premise extends Element {
|
|
|
25
25
|
return this.procedureCall;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
let
|
|
28
|
+
validate(context) {
|
|
29
|
+
let validates = false;
|
|
30
30
|
|
|
31
31
|
const temporaryContext = TemporaryContext.fromNothing(context);
|
|
32
32
|
|
|
33
33
|
context = temporaryContext; ///
|
|
34
34
|
|
|
35
|
-
const
|
|
35
|
+
const node = this.getNode(),
|
|
36
|
+
premiseString = this.getString(); ///
|
|
36
37
|
|
|
37
|
-
context.trace(`
|
|
38
|
+
context.trace(`Validating the '${premiseString}' premise...`, node);
|
|
38
39
|
|
|
39
40
|
if (false) {
|
|
40
41
|
///
|
|
41
42
|
} else if (this.statement !== null) {
|
|
42
43
|
const stated = true,
|
|
43
44
|
assignments = [],
|
|
44
|
-
|
|
45
|
+
statementValidates = this.statement.validate(assignments, stated, context);
|
|
45
46
|
|
|
46
|
-
if (
|
|
47
|
+
if (statementValidates) {
|
|
47
48
|
const assignmentsAssigned = assignAssignments(assignments, context);
|
|
48
49
|
|
|
49
50
|
if (assignmentsAssigned) {
|
|
@@ -53,7 +54,7 @@ export default define(class Premise extends Element {
|
|
|
53
54
|
|
|
54
55
|
context.addStepOrSubproof(stepOrSubproof);
|
|
55
56
|
|
|
56
|
-
|
|
57
|
+
validates = true;
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
} else if (this.procedureCall !== null) {
|
|
@@ -62,29 +63,29 @@ export default define(class Premise extends Element {
|
|
|
62
63
|
procedureCallVerifies = this.procedureCall.verify(assignments, stated, context);
|
|
63
64
|
|
|
64
65
|
if (procedureCallVerifies) {
|
|
65
|
-
|
|
66
|
+
validates = true;
|
|
66
67
|
}
|
|
67
68
|
} else {
|
|
68
|
-
context.debug(`Unable to
|
|
69
|
+
context.debug(`Unable to validate the '${premiseString}' premise because it is nonsense.`, node);
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
if (
|
|
72
|
-
this.context
|
|
72
|
+
if (validates) {
|
|
73
|
+
this.setContext(context);
|
|
73
74
|
|
|
74
|
-
context.debug(`...
|
|
75
|
+
context.debug(`...validated the '${premiseString}' premise.`, node);
|
|
75
76
|
}
|
|
76
77
|
|
|
77
|
-
return
|
|
78
|
+
return validates;
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
unifyIndependently(substitutions, context) {
|
|
81
82
|
let unifiesIndependently = false;
|
|
82
83
|
|
|
83
|
-
const premiseString = this.
|
|
84
|
+
const premiseString = this.getString(), ///
|
|
84
85
|
generalContext = this.context, ///
|
|
85
86
|
specificContext = context; ///
|
|
86
87
|
|
|
87
|
-
context.trace(`Unifying the '${premiseString}' premise independently...`,
|
|
88
|
+
context.trace(`Unifying the '${premiseString}' premise independently...`, node);
|
|
88
89
|
|
|
89
90
|
if (this.statement !== null) {
|
|
90
91
|
const statementUnifiesIndependently = this.statement.unifyIndependently(substitutions, generalContext, specificContext);
|
|
@@ -103,7 +104,7 @@ export default define(class Premise extends Element {
|
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
if (unifiesIndependently) {
|
|
106
|
-
context.debug(`...unified the '${premiseString}' premise independenly.`,
|
|
107
|
+
context.debug(`...unified the '${premiseString}' premise independenly.`, node);
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
return unifiesIndependently;
|
package/src/element/rule.js
CHANGED
|
@@ -17,13 +17,13 @@ import { labelsFromJSON,
|
|
|
17
17
|
const { reverse, extract, backwardsEvery } = arrayUtilities;
|
|
18
18
|
|
|
19
19
|
export default define(class Rule extends Element {
|
|
20
|
-
constructor(context, string, node, labels, premises, conclusion
|
|
20
|
+
constructor(context, string, node, proof, labels, premises, conclusion) {
|
|
21
21
|
super(context, string, node);
|
|
22
22
|
|
|
23
|
+
this.proof = proof;
|
|
23
24
|
this.labels = labels;
|
|
24
25
|
this.premises = premises;
|
|
25
26
|
this.conclusion = conclusion;
|
|
26
|
-
this.proof = proof;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
getLabels() {
|
|
@@ -34,14 +34,14 @@ export default define(class Rule extends Element {
|
|
|
34
34
|
return this.premises;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
getConclusion() {
|
|
38
|
-
return this.conclusion;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
37
|
getProof() {
|
|
42
38
|
return this.proof;
|
|
43
39
|
}
|
|
44
40
|
|
|
41
|
+
getConclusion() {
|
|
42
|
+
return this.conclusion;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
45
|
matchMetavariableName(metavariableName) {
|
|
46
46
|
const metavariableNameMatches = this.labels.some((label) => {
|
|
47
47
|
const metavariableNameMatches = label.matchMetavariableName(metavariableName);
|
|
@@ -57,18 +57,26 @@ export default define(class Rule extends Element {
|
|
|
57
57
|
verify() {
|
|
58
58
|
let verifies = false;
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
let context;
|
|
61
|
+
|
|
62
|
+
const node = this.getNode();
|
|
63
|
+
|
|
64
|
+
context = this.getContext();
|
|
61
65
|
|
|
62
|
-
|
|
66
|
+
const ruleString = this.getString(); ///
|
|
67
|
+
|
|
68
|
+
context.trace(`Verifying the '${ruleString}' rule...`, node);
|
|
63
69
|
|
|
64
70
|
const labelsVerify = this.verifyLabels();
|
|
65
71
|
|
|
66
72
|
if (labelsVerify) {
|
|
67
|
-
const localContext = LocalContext.fromNothing(
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
const localContext = LocalContext.fromNothing(context);
|
|
74
|
+
|
|
75
|
+
context = localContext; ///
|
|
76
|
+
|
|
77
|
+
const premisesValidate = this.validatePremises(context);
|
|
70
78
|
|
|
71
|
-
if (
|
|
79
|
+
if (premisesValidate) {
|
|
72
80
|
const conclusionVerifies = this.verifyConclusion(context);
|
|
73
81
|
|
|
74
82
|
if (conclusionVerifies) {
|
|
@@ -77,7 +85,7 @@ export default define(class Rule extends Element {
|
|
|
77
85
|
if (proofVerifies) {
|
|
78
86
|
const rule = this; ///
|
|
79
87
|
|
|
80
|
-
|
|
88
|
+
context.addRule(rule);
|
|
81
89
|
|
|
82
90
|
verifies = true;
|
|
83
91
|
}
|
|
@@ -86,7 +94,7 @@ export default define(class Rule extends Element {
|
|
|
86
94
|
}
|
|
87
95
|
|
|
88
96
|
if (verifies) {
|
|
89
|
-
|
|
97
|
+
context.debug(`...verified the '${ruleString}' rule.`, node);
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
return verifies;
|
|
@@ -105,22 +113,22 @@ export default define(class Rule extends Element {
|
|
|
105
113
|
return labelsVerify;
|
|
106
114
|
}
|
|
107
115
|
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
const
|
|
116
|
+
validatePremises(context) {
|
|
117
|
+
const premisesValidate = this.premises.every((premise) => {
|
|
118
|
+
const premiseValidates = this.validatePremise(premise, context);
|
|
111
119
|
|
|
112
|
-
if (
|
|
120
|
+
if (premiseValidates) {
|
|
113
121
|
return true;
|
|
114
122
|
}
|
|
115
123
|
});
|
|
116
124
|
|
|
117
|
-
return
|
|
125
|
+
return premisesValidate;
|
|
118
126
|
}
|
|
119
127
|
|
|
120
|
-
|
|
121
|
-
const
|
|
128
|
+
validatePremise(premise, context) {
|
|
129
|
+
const premiseValidates = premise.validate(context);
|
|
122
130
|
|
|
123
|
-
return
|
|
131
|
+
return premiseValidates;
|
|
124
132
|
}
|
|
125
133
|
|
|
126
134
|
verifyConclusion(context) {
|
|
@@ -252,57 +260,4 @@ export default define(class Rule extends Element {
|
|
|
252
260
|
|
|
253
261
|
return rule;
|
|
254
262
|
}
|
|
255
|
-
|
|
256
|
-
static fromRuleNode(ruleNode, context) {
|
|
257
|
-
const node = ruleNode, ///
|
|
258
|
-
proof = proofFromRuleNode(ruleNode, context),
|
|
259
|
-
labels = labelsFromRuleNode(ruleNode, context),
|
|
260
|
-
premises = premisesFromRuleNode(ruleNode, context),
|
|
261
|
-
conclusion = conclusionFromRuleNode(ruleNode, context),
|
|
262
|
-
string = stringFromLabelsPremisesAndConclusion(labels, premises, conclusion),
|
|
263
|
-
rule = new Rule(context, string, node, labels, premises, conclusion, proof);
|
|
264
|
-
|
|
265
|
-
return rule;
|
|
266
|
-
}
|
|
267
263
|
});
|
|
268
|
-
|
|
269
|
-
function proofFromRuleNode(ruleNode, context) {
|
|
270
|
-
const { Proof } = elements,
|
|
271
|
-
proofNode = ruleNode.getProofNode(),
|
|
272
|
-
proof = Proof.fromProofNode(proofNode, context);
|
|
273
|
-
|
|
274
|
-
return proof;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
function labelsFromRuleNode(ruleNode, context) {
|
|
278
|
-
const { Label } = elements,
|
|
279
|
-
labelNodes = ruleNode.getLabelNodes(),
|
|
280
|
-
labels = labelNodes.map((labelNode) => {
|
|
281
|
-
const label = Label.fromLabelNode(labelNode, context);
|
|
282
|
-
|
|
283
|
-
return label;
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
return labels;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
function premisesFromRuleNode(ruleNode, context) {
|
|
290
|
-
const { Premise } = elements,
|
|
291
|
-
premiseNodes = ruleNode.getPremiseNodes(),
|
|
292
|
-
premises = premiseNodes.map((premiseNode) => {
|
|
293
|
-
const premise = Premise.fromPremiseNode(premiseNode, context);
|
|
294
|
-
|
|
295
|
-
return premise;
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
return premises;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
function conclusionFromRuleNode(ruleNode, context) {
|
|
302
|
-
const { Conclusion } = elements,
|
|
303
|
-
conclusionNode = ruleNode.getConclusionNode(),
|
|
304
|
-
conclusion = Conclusion.fromConclusionNode(conclusionNode, context);
|
|
305
|
-
|
|
306
|
-
return conclusion;
|
|
307
|
-
}
|
|
308
|
-
|