occam-verify-cli 0.0.1033 → 0.0.1035
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/assertion/subproof.js +50 -11
- package/lib/assertion/type.js +6 -6
- package/lib/constructor.js +3 -2
- package/lib/equality.js +5 -5
- package/lib/premise.js +21 -12
- package/lib/substitution/termForVariable.js +15 -18
- package/lib/supposition.js +19 -10
- package/lib/term.js +3 -3
- package/lib/theorem.js +107 -6
- package/lib/unifier/intrinsicLevel.js +9 -4
- package/lib/unifier/metaLevel.js +10 -4
- package/lib/utilities/array.js +5 -2
- package/lib/utilities/unify.js +2 -14
- package/lib/variable.js +41 -3
- package/lib/verifier/topLevel.js +3 -3
- package/package.json +1 -1
- package/src/assertion/subproof.js +74 -15
- package/src/assertion/type.js +6 -6
- package/src/constructor.js +3 -1
- package/src/equality.js +4 -4
- package/src/premise.js +29 -16
- package/src/substitution/termForVariable.js +21 -21
- package/src/supposition.js +24 -11
- package/src/term.js +2 -2
- package/src/theorem.js +87 -1
- package/src/unifier/intrinsicLevel.js +16 -3
- package/src/unifier/metaLevel.js +18 -3
- package/src/utilities/array.js +1 -1
- package/src/utilities/unify.js +1 -16
- package/src/variable.js +59 -2
- package/src/verifier/topLevel.js +3 -2
- package/lib/unify/variableWithTerm.js +0 -39
- package/lib/verify/lemma.js +0 -48
- package/lib/verify/theorem.js +0 -47
- package/src/unify/variableWithTerm.js +0 -37
- package/src/verify/lemma.js +0 -70
- package/src/verify/theorem.js +0 -65
package/lib/verify/lemma.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return verifyLemma;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _lemma = /*#__PURE__*/ _interop_require_default(require("../lemma"));
|
|
12
|
-
var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
|
|
13
|
-
var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
|
|
14
|
-
var _array = require("../utilities/array");
|
|
15
|
-
var _constants = require("../constants");
|
|
16
|
-
var _query = require("../utilities/query");
|
|
17
|
-
function _interop_require_default(obj) {
|
|
18
|
-
return obj && obj.__esModule ? obj : {
|
|
19
|
-
default: obj
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
var proofNodeQuery = (0, _query.nodeQuery)("/lemma/proof!"), labelNodesQuery = (0, _query.nodesQuery)("/lemma/label"), consequentNodeQuery = (0, _query.nodeQuery)("/lemma/consequent!"), suppositionsNodeQuery = (0, _query.nodesQuery)("/lemma/supposition");
|
|
23
|
-
function verifyLemma(lemmaNode, fileContext) {
|
|
24
|
-
var lemmaVerified = false;
|
|
25
|
-
var labelNodes = labelNodesQuery(lemmaNode), labelsString = fileContext.nodesAsString(labelNodes);
|
|
26
|
-
labelsString === _constants.EMPTY_STRING ? fileContext.trace("Verifying a lemma...", lemmaNode) : fileContext.trace("Verifying the '".concat(labelsString, "' lemma..."), lemmaNode);
|
|
27
|
-
var labels = [], labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
28
|
-
if (labelsVerified) {
|
|
29
|
-
var localContext = _local.default.fromFileContext(fileContext), suppositions = [], suppositionNodes = suppositionsNodeQuery(lemmaNode), suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
|
|
30
|
-
if (suppositionsVerified) {
|
|
31
|
-
var consequents = [], consequentNode = consequentNodeQuery(lemmaNode), consequentVerified = verifyConsequent(consequentNode, consequents, localContext);
|
|
32
|
-
if (consequentVerified) {
|
|
33
|
-
var proofNode = proofNodeQuery(lemmaNode), firstConsequent = (0, _array.first)(consequents), consequent = firstConsequent, statementNode = consequent.getStatementNode(), substitutions = _substitutions.default.fromNothing(), proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
|
|
34
|
-
if (proofVerified) {
|
|
35
|
-
var substitutions1 = _substitutions.default.fromNothing(), lemma = _lemma.default.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions1, fileContext);
|
|
36
|
-
fileContext.addLemma(lemma);
|
|
37
|
-
lemmaVerified = true;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (lemmaVerified) {
|
|
43
|
-
labelsString === _constants.EMPTY_STRING ? fileContext.debug("...verified the lemma.", lemmaNode) : fileContext.debug("...verified the '".concat(labelsString, "' lemma."), lemmaNode);
|
|
44
|
-
}
|
|
45
|
-
return lemmaVerified;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbGVtbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBMZW1tYSBmcm9tIFwiLi4vbGVtbWFcIjtcbi8vIGltcG9ydCB2ZXJpZnlQcm9vZiBmcm9tIFwiLi4vdmVyaWZ5L3Byb29mXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uc1wiO1xuLy8gaW1wb3J0IHZlcmlmeUNvbnNlcXVlbnQgZnJvbSBcIi4uL3ZlcmlmeS9jb25zZXF1ZW50XCI7XG4vLyBpbXBvcnQgdmVyaWZ5U3VwcG9zaXRpb25zIGZyb20gXCIuLi92ZXJpZnkvc3VwcG9zaXRpb25zXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBwcm9vZk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9sZW1tYS9wcm9vZiFcIiksXG4gICAgICBsYWJlbE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2xlbW1hL2xhYmVsXCIpLFxuICAgICAgY29uc2VxdWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9sZW1tYS9jb25zZXF1ZW50IVwiKSxcbiAgICAgIHN1cHBvc2l0aW9uc05vZGVRdWVyeSA9IG5vZGVzUXVlcnkoXCIvbGVtbWEvc3VwcG9zaXRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUxlbW1hKGxlbW1hTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IGxlbW1hVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE5vZGVzID0gbGFiZWxOb2Rlc1F1ZXJ5KGxlbW1hTm9kZSksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVzQXNTdHJpbmcobGFiZWxOb2Rlcyk7XG5cbiAgKGxhYmVsc1N0cmluZyA9PT0gRU1QVFlfU1RSSU5HKSA/XG4gICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyBhIGxlbW1hLi4uYCwgbGVtbWFOb2RlKSA6XG4gICAgICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBsZW1tYS4uLmAsIGxlbW1hTm9kZSk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsTm9kZXMsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IFtdLFxuICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZXMgPSBzdXBwb3NpdGlvbnNOb2RlUXVlcnkobGVtbWFOb2RlKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNWZXJpZmllZCA9IHZlcmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbk5vZGVzLCBzdXBwb3NpdGlvbnMsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGNvbnNlcXVlbnRzID0gW10sXG4gICAgICAgICAgICBjb25zZXF1ZW50Tm9kZSA9IGNvbnNlcXVlbnROb2RlUXVlcnkobGVtbWFOb2RlKSxcbiAgICAgICAgICAgIGNvbnNlcXVlbnRWZXJpZmllZCA9IHZlcmlmeUNvbnNlcXVlbnQoY29uc2VxdWVudE5vZGUsIGNvbnNlcXVlbnRzLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAoY29uc2VxdWVudFZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IHByb29mTm9kZSA9IHByb29mTm9kZVF1ZXJ5KGxlbW1hTm9kZSksXG4gICAgICAgICAgICAgIGZpcnN0Q29uc2VxdWVudCA9IGZpcnN0KGNvbnNlcXVlbnRzKSxcbiAgICAgICAgICAgICAgY29uc2VxdWVudCA9IGZpcnN0Q29uc2VxdWVudCwgLy8vXG4gICAgICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBjb25zZXF1ZW50LmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgICAgcHJvb2ZWZXJpZmllZCA9IHZlcmlmeVByb29mKHByb29mTm9kZSwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBpZiAocHJvb2ZWZXJpZmllZCkge1xuICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgICAgICAgbGVtbWEgPSBMZW1tYS5mcm9tTGFiZWxzU3VwcG9zaXRpb25zQ29uc2VxdWVudFN1YnN0aXR1dGlvbnNBbmRGaWxlQ29udGV4dChsYWJlbHMsIHN1cHBvc2l0aW9ucywgY29uc2VxdWVudCwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQpO1xuXG4gICAgICAgICAgZmlsZUNvbnRleHQuYWRkTGVtbWEobGVtbWEpO1xuXG4gICAgICAgICAgbGVtbWFWZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobGVtbWFWZXJpZmllZCkge1xuICAgIChsYWJlbHNTdHJpbmcgPT09IEVNUFRZX1NUUklORykgP1xuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBsZW1tYS5gLCBsZW1tYU5vZGUpIDpcbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBsZW1tYS5gLCBsZW1tYU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGxlbW1hVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TGVtbWEiLCJwcm9vZk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJjb25zZXF1ZW50Tm9kZVF1ZXJ5Iiwic3VwcG9zaXRpb25zTm9kZVF1ZXJ5IiwibGVtbWFOb2RlIiwiZmlsZUNvbnRleHQiLCJsZW1tYVZlcmlmaWVkIiwibGFiZWxOb2RlcyIsImxhYmVsc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJFTVBUWV9TVFJJTkciLCJ0cmFjZSIsImxhYmVscyIsImxhYmVsc1ZlcmlmaWVkIiwidmVyaWZ5TGFiZWxzIiwibG9jYWxDb250ZXh0IiwiTG9jYWxDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0Iiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25Ob2RlcyIsInN1cHBvc2l0aW9uc1ZlcmlmaWVkIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiY29uc2VxdWVudHMiLCJjb25zZXF1ZW50Tm9kZSIsImNvbnNlcXVlbnRWZXJpZmllZCIsInZlcmlmeUNvbnNlcXVlbnQiLCJwcm9vZk5vZGUiLCJmaXJzdENvbnNlcXVlbnQiLCJmaXJzdCIsImNvbnNlcXVlbnQiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvbnMiLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJwcm9vZlZlcmlmaWVkIiwidmVyaWZ5UHJvb2YiLCJsZW1tYSIsIkxlbW1hIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0NvbnNlcXVlbnRTdWJzdGl0dXRpb25zQW5kRmlsZUNvbnRleHQiLCJhZGRMZW1tYSIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUF3QkE7Ozs0REFoQk47NERBRU87b0VBQ0M7cUJBSUo7eUJBQ087cUJBQ1M7Ozs7OztBQUV0QyxJQUFNQyxpQkFBaUJDLElBQUFBLGdCQUFTLEVBQUMsa0JBQzNCQyxrQkFBa0JDLElBQUFBLGlCQUFVLEVBQUMsaUJBQzdCQyxzQkFBc0JILElBQUFBLGdCQUFTLEVBQUMsdUJBQ2hDSSx3QkFBd0JGLElBQUFBLGlCQUFVLEVBQUM7QUFFMUIsU0FBU0osWUFBWU8sU0FBUyxFQUFFQyxXQUFXO0lBQ3hELElBQUlDLGdCQUFnQjtJQUVwQixJQUFNQyxhQUFhUCxnQkFBZ0JJLFlBQzdCSSxlQUFlSCxZQUFZSSxhQUFhLENBQUNGO0lBRTlDQyxpQkFBaUJFLHVCQUFZLEdBQzVCTCxZQUFZTSxLQUFLLENBQUUsd0JBQXVCUCxhQUN4Q0MsWUFBWU0sS0FBSyxDQUFDLEFBQUMsa0JBQThCLE9BQWJILGNBQWEsZUFBYUo7SUFFbEUsSUFBTVEsU0FBUyxFQUFFLEVBQ1hDLGlCQUFpQkMsYUFBYVAsWUFBWUssUUFBUVA7SUFFeEQsSUFBSVEsZ0JBQWdCO1FBQ2xCLElBQU1FLGVBQWVDLGNBQVksQ0FBQ0MsZUFBZSxDQUFDWixjQUM1Q2EsZUFBZSxFQUFFLEVBQ2pCQyxtQkFBbUJoQixzQkFBc0JDLFlBQ3pDZ0IsdUJBQXVCQyxtQkFBbUJGLGtCQUFrQkQsY0FBY0g7UUFFaEYsSUFBSUssc0JBQXNCO1lBQ3hCLElBQU1FLGNBQWMsRUFBRSxFQUNoQkMsaUJBQWlCckIsb0JBQW9CRSxZQUNyQ29CLHFCQUFxQkMsaUJBQWlCRixnQkFBZ0JELGFBQWFQO1lBRXpFLElBQUlTLG9CQUFvQjtnQkFDdEIsSUFBTUUsWUFBWTVCLGVBQWVNLFlBQzNCdUIsa0JBQWtCQyxJQUFBQSxZQUFLLEVBQUNOLGNBQ3hCTyxhQUFhRixpQkFDYkcsZ0JBQWdCRCxXQUFXRSxnQkFBZ0IsSUFDM0NDLGdCQUFnQkMsc0JBQWEsQ0FBQ0MsV0FBVyxJQUN6Q0MsZ0JBQWdCQyxZQUFZVixXQUFXSSxlQUFlRSxlQUFlakI7Z0JBRTNFLElBQUlvQixlQUFlO29CQUNqQixJQUFNSCxpQkFBZ0JDLHNCQUFhLENBQUNDLFdBQVcsSUFDekNHLFFBQVFDLGNBQUssQ0FBQ0MsMkRBQTJELENBQUMzQixRQUFRTSxjQUFjVyxZQUFZRyxnQkFBZTNCO29CQUVqSUEsWUFBWW1DLFFBQVEsQ0FBQ0g7b0JBRXJCL0IsZ0JBQWdCO2dCQUNsQjtZQUNGO1FBQ0Y7SUFDRjtJQUVBLElBQUlBLGVBQWU7UUFDaEJFLGlCQUFpQkUsdUJBQVksR0FDNUJMLFlBQVlvQyxLQUFLLENBQUUsMEJBQXlCckMsYUFDMUNDLFlBQVlvQyxLQUFLLENBQUMsQUFBQyxvQkFBZ0MsT0FBYmpDLGNBQWEsYUFBV0o7SUFDcEU7SUFFQSxPQUFPRTtBQUNUIn0=
|
package/lib/verify/theorem.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return verifyTheorem;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _theorem = /*#__PURE__*/ _interop_require_default(require("../theorem"));
|
|
12
|
-
var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
|
|
13
|
-
var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
|
|
14
|
-
var _array = require("../utilities/array");
|
|
15
|
-
var _query = require("../utilities/query");
|
|
16
|
-
function _interop_require_default(obj) {
|
|
17
|
-
return obj && obj.__esModule ? obj : {
|
|
18
|
-
default: obj
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
var proofNodeQuery = (0, _query.nodeQuery)("/theorem/proof!"), labelNodesQuery = (0, _query.nodesQuery)("/theorem/label"), consequentNodeQuery = (0, _query.nodeQuery)("/theorem/consequent!"), suppositionsNodeQuery = (0, _query.nodesQuery)("/theorem/supposition");
|
|
22
|
-
function verifyTheorem(theoremNode, fileContext) {
|
|
23
|
-
var theoremVerified = false;
|
|
24
|
-
var labelNodes = labelNodesQuery(theoremNode), labelsString = fileContext.nodesAsString(labelNodes);
|
|
25
|
-
fileContext.trace("Verifying the '".concat(labelsString, "' theorem..."), theoremNode);
|
|
26
|
-
var labels = [], labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
27
|
-
if (labelsVerified) {
|
|
28
|
-
var localContext = _local.default.fromFileContext(fileContext), suppositions = [], suppositionNodes = suppositionsNodeQuery(theoremNode), suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
|
|
29
|
-
if (suppositionsVerified) {
|
|
30
|
-
var consequents = [], consequentNode = consequentNodeQuery(theoremNode), consequentVerified = verifyConsequent(consequentNode, consequents, localContext);
|
|
31
|
-
if (consequentVerified) {
|
|
32
|
-
var proofNode = proofNodeQuery(theoremNode), firstConsequent = (0, _array.first)(consequents), consequent = firstConsequent, statementNode = consequent.getStatementNode(), substitutions = _substitutions.default.fromNothing(), proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
|
|
33
|
-
if (proofVerified) {
|
|
34
|
-
var substitutions1 = _substitutions.default.fromNothing(), theorem = _theorem.default.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions1, fileContext);
|
|
35
|
-
fileContext.addTheorem(theorem);
|
|
36
|
-
theoremVerified = true;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (theoremVerified) {
|
|
42
|
-
fileContext.debug("...verified the '".concat(labelsString, "' theorem."), theoremNode);
|
|
43
|
-
}
|
|
44
|
-
return theoremVerified;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4uL3RoZW9yZW1cIjtcbi8vIGltcG9ydCB2ZXJpZnlQcm9vZiBmcm9tIFwiLi4vdmVyaWZ5L3Byb29mXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uc1wiO1xuLy8gaW1wb3J0IHZlcmlmeUNvbnNlcXVlbnQgZnJvbSBcIi4uL3ZlcmlmeS9jb25zZXF1ZW50XCI7XG4vLyBpbXBvcnQgdmVyaWZ5U3VwcG9zaXRpb25zIGZyb20gXCIuLi92ZXJpZnkvc3VwcG9zaXRpb25zXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBwcm9vZk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90aGVvcmVtL3Byb29mIVwiKSxcbiAgICAgIGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvdGhlb3JlbS9sYWJlbFwiKSxcbiAgICAgIGNvbnNlcXVlbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbS9jb25zZXF1ZW50IVwiKSxcbiAgICAgIHN1cHBvc2l0aW9uc05vZGVRdWVyeSA9IG5vZGVzUXVlcnkoXCIvdGhlb3JlbS9zdXBwb3NpdGlvblwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGhlb3JlbSh0aGVvcmVtTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHRoZW9yZW1WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2Rlc0FzU3RyaW5nKGxhYmVsTm9kZXMpO1xuXG4gIGZpbGVDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIHRoZW9yZW0uLi5gLCB0aGVvcmVtTm9kZSk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsTm9kZXMsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IFtdLFxuICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZXMgPSBzdXBwb3NpdGlvbnNOb2RlUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc1ZlcmlmaWVkID0gdmVyaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9uTm9kZXMsIHN1cHBvc2l0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNWZXJpZmllZCkge1xuICAgICAgY29uc3QgY29uc2VxdWVudHMgPSBbXSxcbiAgICAgICAgICAgIGNvbnNlcXVlbnROb2RlID0gY29uc2VxdWVudE5vZGVRdWVyeSh0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICBjb25zZXF1ZW50VmVyaWZpZWQgPSB2ZXJpZnlDb25zZXF1ZW50KGNvbnNlcXVlbnROb2RlLCBjb25zZXF1ZW50cywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKGNvbnNlcXVlbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBwcm9vZk5vZGUgPSBwcm9vZk5vZGVRdWVyeSh0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICAgIGZpcnN0Q29uc2VxdWVudCA9IGZpcnN0KGNvbnNlcXVlbnRzKSxcbiAgICAgICAgICAgICAgY29uc2VxdWVudCA9IGZpcnN0Q29uc2VxdWVudCwgLy8vXG4gICAgICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBjb25zZXF1ZW50LmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICAgICAgcHJvb2ZWZXJpZmllZCA9IHZlcmlmeVByb29mKHByb29mTm9kZSwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBpZiAocHJvb2ZWZXJpZmllZCkge1xuICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0NvbnNlcXVlbnRTdWJzdGl0dXRpb25zQW5kRmlsZUNvbnRleHQobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbnQsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0KTtcblxuICAgICAgICAgIGZpbGVDb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG5cbiAgICAgICAgICB0aGVvcmVtVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoZW9yZW1WZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bGFiZWxzU3RyaW5nfScgdGhlb3JlbS5gLCB0aGVvcmVtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGhlb3JlbVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVRoZW9yZW0iLCJwcm9vZk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJjb25zZXF1ZW50Tm9kZVF1ZXJ5Iiwic3VwcG9zaXRpb25zTm9kZVF1ZXJ5IiwidGhlb3JlbU5vZGUiLCJmaWxlQ29udGV4dCIsInRoZW9yZW1WZXJpZmllZCIsImxhYmVsTm9kZXMiLCJsYWJlbHNTdHJpbmciLCJub2Rlc0FzU3RyaW5nIiwidHJhY2UiLCJsYWJlbHMiLCJsYWJlbHNWZXJpZmllZCIsInZlcmlmeUxhYmVscyIsImxvY2FsQ29udGV4dCIsIkxvY2FsQ29udGV4dCIsImZyb21GaWxlQ29udGV4dCIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uTm9kZXMiLCJzdXBwb3NpdGlvbnNWZXJpZmllZCIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImNvbnNlcXVlbnRzIiwiY29uc2VxdWVudE5vZGUiLCJjb25zZXF1ZW50VmVyaWZpZWQiLCJ2ZXJpZnlDb25zZXF1ZW50IiwicHJvb2ZOb2RlIiwiZmlyc3RDb25zZXF1ZW50IiwiZmlyc3QiLCJjb25zZXF1ZW50Iiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiU3Vic3RpdHV0aW9ucyIsImZyb21Ob3RoaW5nIiwicHJvb2ZWZXJpZmllZCIsInZlcmlmeVByb29mIiwidGhlb3JlbSIsIlRoZW9yZW0iLCJmcm9tTGFiZWxzU3VwcG9zaXRpb25zQ29uc2VxdWVudFN1YnN0aXR1dGlvbnNBbmRGaWxlQ29udGV4dCIsImFkZFRoZW9yZW0iLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJBOzs7ZUFBd0JBOzs7OERBZko7NERBRUs7b0VBQ0M7cUJBSUo7cUJBQ2dCOzs7Ozs7QUFFdEMsSUFBTUMsaUJBQWlCQyxJQUFBQSxnQkFBUyxFQUFDLG9CQUMzQkMsa0JBQWtCQyxJQUFBQSxpQkFBVSxFQUFDLG1CQUM3QkMsc0JBQXNCSCxJQUFBQSxnQkFBUyxFQUFDLHlCQUNoQ0ksd0JBQXdCRixJQUFBQSxpQkFBVSxFQUFDO0FBRTFCLFNBQVNKLGNBQWNPLFdBQVcsRUFBRUMsV0FBVztJQUM1RCxJQUFJQyxrQkFBa0I7SUFFdEIsSUFBTUMsYUFBYVAsZ0JBQWdCSSxjQUM3QkksZUFBZUgsWUFBWUksYUFBYSxDQUFDRjtJQUUvQ0YsWUFBWUssS0FBSyxDQUFDLEFBQUMsa0JBQThCLE9BQWJGLGNBQWEsaUJBQWVKO0lBRWhFLElBQU1PLFNBQVMsRUFBRSxFQUNYQyxpQkFBaUJDLGFBQWFOLFlBQVlJLFFBQVFOO0lBRXhELElBQUlPLGdCQUFnQjtRQUNsQixJQUFNRSxlQUFlQyxjQUFZLENBQUNDLGVBQWUsQ0FBQ1gsY0FDNUNZLGVBQWUsRUFBRSxFQUNqQkMsbUJBQW1CZixzQkFBc0JDLGNBQ3pDZSx1QkFBdUJDLG1CQUFtQkYsa0JBQWtCRCxjQUFjSDtRQUVoRixJQUFJSyxzQkFBc0I7WUFDeEIsSUFBTUUsY0FBYyxFQUFFLEVBQ2hCQyxpQkFBaUJwQixvQkFBb0JFLGNBQ3JDbUIscUJBQXFCQyxpQkFBaUJGLGdCQUFnQkQsYUFBYVA7WUFFekUsSUFBSVMsb0JBQW9CO2dCQUN0QixJQUFNRSxZQUFZM0IsZUFBZU0sY0FDM0JzQixrQkFBa0JDLElBQUFBLFlBQUssRUFBQ04sY0FDeEJPLGFBQWFGLGlCQUNiRyxnQkFBZ0JELFdBQVdFLGdCQUFnQixJQUMzQ0MsZ0JBQWdCQyxzQkFBYSxDQUFDQyxXQUFXLElBQ3pDQyxnQkFBZ0JDLFlBQVlWLFdBQVdJLGVBQWVFLGVBQWVqQjtnQkFFM0UsSUFBSW9CLGVBQWU7b0JBQ2pCLElBQU1ILGlCQUFnQkMsc0JBQWEsQ0FBQ0MsV0FBVyxJQUN6Q0csVUFBVUMsZ0JBQU8sQ0FBQ0MsMkRBQTJELENBQUMzQixRQUFRTSxjQUFjVyxZQUFZRyxnQkFBZTFCO29CQUVySUEsWUFBWWtDLFVBQVUsQ0FBQ0g7b0JBRXZCOUIsa0JBQWtCO2dCQUNwQjtZQUNGO1FBQ0Y7SUFDRjtJQUVBLElBQUlBLGlCQUFpQjtRQUNuQkQsWUFBWW1DLEtBQUssQ0FBQyxBQUFDLG9CQUFnQyxPQUFiaEMsY0FBYSxlQUFhSjtJQUNsRTtJQUVBLE9BQU9FO0FBQ1QifQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import TermForVariableSubstitution from "../substitution/termForVariable";
|
|
4
|
-
|
|
5
|
-
import { variableFromTermNode } from "../utilities/unify";
|
|
6
|
-
|
|
7
|
-
export default function unifyVariableWithTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB) {
|
|
8
|
-
let variableUnifiedWithTerm = false;
|
|
9
|
-
|
|
10
|
-
const substitution = substitutions.findSubstitutionByVariableNode(variableNodeA);
|
|
11
|
-
|
|
12
|
-
if (substitution !== null) {
|
|
13
|
-
const termNodeMatches = substitution.matchTermNode(termNodeB);
|
|
14
|
-
|
|
15
|
-
if (termNodeMatches) {
|
|
16
|
-
variableUnifiedWithTerm = true;
|
|
17
|
-
}
|
|
18
|
-
} else {
|
|
19
|
-
const variableA = localContextA.findVariableByVariableNode(variableNodeA),
|
|
20
|
-
variableB = variableFromTermNode(termNodeB, localContextB);
|
|
21
|
-
|
|
22
|
-
if (variableA === variableB) {
|
|
23
|
-
variableUnifiedWithTerm = true;
|
|
24
|
-
} else {
|
|
25
|
-
const termNode = termNodeB, ///
|
|
26
|
-
variableNode = variableNodeA, ///
|
|
27
|
-
termForVariableSubstitution = TermForVariableSubstitution.fromTernNodeAndVariableNode(termNode, variableNode, localContextA, localContextB),
|
|
28
|
-
substitution = termForVariableSubstitution; ///
|
|
29
|
-
|
|
30
|
-
substitutions.addSubstitution(substitution, localContextA, localContextB);
|
|
31
|
-
|
|
32
|
-
variableUnifiedWithTerm = true;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return variableUnifiedWithTerm;
|
|
37
|
-
}
|
package/src/verify/lemma.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Lemma from "../lemma";
|
|
4
|
-
// import verifyProof from "../verify/proof";
|
|
5
|
-
import LocalContext from "../context/local";
|
|
6
|
-
import Substitutions from "../substitutions";
|
|
7
|
-
// import verifyConsequent from "../verify/consequent";
|
|
8
|
-
// import verifySuppositions from "../verify/suppositions";
|
|
9
|
-
|
|
10
|
-
import { first } from "../utilities/array";
|
|
11
|
-
import { EMPTY_STRING } from "../constants";
|
|
12
|
-
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
13
|
-
|
|
14
|
-
const proofNodeQuery = nodeQuery("/lemma/proof!"),
|
|
15
|
-
labelNodesQuery = nodesQuery("/lemma/label"),
|
|
16
|
-
consequentNodeQuery = nodeQuery("/lemma/consequent!"),
|
|
17
|
-
suppositionsNodeQuery = nodesQuery("/lemma/supposition");
|
|
18
|
-
|
|
19
|
-
export default function verifyLemma(lemmaNode, fileContext) {
|
|
20
|
-
let lemmaVerified = false;
|
|
21
|
-
|
|
22
|
-
const labelNodes = labelNodesQuery(lemmaNode),
|
|
23
|
-
labelsString = fileContext.nodesAsString(labelNodes);
|
|
24
|
-
|
|
25
|
-
(labelsString === EMPTY_STRING) ?
|
|
26
|
-
fileContext.trace(`Verifying a lemma...`, lemmaNode) :
|
|
27
|
-
fileContext.trace(`Verifying the '${labelsString}' lemma...`, lemmaNode);
|
|
28
|
-
|
|
29
|
-
const labels = [],
|
|
30
|
-
labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
31
|
-
|
|
32
|
-
if (labelsVerified) {
|
|
33
|
-
const localContext = LocalContext.fromFileContext(fileContext),
|
|
34
|
-
suppositions = [],
|
|
35
|
-
suppositionNodes = suppositionsNodeQuery(lemmaNode),
|
|
36
|
-
suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
|
|
37
|
-
|
|
38
|
-
if (suppositionsVerified) {
|
|
39
|
-
const consequents = [],
|
|
40
|
-
consequentNode = consequentNodeQuery(lemmaNode),
|
|
41
|
-
consequentVerified = verifyConsequent(consequentNode, consequents, localContext);
|
|
42
|
-
|
|
43
|
-
if (consequentVerified) {
|
|
44
|
-
const proofNode = proofNodeQuery(lemmaNode),
|
|
45
|
-
firstConsequent = first(consequents),
|
|
46
|
-
consequent = firstConsequent, ///
|
|
47
|
-
statementNode = consequent.getStatementNode(),
|
|
48
|
-
substitutions = Substitutions.fromNothing(),
|
|
49
|
-
proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
|
|
50
|
-
|
|
51
|
-
if (proofVerified) {
|
|
52
|
-
const substitutions = Substitutions.fromNothing(),
|
|
53
|
-
lemma = Lemma.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext);
|
|
54
|
-
|
|
55
|
-
fileContext.addLemma(lemma);
|
|
56
|
-
|
|
57
|
-
lemmaVerified = true;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (lemmaVerified) {
|
|
64
|
-
(labelsString === EMPTY_STRING) ?
|
|
65
|
-
fileContext.debug(`...verified the lemma.`, lemmaNode) :
|
|
66
|
-
fileContext.debug(`...verified the '${labelsString}' lemma.`, lemmaNode);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return lemmaVerified;
|
|
70
|
-
}
|
package/src/verify/theorem.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Theorem from "../theorem";
|
|
4
|
-
// import verifyProof from "../verify/proof";
|
|
5
|
-
import LocalContext from "../context/local";
|
|
6
|
-
import Substitutions from "../substitutions";
|
|
7
|
-
// import verifyConsequent from "../verify/consequent";
|
|
8
|
-
// import verifySuppositions from "../verify/suppositions";
|
|
9
|
-
|
|
10
|
-
import { first } from "../utilities/array";
|
|
11
|
-
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
12
|
-
|
|
13
|
-
const proofNodeQuery = nodeQuery("/theorem/proof!"),
|
|
14
|
-
labelNodesQuery = nodesQuery("/theorem/label"),
|
|
15
|
-
consequentNodeQuery = nodeQuery("/theorem/consequent!"),
|
|
16
|
-
suppositionsNodeQuery = nodesQuery("/theorem/supposition");
|
|
17
|
-
|
|
18
|
-
export default function verifyTheorem(theoremNode, fileContext) {
|
|
19
|
-
let theoremVerified = false;
|
|
20
|
-
|
|
21
|
-
const labelNodes = labelNodesQuery(theoremNode),
|
|
22
|
-
labelsString = fileContext.nodesAsString(labelNodes);
|
|
23
|
-
|
|
24
|
-
fileContext.trace(`Verifying the '${labelsString}' theorem...`, theoremNode);
|
|
25
|
-
|
|
26
|
-
const labels = [],
|
|
27
|
-
labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
28
|
-
|
|
29
|
-
if (labelsVerified) {
|
|
30
|
-
const localContext = LocalContext.fromFileContext(fileContext),
|
|
31
|
-
suppositions = [],
|
|
32
|
-
suppositionNodes = suppositionsNodeQuery(theoremNode),
|
|
33
|
-
suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
|
|
34
|
-
|
|
35
|
-
if (suppositionsVerified) {
|
|
36
|
-
const consequents = [],
|
|
37
|
-
consequentNode = consequentNodeQuery(theoremNode),
|
|
38
|
-
consequentVerified = verifyConsequent(consequentNode, consequents, localContext);
|
|
39
|
-
|
|
40
|
-
if (consequentVerified) {
|
|
41
|
-
const proofNode = proofNodeQuery(theoremNode),
|
|
42
|
-
firstConsequent = first(consequents),
|
|
43
|
-
consequent = firstConsequent, ///
|
|
44
|
-
statementNode = consequent.getStatementNode(),
|
|
45
|
-
substitutions = Substitutions.fromNothing(),
|
|
46
|
-
proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
|
|
47
|
-
|
|
48
|
-
if (proofVerified) {
|
|
49
|
-
const substitutions = Substitutions.fromNothing(),
|
|
50
|
-
theorem = Theorem.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext);
|
|
51
|
-
|
|
52
|
-
fileContext.addTheorem(theorem);
|
|
53
|
-
|
|
54
|
-
theoremVerified = true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (theoremVerified) {
|
|
61
|
-
fileContext.debug(`...verified the '${labelsString}' theorem.`, theoremNode);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return theoremVerified;
|
|
65
|
-
}
|