occam-verify-cli 0.0.453 → 0.0.455
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/bin/utilities/fileSystem.js +15 -2
- package/lib/assertion.js +8 -1
- package/lib/context/file.js +42 -6
- package/lib/context/proof.js +25 -4
- package/lib/context/release/directory.js +16 -5
- package/lib/context/release/file.js +25 -11
- package/lib/kinds.js +5 -1
- package/lib/theorem.js +146 -0
- package/lib/variable.js +8 -1
- package/lib/verify/declaration/topLevel.js +7 -3
- package/lib/verify/derivation.js +112 -0
- package/lib/verify/equality.js +3 -16
- package/lib/verify/metaDerivation.js +47 -39
- package/lib/verify/proof.js +83 -0
- package/lib/verify/statement/unqualified.js +65 -4
- package/lib/verify/statement.js +2 -2
- package/lib/verify/term.js +12 -12
- package/lib/verify/termAsConstructor.js +2 -2
- package/lib/verify/theorem.js +57 -0
- package/package.json +3 -3
- package/src/assertion.js +8 -1
- package/src/context/file.js +45 -5
- package/src/context/proof.js +8 -4
- package/src/context/release/directory.js +17 -4
- package/src/context/release/file.js +29 -12
- package/src/kinds.js +1 -0
- package/src/theorem.js +130 -0
- package/src/variable.js +6 -0
- package/src/verify/assertion/type.js +25 -12
- package/src/verify/declaration/topLevel.js +7 -0
- package/src/verify/derivation.js +156 -0
- package/src/verify/equality.js +3 -22
- package/src/verify/metaDerivation.js +57 -45
- package/src/verify/proof.js +123 -0
- package/src/verify/statement/unqualified.js +69 -2
- package/src/verify/statement.js +2 -1
- package/src/verify/term.js +16 -17
- package/src/verify/termAsConstructor.js +1 -2
- package/src/verify/theorem.js +77 -0
- package/lib/verify/assertion/type.js +0 -104
|
@@ -103,7 +103,7 @@ function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
|
103
103
|
}
|
|
104
104
|
case _ruleNames.TERM_RULE_NAME:
|
|
105
105
|
{
|
|
106
|
-
var termNode = nonTerminalNode, types = [],
|
|
106
|
+
var termNode = nonTerminalNode, types = [], context = fileContext, termVerified = (0, _term.default)(termNode, types, context);
|
|
107
107
|
if (termVerified) {
|
|
108
108
|
var firstType = (0, _array.first)(types), type = firstType; ///
|
|
109
109
|
if (type !== null) {
|
|
@@ -125,4 +125,4 @@ function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
|
125
125
|
return nonTerminalNodeVerified;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgVEVSTV9SVUxFX05BTUUsIEFSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90eXBlXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUZXJtQXNDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdHlwZU5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yID0gZmFsc2U7XG5cbiAgZmlsZUNvbnRleHQuYmVnaW4odGVybU5vZGUpO1xuXG4gIGxldCB0eXBlID0gbnVsbDtcblxuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgaWYgKGNoaWxkTm9kZXNWZXJpZmllZCkge1xuICAgIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgICAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpO1xuXG4gICAgICB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gbm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlICcke3Rlcm1TdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke3R5cGVOYW1lfScgdHlwZSBpcyBtaXNzaW5nLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IG5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgICBmaWxlQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICB9XG5cbiAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA/XG4gICAgZmlsZUNvbnRleHQuY29tcGxldGUodGVybU5vZGUpIDpcbiAgICAgIGZpbGVDb250ZXh0LmhhbHQodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb2RlKG5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBub2RlVmVyaWZpZWQ7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IGNoaWxkTm9kZXNWZXJpZmllZCA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVWZXJpZmllZCA9IHZlcmlmeU5vZGUobm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgaWYgKG5vZGVWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlc1ZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCkge1xuICBjb25zdCB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRydWU7XG5cbiAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdHlwZU5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeShhcmd1bWVudE5vZGUpO1xuXG4gIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGFyZ3VtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlICR7YXJndW1lbnRTdHJpbmd9IGFyZ3VtZW50IHNob3VsZCBiZSBhIHR5cGUuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBmaWxlQ29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlIHR5cGUgJyR7dHlwZU5hbWV9JyBpcyBtaXNzaW5nLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHlwZU5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRFUk1fUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgdmFsdWVzID0gW10sXG4gICAgICAgICAgICBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHR5cGVzLCB2YWx1ZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICAgICAgdHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gbm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgICAgICAgIGZpbGVDb250ZXh0LmVycm9yKGBUaGUgdHlwZSBvZiB0aGUgY29uc3RydWN0b3IncyBjb21wb3VuZCAnJHt0ZXJtU3RyaW5nfScgdGVybSBub2RlIGlzIG5vdCBudWxsLmApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICBjaGlsZE5vZGVzVmVyaWZpZWQgPSB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGZpbGVDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBjaGlsZE5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtQXNDb25zdHJ1Y3RvciIsInR5cGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0ZXJtTm9kZSIsInR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yIiwiYmVnaW4iLCJ0eXBlIiwibm9uVGVybWluYWxOb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZpZWQiLCJ2ZXJpZnlDaGlsZE5vZGVzIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInRlcm1TdHJpbmciLCJub2RlQXNTdHJpbmciLCJlcnJvciIsImNvbnN0cnVjdG9yIiwiQ29uc3RydWN0b3IiLCJmcm9tVGVybU5vZGVBbmRUeXBlIiwiYWRkQ29uc3RydWN0b3IiLCJpbmZvIiwiY29tcGxldGUiLCJoYWx0IiwidmVyaWZ5Tm9kZSIsIm5vZGUiLCJub2RlVmVyaWZpZWQiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeVRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJ2ZXJpZnlBcmd1bWVudE5vZGUiLCJhcmd1bWVudE5vZGUiLCJ0eXBlTm9kZVZlcmlmaWVkIiwiYXJndW1lbnRTdHJpbmciLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIkFSR1VNRU5UX1JVTEVfTkFNRSIsImFyZ3VtZW50Tm9kZVZlcmlmaWVkIiwiVEVSTV9SVUxFX05BTUUiLCJ0eXBlcyIsInZhbHVlcyIsImNvbnRleHQiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwiZmlyc3RUeXBlIiwiZmlyc3QiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBd0JBOzs7eURBVkQ7Z0VBQ0M7cUJBRUY7c0JBQ087cUJBQ21CO3lCQUNHOzs7Ozs7QUFFbkQsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDO0FBRWpCLFNBQVNGLHdCQUF3QkcsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRTtJQUMvRSxJQUFJQyw0QkFBNEIsS0FBSztJQUVyQ0QsWUFBWUUsS0FBSyxDQUFDSjtJQUVsQixJQUFJSyxPQUFPLElBQUk7SUFFZixJQUFNQyxrQkFBa0JOLFVBQ2xCTyxhQUFhRCxnQkFBZ0JFLGFBQWEsSUFDMUNDLHFCQUFxQkMsaUJBQWlCSCxZQUFZTDtJQUV4RCxJQUFJTyxvQkFBb0I7UUFDdEIsSUFBSVIsYUFBYSxJQUFJLEVBQUU7WUFDckJFLDRCQUE0QixJQUFJO1FBQ2xDLE9BQU87WUFDTCxJQUFNUSxXQUFXQyxJQUFBQSwyQkFBb0IsRUFBQ1g7WUFFdENJLE9BQU9ILFlBQVlXLGtCQUFrQixDQUFDRjtZQUV0QyxJQUFJTixTQUFTLElBQUksRUFBRTtnQkFDakJGLDRCQUE0QixJQUFJO1lBQ2xDLE9BQU87Z0JBQ0wsSUFBTVcsYUFBYUMsSUFBQUEsb0JBQVksRUFBQ2Y7Z0JBRWhDRSxZQUFZYyxLQUFLLENBQUMsQUFBQyxRQUFxQ0wsT0FBOUJHLFlBQVcscUJBQTRCLE9BQVRILFVBQVM7WUFDbkUsQ0FB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
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgVEVSTV9SVUxFX05BTUUsIEFSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90eXBlXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUZXJtQXNDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdHlwZU5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yID0gZmFsc2U7XG5cbiAgZmlsZUNvbnRleHQuYmVnaW4odGVybU5vZGUpO1xuXG4gIGxldCB0eXBlID0gbnVsbDtcblxuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgaWYgKGNoaWxkTm9kZXNWZXJpZmllZCkge1xuICAgIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgICAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpO1xuXG4gICAgICB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gbm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlICcke3Rlcm1TdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke3R5cGVOYW1lfScgdHlwZSBpcyBtaXNzaW5nLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IG5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgICBmaWxlQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICB9XG5cbiAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA/XG4gICAgZmlsZUNvbnRleHQuY29tcGxldGUodGVybU5vZGUpIDpcbiAgICAgIGZpbGVDb250ZXh0LmhhbHQodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb2RlKG5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBub2RlVmVyaWZpZWQ7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IGNoaWxkTm9kZXNWZXJpZmllZCA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVWZXJpZmllZCA9IHZlcmlmeU5vZGUobm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgaWYgKG5vZGVWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlc1ZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCkge1xuICBjb25zdCB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRydWU7XG5cbiAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdHlwZU5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeShhcmd1bWVudE5vZGUpO1xuXG4gIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGFyZ3VtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlICR7YXJndW1lbnRTdHJpbmd9IGFyZ3VtZW50IHNob3VsZCBiZSBhIHR5cGUuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSBmaWxlQ29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlIHR5cGUgJyR7dHlwZU5hbWV9JyBpcyBtaXNzaW5nLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHlwZU5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRFUk1fUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgICB0eXBlID0gZmlyc3RUeXBlOyAvLy9cblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3RvcidzIGNvbXBvdW5kICcke3Rlcm1TdHJpbmd9JyB0ZXJtIG5vZGUgaXMgbm90IG51bGwuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB0cnVlOyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgZmlsZUNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGNoaWxkTm9kZXNWZXJpZmllZDsgLy8vXG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuIl0sIm5hbWVzIjpbInZlcmlmeVRlcm1Bc0NvbnN0cnVjdG9yIiwidHlwZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInRlcm1Ob2RlIiwidHlwZU5vZGUiLCJmaWxlQ29udGV4dCIsInRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IiLCJiZWdpbiIsInR5cGUiLCJub25UZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNoaWxkTm9kZXNWZXJpZmllZCIsInZlcmlmeUNoaWxkTm9kZXMiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsImVycm9yIiwiY29uc3RydWN0b3IiLCJDb25zdHJ1Y3RvciIsImZyb21UZXJtTm9kZUFuZFR5cGUiLCJhZGRDb25zdHJ1Y3RvciIsImluZm8iLCJjb21wbGV0ZSIsImhhbHQiLCJ2ZXJpZnlOb2RlIiwibm9kZSIsIm5vZGVWZXJpZmllZCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJldmVyeSIsImNoaWxkTm9kZSIsInZlcmlmeUFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50Tm9kZSIsInR5cGVOb2RlVmVyaWZpZWQiLCJhcmd1bWVudFN0cmluZyIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiQVJHVU1FTlRfUlVMRV9OQU1FIiwiYXJndW1lbnROb2RlVmVyaWZpZWQiLCJURVJNX1JVTEVfTkFNRSIsInR5cGVzIiwiY29udGV4dCIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm0iLCJmaXJzdFR5cGUiLCJmaXJzdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7Ozt5REFWRDtnRUFDQztxQkFFRjtzQkFDTztxQkFDbUI7eUJBQ0c7Ozs7OztBQUVuRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysd0JBQXdCRyxRQUFRLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFO0lBQy9FLElBQUlDLDRCQUE0QixLQUFLO0lBRXJDRCxZQUFZRSxLQUFLLENBQUNKO0lBRWxCLElBQUlLLE9BQU8sSUFBSTtJQUVmLElBQU1DLGtCQUFrQk4sVUFDbEJPLGFBQWFELGdCQUFnQkUsYUFBYSxJQUMxQ0MscUJBQXFCQyxpQkFBaUJILFlBQVlMO0lBRXhELElBQUlPLG9CQUFvQjtRQUN0QixJQUFJUixhQUFhLElBQUksRUFBRTtZQUNyQkUsNEJBQTRCLElBQUk7UUFDbEMsT0FBTztZQUNMLElBQU1RLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDWDtZQUV0Q0ksT0FBT0gsWUFBWVcsa0JBQWtCLENBQUNGO1lBRXRDLElBQUlOLFNBQVMsSUFBSSxFQUFFO2dCQUNqQkYsNEJBQTRCLElBQUk7WUFDbEMsT0FBTztnQkFDTCxJQUFNVyxhQUFhQyxJQUFBQSxvQkFBWSxFQUFDZjtnQkFFaENFLFlBQVljLEtBQUssQ0FBQyxBQUFDLFFBQXFDTCxPQUE5QkcsWUFBVyxxQkFBNEIsT0FBVEgsVUFBUztZQUNuRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJUiwyQkFBMkI7UUFD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
|
|
@@ -0,0 +1,57 @@
|
|
|
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__*/ _interopRequireDefault(require("../theorem"));
|
|
12
|
+
var _labels = /*#__PURE__*/ _interopRequireDefault(require("../verify/labels"));
|
|
13
|
+
var _proof = /*#__PURE__*/ _interopRequireDefault(require("../context/proof"));
|
|
14
|
+
var _unqualified = /*#__PURE__*/ _interopRequireDefault(require("../verify/statement/unqualified"));
|
|
15
|
+
var _indicativeConditional = /*#__PURE__*/ _interopRequireDefault(require("../verify/indicativeConditional"));
|
|
16
|
+
var _array = require("../utilities/array");
|
|
17
|
+
var _string = require("../utilities/string");
|
|
18
|
+
var _query = require("../utilities/query");
|
|
19
|
+
function _interopRequireDefault(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
var labelNodesQuery = (0, _query.nodesQuery)("/theorem/label"), statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!"), statementNodesQuery = (0, _query.nodesQuery)("/indicativeConditional/unqualifiedStatement/statement!"), unqualifiedStatementNodeQuery = (0, _query.nodeQuery)("/theorem/unqualifiedStatement!"), indicativeConditionalNodeQuery = (0, _query.nodeQuery)("/theorem/indicativeConditional!");
|
|
25
|
+
function verifyTheorem(theoremNode, fileContext) {
|
|
26
|
+
var theoremVerified = false;
|
|
27
|
+
fileContext.begin(theoremNode);
|
|
28
|
+
var labelNodes = labelNodesQuery(theoremNode), labelsString = (0, _string.nodesAsString)(labelNodes), proofContext = _proof.default.fromFileContext(fileContext);
|
|
29
|
+
fileContext.debug("Verifying the '".concat(labelsString, "' theorem..."));
|
|
30
|
+
var labels = [], labelsVerified = (0, _labels.default)(labelNodes, labels, fileContext);
|
|
31
|
+
if (labelsVerified) {
|
|
32
|
+
var unqualifiedStatementNode = unqualifiedStatementNodeQuery(theoremNode), indicativeConditionalNode = indicativeConditionalNodeQuery(theoremNode);
|
|
33
|
+
if (unqualifiedStatementNode !== null) {
|
|
34
|
+
var unqualifiedStatementVerified = (0, _unqualified.default)(unqualifiedStatementNode, proofContext);
|
|
35
|
+
if (unqualifiedStatementVerified) {
|
|
36
|
+
var statementNode = statementNodeQuery(unqualifiedStatementNode), theorem = _theorem.default.fromLabelsAndStatementNode(labels, statementNode);
|
|
37
|
+
fileContext.addTheorem(theorem);
|
|
38
|
+
theoremVerified = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (indicativeConditionalNode !== null) {
|
|
42
|
+
var indicativeConditionalVerified = (0, _indicativeConditional.default)(indicativeConditionalNode, proofContext);
|
|
43
|
+
if (indicativeConditionalVerified !== null) {
|
|
44
|
+
var statementNodes = statementNodesQuery(indicativeConditionalNode), lastStatementNode = (0, _array.last)(statementNodes), frontStatementNodes = (0, _array.front)(statementNodes), consequentStatementNode = lastStatementNode, suppositionStatementNodes = frontStatementNodes, theorem1 = _theorem.default.fromLabelsSuppositionStatementNodesAndConsequentStatementNode(labels, suppositionStatementNodes, consequentStatementNode);
|
|
45
|
+
fileContext.addTheorem(theorem1);
|
|
46
|
+
theoremVerified = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (theoremVerified) {
|
|
51
|
+
fileContext.info("Verified the '".concat(labelsString, "' theorem."));
|
|
52
|
+
}
|
|
53
|
+
theoremVerified ? fileContext.complete(theoremNode) : fileContext.halt(theoremNode);
|
|
54
|
+
return theoremVerified;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4uL3RoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlMYWJlbHMgZnJvbSBcIi4uL3ZlcmlmeS9sYWJlbHNcIjtcbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudC91bnF1YWxpZmllZFwiO1xuaW1wb3J0IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbCBmcm9tIFwiLi4vdmVyaWZ5L2luZGljYXRpdmVDb25kaXRpb25hbFwiO1xuXG5pbXBvcnQgeyBmcm9udCwgbGFzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVzQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBsYWJlbE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3RoZW9yZW0vbGFiZWxcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL2luZGljYXRpdmVDb25kaXRpb25hbC91bnF1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbS91bnF1YWxpZmllZFN0YXRlbWVudCFcIiksXG4gICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbS9pbmRpY2F0aXZlQ29uZGl0aW9uYWwhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUaGVvcmVtKHRoZW9yZW1Ob2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdGhlb3JlbVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgZmlsZUNvbnRleHQuYmVnaW4odGhlb3JlbU5vZGUpO1xuXG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBub2Rlc0FzU3RyaW5nKGxhYmVsTm9kZXMpLFxuICAgICAgICBwcm9vZkNvbnRleHQgPSBQcm9vZkNvbnRleHQuZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KTtcblxuICBmaWxlQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyB0aGVvcmVtLi4uYCk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsTm9kZXMsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5KHRoZW9yZW1Ob2RlKSxcbiAgICAgICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlID0gaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZVF1ZXJ5KHRoZW9yZW1Ob2RlKTtcblxuICAgIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUxhYmVsc0FuZFN0YXRlbWVudE5vZGUobGFiZWxzLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5hZGRUaGVvcmVtKHRoZW9yZW0pO1xuXG4gICAgICAgIHRoZW9yZW1WZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGluZGljYXRpdmVDb25kaXRpb25hbFZlcmlmaWVkID0gdmVyaWZ5SW5kaWNhdGl2ZUNvbmRpdGlvbmFsKGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmIChpbmRpY2F0aXZlQ29uZGl0aW9uYWxWZXJpZmllZCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlcyA9IHN0YXRlbWVudE5vZGVzUXVlcnkoaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSksXG4gICAgICAgICAgICAgIGxhc3RTdGF0ZW1lbnROb2RlID0gbGFzdChzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICAgIGZyb250U3RhdGVtZW50Tm9kZXMgPSBmcm9udChzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlID0gbGFzdFN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlcyA9IGZyb250U3RhdGVtZW50Tm9kZXMsICAvLy9cbiAgICAgICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUxhYmVsc1N1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNBbmRDb25zZXF1ZW50U3RhdGVtZW50Tm9kZShsYWJlbHMsIHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXMsIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5hZGRUaGVvcmVtKHRoZW9yZW0pO1xuXG4gICAgICAgIHRoZW9yZW1WZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoZW9yZW1WZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyB0aGVvcmVtLmApO1xuICB9XG5cbiAgdGhlb3JlbVZlcmlmaWVkID9cbiAgICBmaWxlQ29udGV4dC5jb21wbGV0ZSh0aGVvcmVtTm9kZSkgOlxuICAgICAgZmlsZUNvbnRleHQuaGFsdCh0aGVvcmVtTm9kZSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUaGVvcmVtIiwibGFiZWxOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVzUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSIsImluZGljYXRpdmVDb25kaXRpb25hbE5vZGVRdWVyeSIsInRoZW9yZW1Ob2RlIiwiZmlsZUNvbnRleHQiLCJ0aGVvcmVtVmVyaWZpZWQiLCJiZWdpbiIsImxhYmVsTm9kZXMiLCJsYWJlbHNTdHJpbmciLCJub2Rlc0FzU3RyaW5nIiwicHJvb2ZDb250ZXh0IiwiUHJvb2ZDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwiZGVidWciLCJsYWJlbHMiLCJsYWJlbHNWZXJpZmllZCIsInZlcmlmeUxhYmVscyIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImluZGljYXRpdmVDb25kaXRpb25hbE5vZGUiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidGhlb3JlbSIsIlRoZW9yZW0iLCJmcm9tTGFiZWxzQW5kU3RhdGVtZW50Tm9kZSIsImFkZFRoZW9yZW0iLCJpbmRpY2F0aXZlQ29uZGl0aW9uYWxWZXJpZmllZCIsInZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbCIsInN0YXRlbWVudE5vZGVzIiwibGFzdFN0YXRlbWVudE5vZGUiLCJsYXN0IiwiZnJvbnRTdGF0ZW1lbnROb2RlcyIsImZyb250IiwiY29uc2VxdWVudFN0YXRlbWVudE5vZGUiLCJzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNBbmRDb25zZXF1ZW50U3RhdGVtZW50Tm9kZSIsImluZm8iLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWtCQTs7O2VBQXdCQTs7OzREQWhCSjsyREFDSzswREFDQTtnRUFDYzswRUFDQztxQkFFWjtzQkFDRTtxQkFDUTs7Ozs7O0FBRXRDLElBQU1DLGtCQUFrQkMsSUFBQUEsaUJBQVUsRUFBQyxtQkFDN0JDLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyxxQ0FDL0JDLHNCQUFzQkgsSUFBQUEsaUJBQVUsRUFBQywyREFDakNJLGdDQUFnQ0YsSUFBQUEsZ0JBQVMsRUFBQyxtQ0FDMUNHLGlDQUFpQ0gsSUFBQUEsZ0JBQVMsRUFBQztBQUVsQyxTQUFTSixjQUFjUSxXQUFXLEVBQUVDLFdBQVcsRUFBRTtJQUM5RCxJQUFJQyxrQkFBa0IsS0FBSztJQUUzQkQsWUFBWUUsS0FBSyxDQUFDSDtJQUVsQixJQUFNSSxhQUFhWCxnQkFBZ0JPLGNBQzdCSyxlQUFlQyxJQUFBQSxxQkFBYSxFQUFDRixhQUM3QkcsZUFBZUMsY0FBWSxDQUFDQyxlQUFlLENBQUNSO0lBRWxEQSxZQUFZUyxLQUFLLENBQUMsQUFBQyxrQkFBOEIsT0FBYkwsY0FBYTtJQUVqRCxJQUFNTSxTQUFTLEVBQUUsRUFDWEMsaUJBQWlCQyxJQUFBQSxlQUFZLEVBQUNULFlBQVlPLFFBQVFWO0lBRXhELElBQUlXLGdCQUFnQjtRQUNsQixJQUFNRSwyQkFBMkJoQiw4QkFBOEJFLGNBQ3pEZSw0QkFBNEJoQiwrQkFBK0JDO1FBRWpFLElBQUljLDZCQUE2QixJQUFJLEVBQUU7WUFDckMsSUFBTUUsK0JBQStCQyxJQUFBQSxvQkFBMEIsRUFBQ0gsMEJBQTBCUDtZQUUxRixJQUFJUyw4QkFBOEI7Z0JBQ2hDLElBQU1FLGdCQUFnQnZCLG1CQUFtQm1CLDJCQUNuQ0ssVUFBVUMsZ0JBQU8sQ0FBQ0MsMEJBQTBCLENBQUNWLFFBQVFPO2dCQUUzRGpCLFlBQVlxQixVQUFVLENBQUNIO2dCQUV2QmpCLGtCQUFrQixJQUFJO1lBQ3hCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSWEsOEJBQThCLElBQUksRUFBRTtZQUN0QyxJQUFNUSxnQ0FBZ0NDLElBQUFBLDhCQUEyQixFQUFDVCwyQkFBMkJSO1lBRTdGLElBQUlnQixrQ0FBa0MsSUFBSSxFQUFFO2dCQUMxQyxJQUFNRSxpQkFBaUI1QixvQkFBb0JrQiw0QkFDckNXLG9CQUFvQkMsSUFBQUEsV0FBSSxFQUFDRixpQkFDekJHLHNCQUFzQkMsSUFBQUEsWUFBSyxFQUFDSixpQkFDNUJLLDBCQUEwQkosbUJBQzFCSyw0QkFBNEJILHFCQUM1QlQsV0FBVUMsZ0JBQU8sQ0FBQ1ksNkRBQTZELENBQUNyQixRQUFRb0IsMkJBQTJCRDtnQkFFekg3QixZQUFZcUIsVUFBVSxDQUFDSDtnQkFFdkJqQixrQkFBa0IsSUFBSTtZQUN4QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJQSxpQkFBaUI7UUFDbkJELFlBQVlnQyxJQUFJLENBQUMsQUFBQyxpQkFBNkIsT0FBYjVCLGNBQWE7SUFDakQsQ0FBQztJQUVESCxrQkFDRUQsWUFBWWlDLFFBQVEsQ0FBQ2xDLGVBQ25CQyxZQUFZa0MsSUFBSSxDQUFDbkMsWUFBWTtJQUVqQyxPQUFPRTtBQUNUIn0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.455",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.21",
|
|
14
14
|
"necessary": "^11.2.1",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
15
|
+
"occam-custom-grammars": "^5.0.370",
|
|
16
16
|
"occam-dom": "^3.0.171",
|
|
17
|
-
"occam-file-system": "^5.0.
|
|
17
|
+
"occam-file-system": "^5.0.129",
|
|
18
18
|
"occam-grammar-utilities": "^7.0.66"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
package/src/assertion.js
CHANGED
|
@@ -49,6 +49,13 @@ export default class Assertion {
|
|
|
49
49
|
return assertion;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
static fromStatementNode(statementNode) {
|
|
53
|
+
const subproofNode = null,
|
|
54
|
+
assertion = new Assertion(subproofNode, statementNode);
|
|
55
|
+
|
|
56
|
+
return assertion;
|
|
57
|
+
}
|
|
58
|
+
|
|
52
59
|
static fromQualifiedStatementNode(qualifiedStatementNode) {
|
|
53
60
|
const subproofNode = null,
|
|
54
61
|
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
@@ -95,7 +102,7 @@ function matchAssertionChildNodes(assertionChildNodes, childNodes) {
|
|
|
95
102
|
let assertionChildNodesMatches = false;
|
|
96
103
|
|
|
97
104
|
const childNodesLength = childNodes.length,
|
|
98
|
-
|
|
105
|
+
assertionChildNodesLength = assertionChildNodes.length;
|
|
99
106
|
|
|
100
107
|
if (childNodesLength === assertionChildNodesLength) {
|
|
101
108
|
assertionChildNodesMatches = childNodes.every((childNode, index) => {
|
package/src/context/file.js
CHANGED
|
@@ -6,7 +6,7 @@ import { push } from "../utilities/array";
|
|
|
6
6
|
import { leastLineIndexFromNodeAndTokens, greatestLineIndexFromNodeAndTokens } from "../utilities/tokens";
|
|
7
7
|
|
|
8
8
|
export default class FileContext {
|
|
9
|
-
constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, variables, combinators, constructors) {
|
|
9
|
+
constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, variables, combinators, constructors) {
|
|
10
10
|
this.releaseContext = releaseContext;
|
|
11
11
|
this.filePath = filePath;
|
|
12
12
|
this.tokens = tokens;
|
|
@@ -15,6 +15,7 @@ export default class FileContext {
|
|
|
15
15
|
this.rules = rules;
|
|
16
16
|
this.axioms = axioms;
|
|
17
17
|
this.lemmas = lemmas;
|
|
18
|
+
this.theorems = theorems;
|
|
18
19
|
this.variables = variables;
|
|
19
20
|
this.combinators = combinators;
|
|
20
21
|
this.constructors = constructors;
|
|
@@ -61,6 +62,12 @@ export default class FileContext {
|
|
|
61
62
|
push(labels, lemmaLabels);
|
|
62
63
|
});
|
|
63
64
|
|
|
65
|
+
this.theorems.forEach((theorem) => {
|
|
66
|
+
const theoremLabels = theorem.getLabels();
|
|
67
|
+
|
|
68
|
+
push(labels, theoremLabels);
|
|
69
|
+
});
|
|
70
|
+
|
|
64
71
|
if (includeRelease) {
|
|
65
72
|
const releaseContextLabels = this.releaseContext.getLabels();
|
|
66
73
|
|
|
@@ -126,6 +133,20 @@ export default class FileContext {
|
|
|
126
133
|
return lemmas;
|
|
127
134
|
}
|
|
128
135
|
|
|
136
|
+
getTheorems(includeRelease = true) {
|
|
137
|
+
const theorems = [];
|
|
138
|
+
|
|
139
|
+
push(theorems, this.theorems);
|
|
140
|
+
|
|
141
|
+
if (includeRelease) {
|
|
142
|
+
const releaseContextTheorems = this.releaseContext.getTheorems();
|
|
143
|
+
|
|
144
|
+
push(theorems, releaseContextTheorems);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return theorems;
|
|
148
|
+
}
|
|
149
|
+
|
|
129
150
|
getCombinators(includeRelease = true) {
|
|
130
151
|
const combinators = [];
|
|
131
152
|
|
|
@@ -235,6 +256,20 @@ export default class FileContext {
|
|
|
235
256
|
return lemma;
|
|
236
257
|
}
|
|
237
258
|
|
|
259
|
+
findTheoremByReferenceName(referenceName) {
|
|
260
|
+
const labelName = referenceName, ///
|
|
261
|
+
theorems = this.getTheorems(),
|
|
262
|
+
theorem = theorems.find((theorem) => {
|
|
263
|
+
const theoremMatchesLabelName = theorem.matchLabelName(labelName);
|
|
264
|
+
|
|
265
|
+
if (theoremMatchesLabelName) {
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
}) || null;
|
|
269
|
+
|
|
270
|
+
return theorem;
|
|
271
|
+
}
|
|
272
|
+
|
|
238
273
|
findVariableByVariableName(variableName) {
|
|
239
274
|
const name = variableName, ///
|
|
240
275
|
variables = this.getVariables(),
|
|
@@ -286,6 +321,10 @@ export default class FileContext {
|
|
|
286
321
|
this.lemmas.push(lemma);
|
|
287
322
|
}
|
|
288
323
|
|
|
324
|
+
addTheorem(theorem) {
|
|
325
|
+
this.theorems.push(theorem);
|
|
326
|
+
}
|
|
327
|
+
|
|
289
328
|
addVariable(variable) {
|
|
290
329
|
this.variables.push(variable);
|
|
291
330
|
}
|
|
@@ -352,10 +391,10 @@ export default class FileContext {
|
|
|
352
391
|
json.push(axiomJSON);
|
|
353
392
|
});
|
|
354
393
|
|
|
355
|
-
this.
|
|
356
|
-
const
|
|
394
|
+
this.theorems.forEach((theorem) => {
|
|
395
|
+
const theoremJSON = theorem.toJSON();
|
|
357
396
|
|
|
358
|
-
json.push(
|
|
397
|
+
json.push(theoremJSON);
|
|
359
398
|
});
|
|
360
399
|
|
|
361
400
|
this.combinators.forEach((combinator) => {
|
|
@@ -385,10 +424,11 @@ export default class FileContext {
|
|
|
385
424
|
rules = [],
|
|
386
425
|
axioms = [],
|
|
387
426
|
lemmas = [],
|
|
427
|
+
theorems = [],
|
|
388
428
|
variables = [],
|
|
389
429
|
combinators = [],
|
|
390
430
|
constructors = [],
|
|
391
|
-
fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, variables, combinators, constructors);
|
|
431
|
+
fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, variables, combinators, constructors);
|
|
392
432
|
|
|
393
433
|
return fileContext;
|
|
394
434
|
}
|
package/src/context/proof.js
CHANGED
|
@@ -37,6 +37,10 @@ class ProofContext {
|
|
|
37
37
|
|
|
38
38
|
getAxioms() { return this.context.getAxioms(); }
|
|
39
39
|
|
|
40
|
+
getLemmas() { return this.context.getLemmas(); }
|
|
41
|
+
|
|
42
|
+
getTheorems() { return this.context.getTheorems(); }
|
|
43
|
+
|
|
40
44
|
getCombinators() { return this.context.getCombinators(); }
|
|
41
45
|
|
|
42
46
|
getConstructors() { return this.context.getConstructors(); }
|
|
@@ -54,10 +58,6 @@ class ProofContext {
|
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
setDerived(derived) {
|
|
57
|
-
if (derived) {
|
|
58
|
-
this.statementNodes.pop();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
61
|
this.derived = derived;
|
|
62
62
|
}
|
|
63
63
|
|
|
@@ -119,6 +119,10 @@ class ProofContext {
|
|
|
119
119
|
|
|
120
120
|
findAxiomByReferenceName(referenceName) { return this.context.findAxiomByReferenceName(referenceName); }
|
|
121
121
|
|
|
122
|
+
findLemmaByReferenceName(referenceName) { return this.context.findLemmaByReferenceName(referenceName); }
|
|
123
|
+
|
|
124
|
+
findTheoremByReferenceName(referenceName) { return this.context.findTheoremByReferenceName(referenceName); }
|
|
125
|
+
|
|
122
126
|
isLabelPresentByLabelName(labelName) { return this.context.isLabelPresentByLabelName(labelName); }
|
|
123
127
|
|
|
124
128
|
isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
|
|
@@ -112,7 +112,7 @@ export default class DirectoryReleaseContext extends ReleaseContext {
|
|
|
112
112
|
return axioms;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
getLemmas(
|
|
115
|
+
getLemmas() {
|
|
116
116
|
const lemmas = [];
|
|
117
117
|
|
|
118
118
|
this.fileContexts.forEach((fileContext) => {
|
|
@@ -122,18 +122,31 @@ export default class DirectoryReleaseContext extends ReleaseContext {
|
|
|
122
122
|
push(lemmas, fileContextLemmas);
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
+
return lemmas;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
getTheorems(includeDependencies = true) {
|
|
129
|
+
const theorems = [];
|
|
130
|
+
|
|
131
|
+
this.fileContexts.forEach((fileContext) => {
|
|
132
|
+
const includeRelease = false,
|
|
133
|
+
fileContextTheorems = fileContext.getTheorems(includeRelease);
|
|
134
|
+
|
|
135
|
+
push(theorems, fileContextTheorems);
|
|
136
|
+
});
|
|
137
|
+
|
|
125
138
|
if (includeDependencies) {
|
|
126
139
|
const dependencyReleaseContexts = this.getDependencyReleaseContexts();
|
|
127
140
|
|
|
128
141
|
dependencyReleaseContexts.forEach((releaseContext) => {
|
|
129
142
|
const includeDependencies = false,
|
|
130
|
-
|
|
143
|
+
releaseContextTheorems = releaseContext.getTheorems(includeDependencies);
|
|
131
144
|
|
|
132
|
-
push(
|
|
145
|
+
push(theorems, releaseContextTheorems);
|
|
133
146
|
});
|
|
134
147
|
}
|
|
135
148
|
|
|
136
|
-
return
|
|
149
|
+
return theorems;
|
|
137
150
|
}
|
|
138
151
|
|
|
139
152
|
getCombinators(includeDependencies = true) {
|
|
@@ -7,21 +7,23 @@ import { rewriteNodes } from "occam-grammar-utilities";
|
|
|
7
7
|
import Rule from "../../rule";
|
|
8
8
|
import Type from "../../type";
|
|
9
9
|
import Axiom from "../../axiom";
|
|
10
|
+
import Theorem from "../../theorem";
|
|
10
11
|
import Combinator from "../../combinator";
|
|
11
12
|
import Constructor from "../../constructor";
|
|
12
13
|
|
|
13
14
|
import { push } from "../../utilities/array";
|
|
14
15
|
import { customGrammarFromNameAndEntries } from "../../utilities/customGrammar";
|
|
15
|
-
import { RULE_KIND, TYPE_KIND, AXIOM_KIND,
|
|
16
|
+
import { RULE_KIND, TYPE_KIND, AXIOM_KIND, THEOREM_KIND, COMBINATOR_KIND, CONSTRUCTOR_KIND } from "../../kinds";
|
|
16
17
|
|
|
17
18
|
export default class FileReleaseContext extends ReleaseContext {
|
|
18
|
-
constructor(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, dependencyReleaseContexts, contextJSON, types, rules, axioms, lemmas, combinators, constructors) {
|
|
19
|
+
constructor(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, dependencyReleaseContexts, contextJSON, types, rules, axioms, lemmas, theorems, combinators, constructors) {
|
|
19
20
|
super(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, dependencyReleaseContexts);
|
|
20
21
|
|
|
21
22
|
this.types = types;
|
|
22
23
|
this.rules = rules;
|
|
23
24
|
this.axioms = axioms;
|
|
24
25
|
this.lemmas = lemmas;
|
|
26
|
+
this.theorems = theorems;
|
|
25
27
|
this.combinators = combinators;
|
|
26
28
|
this.constructors = constructors;
|
|
27
29
|
this.contextJSON = contextJSON;
|
|
@@ -46,6 +48,12 @@ export default class FileReleaseContext extends ReleaseContext {
|
|
|
46
48
|
push(labels, axiomLabels);
|
|
47
49
|
});
|
|
48
50
|
|
|
51
|
+
this.theorems.forEach((theorem) => {
|
|
52
|
+
const theoremLabels = theorem.getLabels();
|
|
53
|
+
|
|
54
|
+
push(labels, theoremLabels);
|
|
55
|
+
});
|
|
56
|
+
|
|
49
57
|
if (includeDependencies) {
|
|
50
58
|
const dependencyReleaseContexts = this.getDependencyReleaseContexts();
|
|
51
59
|
|
|
@@ -117,23 +125,31 @@ export default class FileReleaseContext extends ReleaseContext {
|
|
|
117
125
|
return axioms;
|
|
118
126
|
}
|
|
119
127
|
|
|
120
|
-
getLemmas(
|
|
121
|
-
const
|
|
128
|
+
getLemmas() {
|
|
129
|
+
const theorems = [];
|
|
130
|
+
|
|
131
|
+
push(theorems, this.theorems);
|
|
132
|
+
|
|
133
|
+
return theorems;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
getTheorems(includeDependencies = true) {
|
|
137
|
+
const theorems = [];
|
|
122
138
|
|
|
123
|
-
push(
|
|
139
|
+
push(theorems, this.theorems);
|
|
124
140
|
|
|
125
141
|
if (includeDependencies) {
|
|
126
142
|
const dependencyReleaseContexts = this.getDependencyReleaseContexts();
|
|
127
143
|
|
|
128
144
|
dependencyReleaseContexts.forEach((releaseContext) => {
|
|
129
145
|
const includeDependencies = false,
|
|
130
|
-
|
|
146
|
+
releaseContextTheorems = releaseContext.getTheorems(includeDependencies);
|
|
131
147
|
|
|
132
|
-
push(
|
|
148
|
+
push(theorems, releaseContextTheorems);
|
|
133
149
|
});
|
|
134
150
|
}
|
|
135
151
|
|
|
136
|
-
return
|
|
152
|
+
return theorems;
|
|
137
153
|
}
|
|
138
154
|
|
|
139
155
|
getCombinators(includeDependencies = true) {
|
|
@@ -221,10 +237,10 @@ export default class FileReleaseContext extends ReleaseContext {
|
|
|
221
237
|
break;
|
|
222
238
|
}
|
|
223
239
|
|
|
224
|
-
case
|
|
225
|
-
const
|
|
240
|
+
case THEOREM_KIND: {
|
|
241
|
+
const theorem = Theorem.fromJSON(json, releaseContext);
|
|
226
242
|
|
|
227
|
-
this.
|
|
243
|
+
this.theorems.push(theorem);
|
|
228
244
|
|
|
229
245
|
break;
|
|
230
246
|
}
|
|
@@ -258,9 +274,10 @@ export default class FileReleaseContext extends ReleaseContext {
|
|
|
258
274
|
rules = [],
|
|
259
275
|
axioms = [],
|
|
260
276
|
lemmas = [],
|
|
277
|
+
theorems = [],
|
|
261
278
|
combinators = [],
|
|
262
279
|
constructors = [],
|
|
263
|
-
releaseContext = new FileReleaseContext(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, dependencyReleaseContexts, contextJSON, types, rules, axioms, lemmas, combinators, constructors);
|
|
280
|
+
releaseContext = new FileReleaseContext(log, name, entries, callbacks, verified, customGrammar, florenceLexer, florenceParser, dependencyReleaseContexts, contextJSON, types, rules, axioms, lemmas, theorems, combinators, constructors);
|
|
264
281
|
|
|
265
282
|
return releaseContext;
|
|
266
283
|
}
|
package/src/kinds.js
CHANGED
|
@@ -4,5 +4,6 @@ export const TYPE_KIND = "type";
|
|
|
4
4
|
export const RULE_KIND = "rule";
|
|
5
5
|
export const AXIOM_KIND = "axiom";
|
|
6
6
|
export const LEMMA_KIND = "lemma";
|
|
7
|
+
export const THEOREM_KIND = "theorem";
|
|
7
8
|
export const COMBINATOR_KIND = "combinator";
|
|
8
9
|
export const CONSTRUCTOR_KIND = "constructor";
|
package/src/theorem.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Label from "./label";
|
|
4
|
+
|
|
5
|
+
import { THEOREM_KIND } from "./kinds";
|
|
6
|
+
import { nodeAsString } from "./utilities/string";
|
|
7
|
+
|
|
8
|
+
import { statementNodeFromStatementJSON } from "./utilities/node";
|
|
9
|
+
|
|
10
|
+
export default class Theorem {
|
|
11
|
+
constructor(labels, statementNode, suppositionStatementNodes, consequentStatementNode) {
|
|
12
|
+
this.labels = labels;
|
|
13
|
+
this.statementNode = statementNode;
|
|
14
|
+
this.suppositionStatementNodes = suppositionStatementNodes;
|
|
15
|
+
this.consequentStatementNode = consequentStatementNode;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getLabels() {
|
|
19
|
+
return this.labels;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getStatementNode() {
|
|
23
|
+
return this.statementNode;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getSuppositionStatementNodes() {
|
|
27
|
+
return this.suppositionStatementNodes;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getConsequentStatementNode() {
|
|
31
|
+
return this.consequentStatementNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
matchLabelName(labelName) {
|
|
35
|
+
const matchesLabelName = this.labels.some((label) => {
|
|
36
|
+
const name = labelName, ///
|
|
37
|
+
labelMatchesName = label.matchName(name);
|
|
38
|
+
|
|
39
|
+
if (labelMatchesName) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return matchesLabelName;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
toJSON() {
|
|
48
|
+
const labelsJSON = this.labels.map((label) => {
|
|
49
|
+
const labelJSON = label.toJSON();
|
|
50
|
+
|
|
51
|
+
return labelJSON;
|
|
52
|
+
}),
|
|
53
|
+
statementString = nodeAsString(this.statementNode),
|
|
54
|
+
consequentStatementString = nodeAsString(this.consequentStatementNode),
|
|
55
|
+
suppositionStatementStrings = this.suppositionStatementNodes.map((suppositionStatementNode) => {
|
|
56
|
+
const suppositionStatementString = nodeAsString(suppositionStatementNode);
|
|
57
|
+
|
|
58
|
+
return suppositionStatementString;
|
|
59
|
+
}),
|
|
60
|
+
kind = THEOREM_KIND,
|
|
61
|
+
labels = labelsJSON, ///
|
|
62
|
+
statement = statementString, ///
|
|
63
|
+
consequent = consequentStatementString, ///
|
|
64
|
+
suppositions = suppositionStatementStrings, ///
|
|
65
|
+
json = {
|
|
66
|
+
kind,
|
|
67
|
+
labels,
|
|
68
|
+
statement,
|
|
69
|
+
consequent,
|
|
70
|
+
suppositions
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
return json;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static fromJSON(json, releaseContext) {
|
|
77
|
+
let { labels } = json;
|
|
78
|
+
|
|
79
|
+
const labelsJSON = labels; ///
|
|
80
|
+
|
|
81
|
+
labels = labelsJSON.map((labelJSON) => {
|
|
82
|
+
const json = labelJSON, ///
|
|
83
|
+
label = Label.fromJSON(json, releaseContext);
|
|
84
|
+
|
|
85
|
+
return label;
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const { statement, suppositions, consequent } = json;
|
|
89
|
+
|
|
90
|
+
let theorem;
|
|
91
|
+
|
|
92
|
+
if (statement !== null) {
|
|
93
|
+
const statementJSON = statement, ///
|
|
94
|
+
statementNode = statementNodeFromStatementJSON(statementJSON, releaseContext),
|
|
95
|
+
suppositionStatementNodes = null,
|
|
96
|
+
consequentStatementNode = null;
|
|
97
|
+
|
|
98
|
+
theorem = new Theorem(labels, statementNode, suppositionStatementNodes, consequentStatementNode);
|
|
99
|
+
} else {
|
|
100
|
+
const statementNode = null,
|
|
101
|
+
suppositionStatementsJSON = suppositions, ///
|
|
102
|
+
suppositionStatementNodes = suppositionStatementsJSON.map((suppositionStatementJSON) => {
|
|
103
|
+
const suppositionStatementNode = statementNodeFromStatementJSON(suppositionStatementJSON, releaseContext);
|
|
104
|
+
|
|
105
|
+
return suppositionStatementNode;
|
|
106
|
+
}),
|
|
107
|
+
consequentStatementJSON = consequent, ///
|
|
108
|
+
consequentStatementNode = statementNodeFromStatementJSON(consequentStatementJSON, releaseContext);
|
|
109
|
+
|
|
110
|
+
theorem = new Theorem(labels, statementNode, suppositionStatementNodes, consequentStatementNode);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return theorem;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static fromLabelsAndStatementNode(labels, statementNode) {
|
|
117
|
+
const suppositionStatementNodes = [],
|
|
118
|
+
consequentStatementNode = null,
|
|
119
|
+
theorem = new Theorem(labels, statementNode, suppositionStatementNodes, consequentStatementNode);
|
|
120
|
+
|
|
121
|
+
return theorem;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
static fromLabelsSuppositionStatementNodesAndConsequentStatementNode(labels, suppositionStatementNodes, consequentStatementNode) {
|
|
125
|
+
const statementNode = null,
|
|
126
|
+
theorem = new Theorem(labels, statementNode, suppositionStatementNodes, consequentStatementNode);
|
|
127
|
+
|
|
128
|
+
return theorem;
|
|
129
|
+
}
|
|
130
|
+
}
|