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.
Files changed (40) hide show
  1. package/bin/utilities/fileSystem.js +15 -2
  2. package/lib/assertion.js +8 -1
  3. package/lib/context/file.js +42 -6
  4. package/lib/context/proof.js +25 -4
  5. package/lib/context/release/directory.js +16 -5
  6. package/lib/context/release/file.js +25 -11
  7. package/lib/kinds.js +5 -1
  8. package/lib/theorem.js +146 -0
  9. package/lib/variable.js +8 -1
  10. package/lib/verify/declaration/topLevel.js +7 -3
  11. package/lib/verify/derivation.js +112 -0
  12. package/lib/verify/equality.js +3 -16
  13. package/lib/verify/metaDerivation.js +47 -39
  14. package/lib/verify/proof.js +83 -0
  15. package/lib/verify/statement/unqualified.js +65 -4
  16. package/lib/verify/statement.js +2 -2
  17. package/lib/verify/term.js +12 -12
  18. package/lib/verify/termAsConstructor.js +2 -2
  19. package/lib/verify/theorem.js +57 -0
  20. package/package.json +3 -3
  21. package/src/assertion.js +8 -1
  22. package/src/context/file.js +45 -5
  23. package/src/context/proof.js +8 -4
  24. package/src/context/release/directory.js +17 -4
  25. package/src/context/release/file.js +29 -12
  26. package/src/kinds.js +1 -0
  27. package/src/theorem.js +130 -0
  28. package/src/variable.js +6 -0
  29. package/src/verify/assertion/type.js +25 -12
  30. package/src/verify/declaration/topLevel.js +7 -0
  31. package/src/verify/derivation.js +156 -0
  32. package/src/verify/equality.js +3 -22
  33. package/src/verify/metaDerivation.js +57 -45
  34. package/src/verify/proof.js +123 -0
  35. package/src/verify/statement/unqualified.js +69 -2
  36. package/src/verify/statement.js +2 -1
  37. package/src/verify/term.js +16 -17
  38. package/src/verify/termAsConstructor.js +1 -2
  39. package/src/verify/theorem.js +77 -0
  40. 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 = [], values = [], context = fileContext, termVerified = (0, _term.default)(termNode, types, values, context);
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.453",
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.368",
15
+ "occam-custom-grammars": "^5.0.370",
16
16
  "occam-dom": "^3.0.171",
17
- "occam-file-system": "^5.0.127",
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
- assertionChildNodesLength = assertionChildNodes.length;
105
+ assertionChildNodesLength = assertionChildNodes.length;
99
106
 
100
107
  if (childNodesLength === assertionChildNodesLength) {
101
108
  assertionChildNodesMatches = childNodes.every((childNode, index) => {
@@ -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.lemmas.forEach((lemma) => {
356
- const lemmaJSON = lemma.toJSON();
394
+ this.theorems.forEach((theorem) => {
395
+ const theoremJSON = theorem.toJSON();
357
396
 
358
- json.push(lemmaJSON);
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
  }
@@ -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(includeDependencies = true) {
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
- releaseContextLemmas = releaseContext.getLemmas(includeDependencies);
143
+ releaseContextTheorems = releaseContext.getTheorems(includeDependencies);
131
144
 
132
- push(lemmas, releaseContextLemmas);
145
+ push(theorems, releaseContextTheorems);
133
146
  });
134
147
  }
135
148
 
136
- return lemmas;
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, LEMMA_KIND, COMBINATOR_KIND, CONSTRUCTOR_KIND } from "../../kinds";
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(includeDependencies = true) {
121
- const lemmas = [];
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(lemmas, this.lemmas);
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
- releaseContextLemmas = releaseContext.getLemmas(includeDependencies);
146
+ releaseContextTheorems = releaseContext.getTheorems(includeDependencies);
131
147
 
132
- push(lemmas, releaseContextLemmas);
148
+ push(theorems, releaseContextTheorems);
133
149
  });
134
150
  }
135
151
 
136
- return lemmas;
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 LEMMA_KIND: {
225
- const lemma = Lemma.fromJSON(json, releaseContext);
240
+ case THEOREM_KIND: {
241
+ const theorem = Theorem.fromJSON(json, releaseContext);
226
242
 
227
- this.lemmas.push(lemma);
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
+ }
package/src/variable.js CHANGED
@@ -19,6 +19,12 @@ export default class Variable {
19
19
  return this.value;
20
20
  }
21
21
 
22
+ isDefined() {
23
+ const defined = (this.value !== undefined);
24
+
25
+ return defined;
26
+ }
27
+
22
28
  setValue(value) {
23
29
  this.value = value;
24
30
  }