occam-verify-cli 0.0.538 → 0.0.539
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/action/verify.js +3 -24
- package/bin/actions.js +20 -6
- package/lib/axiom.js +4 -4
- package/lib/axiomLemmaTheoremConjecture.js +28 -25
- package/lib/conclusion.js +5 -5
- package/lib/conjecture.js +4 -4
- package/lib/consequence.js +3 -3
- package/lib/context/file.js +90 -28
- package/lib/kinds.js +5 -1
- package/lib/lemma.js +4 -4
- package/lib/metaType.js +201 -0
- package/lib/metavariable.js +75 -0
- package/lib/premise.js +9 -9
- package/lib/rule.js +36 -29
- package/lib/supposition.js +5 -5
- package/lib/theorem.js +4 -4
- package/lib/utilities/query.js +13 -2
- package/lib/variable.js +12 -12
- package/lib/verifier/metastatementForMetavariable.js +8 -8
- package/lib/verifier/statementForMetavariable.js +9 -9
- package/lib/verifier/termForVariable.js +22 -11
- package/lib/verify/assertion/type.js +2 -2
- package/lib/verify/axiom.js +2 -2
- package/lib/verify/conjecture.js +2 -2
- package/lib/verify/declaration/metavariable.js +26 -0
- package/lib/verify/declaration/topLevel.js +7 -3
- package/lib/verify/lemma.js +2 -2
- package/lib/verify/metastatement/qualified.js +3 -3
- package/lib/verify/metavariable.js +34 -0
- package/lib/verify/rule.js +2 -2
- package/lib/verify/statement/qualified.js +7 -7
- package/lib/verify/statement.js +5 -5
- package/lib/verify/theorem.js +2 -2
- package/lib/verify/variable.js +4 -4
- package/package.json +3 -3
- package/src/axiom.js +1 -1
- package/src/axiomLemmaTheoremConjecture.js +27 -28
- package/src/conclusion.js +8 -4
- package/src/conjecture.js +1 -1
- package/src/consequence.js +2 -2
- package/src/context/file.js +97 -28
- package/src/kinds.js +1 -0
- package/src/lemma.js +1 -1
- package/src/metaType.js +81 -0
- package/src/metavariable.js +35 -0
- package/src/premise.js +16 -8
- package/src/rule.js +32 -27
- package/src/supposition.js +8 -4
- package/src/theorem.js +1 -1
- package/src/utilities/query.js +14 -0
- package/src/variable.js +8 -8
- package/src/verifier/metastatementForMetavariable.js +7 -7
- package/src/verifier/statementForMetavariable.js +8 -8
- package/src/verifier/termForVariable.js +33 -13
- package/src/verify/assertion/type.js +3 -3
- package/src/verify/axiom.js +1 -1
- package/src/verify/conjecture.js +2 -1
- package/src/verify/declaration/metavariable.js +20 -0
- package/src/verify/declaration/topLevel.js +9 -2
- package/src/verify/lemma.js +1 -1
- package/src/verify/metastatement/qualified.js +3 -2
- package/src/verify/metavariable.js +32 -0
- package/src/verify/rule.js +1 -1
- package/src/verify/statement/qualified.js +7 -6
- package/src/verify/statement.js +12 -12
- package/src/verify/theorem.js +2 -1
- package/src/verify/variable.js +4 -4
package/lib/verify/theorem.js
CHANGED
|
@@ -39,7 +39,7 @@ function verifyTheorem(theoremNode, fileContext) {
|
|
|
39
39
|
if (consequenceVerified) {
|
|
40
40
|
var proofNode = proofNodeQuery(theoremNode), firstConsequence = (0, _array.first)(consequences), consequence = firstConsequence, proofVerified = (0, _proof.default)(proofNode, consequence, proofContext);
|
|
41
41
|
if (proofVerified) {
|
|
42
|
-
var theorem = _theorem.default.
|
|
42
|
+
var theorem = _theorem.default.fromLabelsSuppositionsConsequenceAndProofContext(labels, suppositions, consequence, proofContext);
|
|
43
43
|
fileContext.addTheorem(theorem);
|
|
44
44
|
theoremVerified = true;
|
|
45
45
|
}
|
|
@@ -52,4 +52,4 @@ function verifyTheorem(theoremNode, fileContext) {
|
|
|
52
52
|
return theoremVerified;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4uL3RoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlQcm9vZiBmcm9tIFwiLi4vdmVyaWZ5L3Byb29mXCI7XG5pbXBvcnQgUHJvb2ZDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3Byb29mXCI7XG5pbXBvcnQgdmVyaWZ5TGFiZWxzIGZyb20gXCIuLi92ZXJpZnkvbGFiZWxzXCI7XG5pbXBvcnQgdmVyaWZ5U3VwcG9zaXRpb24gZnJvbSBcIi4vc3VwcG9zaXRpb25cIjtcbmltcG9ydCB2ZXJpZnlDb25zZXF1ZW5jZSBmcm9tIFwiLi9jb25zZXF1ZW5jZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCBwcm9vZiBmcm9tIFwiLi4vY29udGV4dC9wcm9vZlwiO1xuXG5jb25zdCBwcm9vZk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90aGVvcmVtL3Byb29mIVwiKSxcbiAgICAgIGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvdGhlb3JlbS9sYWJlbFwiKSxcbiAgICAgIGNvbnNlcXVlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW0vY29uc2VxdWVuY2UhXCIpLFxuICAgICAgc3VwcG9zaXRpb25zTm9kZVF1ZXJ5ID0gbm9kZXNRdWVyeShcIi90aGVvcmVtL3N1cHBvc2l0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUaGVvcmVtKHRoZW9yZW1Ob2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdGhlb3JlbVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbGFiZWxOb2RlcyA9IGxhYmVsTm9kZXNRdWVyeSh0aGVvcmVtTm9kZSksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVzQXNTdHJpbmcobGFiZWxOb2RlcyksXG4gICAgICAgIHByb29mQ29udGV4dCA9IFByb29mQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpO1xuXG4gIGZpbGVDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIHRoZW9yZW0uLi5gLCB0aGVvcmVtTm9kZSk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsTm9kZXMsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IFtdLFxuICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZXMgPSBzdXBwb3NpdGlvbnNOb2RlUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc1ZlcmlmaWVkID0gc3VwcG9zaXRpb25Ob2Rlcy5ldmVyeSgoc3VwcG9zaXRpb25Ob2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdXBwb3NpdGlvblZlcmlmaWVkID0gdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb25Ob2RlLCBzdXBwb3NpdGlvbnMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChzdXBwb3NpdGlvblZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc1ZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBjb25zZXF1ZW5jZXMgPSBbXSxcbiAgICAgICAgICAgIGNvbnNlcXVlbmNlTm9kZSA9IGNvbnNlcXVlbmNlTm9kZVF1ZXJ5KHRoZW9yZW1Ob2RlKSxcbiAgICAgICAgICAgIGNvbnNlcXVlbmNlVmVyaWZpZWQgPSB2ZXJpZnlDb25zZXF1ZW5jZShjb25zZXF1ZW5jZU5vZGUsIGNvbnNlcXVlbmNlcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKGNvbnNlcXVlbmNlVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgcHJvb2ZOb2RlID0gcHJvb2ZOb2RlUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICAgICAgICBmaXJzdENvbnNlcXVlbmNlID0gZmlyc3QoY29uc2VxdWVuY2VzKSxcbiAgICAgICAgICAgICAgY29uc2VxdWVuY2UgPSBmaXJzdENvbnNlcXVlbmNlLCAvLy9cbiAgICAgICAgICAgICAgcHJvb2ZWZXJpZmllZCA9IHZlcmlmeVByb29mKHByb29mTm9kZSwgY29uc2VxdWVuY2UsIHByb29mQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHByb29mVmVyaWZpZWQpIHtcbiAgICAgICAgICBjb25zdCB0aGVvcmVtID0gVGhlb3JlbS5mcm9tTGFiZWxzU3VwcG9zaXRpb25zQ29uc2VxdWVuY2VBbmRQcm9vZkNvbnRleHQobGFiZWxzLCBzdXBwb3NpdGlvbnMsIGNvbnNlcXVlbmNlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgZmlsZUNvbnRleHQuYWRkVGhlb3JlbSh0aGVvcmVtKTtcblxuICAgICAgICAgIHRoZW9yZW1WZXJpZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodGhlb3JlbVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke2xhYmVsc1N0cmluZ30nIHRoZW9yZW0uYCwgdGhlb3JlbU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRoZW9yZW1WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUaGVvcmVtIiwicHJvb2ZOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJsYWJlbE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwiY29uc2VxdWVuY2VOb2RlUXVlcnkiLCJzdXBwb3NpdGlvbnNOb2RlUXVlcnkiLCJ0aGVvcmVtTm9kZSIsImZpbGVDb250ZXh0IiwidGhlb3JlbVZlcmlmaWVkIiwibGFiZWxOb2RlcyIsImxhYmVsc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJwcm9vZkNvbnRleHQiLCJQcm9vZkNvbnRleHQiLCJmcm9tRmlsZUNvbnRleHQiLCJkZWJ1ZyIsImxhYmVscyIsImxhYmVsc1ZlcmlmaWVkIiwidmVyaWZ5TGFiZWxzIiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25Ob2RlcyIsInN1cHBvc2l0aW9uc1ZlcmlmaWVkIiwiZXZlcnkiLCJzdXBwb3NpdGlvbk5vZGUiLCJzdXBwb3NpdGlvblZlcmlmaWVkIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJjb25zZXF1ZW5jZXMiLCJjb25zZXF1ZW5jZU5vZGUiLCJjb25zZXF1ZW5jZVZlcmlmaWVkIiwidmVyaWZ5Q29uc2VxdWVuY2UiLCJwcm9vZk5vZGUiLCJmaXJzdENvbnNlcXVlbmNlIiwiZmlyc3QiLCJjb25zZXF1ZW5jZSIsInByb29mVmVyaWZpZWQiLCJ2ZXJpZnlQcm9vZiIsInRoZW9yZW0iLCJUaGVvcmVtIiwiZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0NvbnNlcXVlbmNlQW5kUHJvb2ZDb250ZXh0IiwiYWRkVGhlb3JlbSIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWtCQTs7O2VBQXdCQTs7OzREQWhCSjswREFDSTsyREFDQzsyREFDQTtnRUFDSztnRUFDQTtxQkFFUjtxQkFDZ0I7Ozs7OztBQUd0QyxJQUFNQyxpQkFBaUJDLElBQUFBLGdCQUFTLEVBQUMsb0JBQzNCQyxrQkFBa0JDLElBQUFBLGlCQUFVLEVBQUMsbUJBQzdCQyx1QkFBdUJILElBQUFBLGdCQUFTLEVBQUMsMEJBQ2pDSSx3QkFBd0JGLElBQUFBLGlCQUFVLEVBQUM7QUFFMUIsU0FBU0osY0FBY08sV0FBVyxFQUFFQyxXQUFXLEVBQUU7SUFDOUQsSUFBSUMsa0JBQWtCLEtBQUs7SUFFM0IsSUFBTUMsYUFBYVAsZ0JBQWdCSSxjQUM3QkksZUFBZUgsWUFBWUksYUFBYSxDQUFDRixhQUN6Q0csZUFBZUMsZUFBWSxDQUFDQyxlQUFlLENBQUNQO0lBRWxEQSxZQUFZUSxLQUFLLENBQUMsQUFBQyxrQkFBOEIsT0FBYkwsY0FBYSxpQkFBZUo7SUFFaEUsSUFBTVUsU0FBUyxFQUFFLEVBQ1hDLGlCQUFpQkMsSUFBQUEsZUFBWSxFQUFDVCxZQUFZTyxRQUFRVDtJQUV4RCxJQUFJVSxnQkFBZ0I7UUFDbEIsSUFBTUUsZUFBZSxFQUFFLEVBQ2pCQyxtQkFBbUJmLHNCQUFzQkMsY0FDekNlLHVCQUF1QkQsaUJBQWlCRSxLQUFLLENBQUMsU0FBQ0MsaUJBQW9CO1lBQ2pFLElBQU1DLHNCQUFzQkMsSUFBQUEsb0JBQWlCLEVBQUNGLGlCQUFpQkosY0FBY1A7WUFFN0UsSUFBSVkscUJBQXFCO2dCQUN2QixPQUFPLElBQUk7WUFDYixDQUFDO1FBQ0g7UUFFTixJQUFJSCxzQkFBc0I7WUFDeEIsSUFBTUssZUFBZSxFQUFFLEVBQ2pCQyxrQkFBa0J2QixxQkFBcUJFLGNBQ3ZDc0Isc0JBQXNCQyxJQUFBQSxvQkFBaUIsRUFBQ0YsaUJBQWlCRCxjQUFjZDtZQUU3RSxJQUFJZ0IscUJBQXFCO2dCQUN2QixJQUFNRSxZQUFZOUIsZUFBZU0sY0FDM0J5QixtQkFBbUJDLElBQUFBLFlBQUssRUFBQ04sZUFDekJPLGNBQWNGLGtCQUNkRyxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ0wsV0FBV0csYUFBYXJCO2dCQUUxRCxJQUFJc0IsZUFBZTtvQkFDakIsSUFBTUUsVUFBVUMsZ0JBQU8sQ0FBQ0MsZ0RBQWdELENBQUN0QixRQUFRRyxjQUFjYyxhQUFhckI7b0JBRTVHTCxZQUFZZ0MsVUFBVSxDQUFDSDtvQkFFdkI1QixrQkFBa0IsSUFBSTtnQkFDeEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLGlCQUFpQjtRQUNuQkQsWUFBWWlDLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiOUIsY0FBYSxlQUFhSjtJQUM5RCxDQUFDO0lBRUQsT0FBT0U7QUFDVCJ9
|
package/lib/verify/variable.js
CHANGED
|
@@ -25,15 +25,15 @@ function verifyVariable(variableNode, typeNode, fileContext) {
|
|
|
25
25
|
var variable;
|
|
26
26
|
var typeName = (0, _query.typeNameFromTypeNode)(typeNode);
|
|
27
27
|
if (typeName === null) {
|
|
28
|
-
var
|
|
29
|
-
variable = _variable.default.
|
|
28
|
+
var name = variableName, type = _type.objectType;
|
|
29
|
+
variable = _variable.default.fromNameAndType(name, type);
|
|
30
30
|
} else {
|
|
31
31
|
var type1 = fileContext.findTypeByTypeName(typeName);
|
|
32
32
|
if (type1 === null) {
|
|
33
33
|
fileContext.error("The '".concat(variableName, "' variable's '").concat(typeName, "' type is not present."), variableNode);
|
|
34
34
|
} else {
|
|
35
35
|
var name1 = variableName; ///
|
|
36
|
-
variable = _variable.default.
|
|
36
|
+
variable = _variable.default.fromNameAndType(name1, type1);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
if (variable !== null) {
|
|
@@ -47,4 +47,4 @@ function verifyVariable(variableNode, typeNode, fileContext) {
|
|
|
47
47
|
return variableVerified;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgb2JqZWN0VHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XG5pbXBvcnQgeyB0eXBlTmFtZUZyb21UeXBlTm9kZSwgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGUodmFyaWFibGVOb2RlLCB0eXBlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgIHZhcmlhYmxlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHZhcmlhYmxlTm9kZSksXG4gICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICBpZiAodmFyaWFibGVQcmVzZW50KSB7XG4gICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB2YXJpYWJsZSAnJHt2YXJpYWJsZU5hbWV9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCwgdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgdmFyaWFibGU7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKTtcbiAgICBcbiAgICBpZiAodHlwZU5hbWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBvYmplY3RUeXBlO1xuXG4gICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbU5hbWVBbmRUeXBlKG5hbWUsIHR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSAnJHt2YXJpYWJsZU5hbWV9JyB2YXJpYWJsZSdzICcke3R5cGVOYW1lfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB2YXJpYWJsZU5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHZhcmlhYmxlTmFtZTsgIC8vL1xuXG4gICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbU5hbWVBbmRUeXBlKG5hbWUsIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgZmlsZUNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICB2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAodmFyaWFibGVWZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmAsIHZhcmlhYmxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlWYXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsInR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ2YXJpYWJsZVZlcmlmaWVkIiwidmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSIsImVycm9yIiwidmFyaWFibGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwibmFtZSIsInR5cGUiLCJvYmplY3RUeXBlIiwiVmFyaWFibGUiLCJmcm9tTmFtZUFuZFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJhZGRWYXJpYWJsZSIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBd0JBOzs7NkRBTEg7b0JBRU07cUJBQ3dDOzs7Ozs7QUFFcEQsU0FBU0EsZUFBZUMsWUFBWSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRTtJQUMxRSxJQUFJQyxtQkFBbUIsS0FBSztJQUU1QixJQUFNQyxlQUFlQyxJQUFBQSxtQ0FBNEIsRUFBQ0wsZUFDNUNNLGlCQUFpQkosWUFBWUssWUFBWSxDQUFDUCxlQUMxQ1Esa0JBQWtCTixZQUFZTywrQkFBK0IsQ0FBQ0w7SUFFcEUsSUFBSUksaUJBQWlCO1FBQ25CTixZQUFZUSxLQUFLLENBQUMsQUFBQyxpQkFBNkIsT0FBYk4sY0FBYSwwQkFBd0JKO0lBQzFFLE9BQU87UUFDTCxJQUFJVztRQUVKLElBQU1DLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDWjtRQUV0QyxJQUFJVyxhQUFhLElBQUksRUFBRTtZQUNyQixJQUFNRSxPQUFPVixjQUNQVyxPQUFPQyxnQkFBVTtZQUVyQkwsV0FBV00saUJBQVEsQ0FBQ0MsZUFBZSxDQUFDSixNQUFNQztRQUM5QyxPQUFPO1lBQ0wsSUFBTUEsUUFBT2IsWUFBWWlCLGtCQUFrQixDQUFDUDtZQUU1QyxJQUFJRyxVQUFTLElBQUksRUFBRTtnQkFDakJiLFlBQVlRLEtBQUssQ0FBQyxBQUFDLFFBQW9DRSxPQUE3QlIsY0FBYSxrQkFBeUIsT0FBVFEsVUFBUywyQkFBeUJaO1lBQzNGLE9BQU87Z0JBQ0wsSUFBTWMsUUFBT1YsY0FBZSxHQUFHO2dCQUUvQk8sV0FBV00saUJBQVEsQ0FBQ0MsZUFBZSxDQUFDSixPQUFNQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUlKLGFBQWEsSUFBSSxFQUFFO1lBQ3JCVCxZQUFZa0IsV0FBVyxDQUFDVDtZQUV4QlIsbUJBQW1CLElBQUk7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJQSxrQkFBa0I7UUFDcEJELFlBQVltQixJQUFJLENBQUMsQUFBQyxpQkFBK0IsT0FBZmYsZ0JBQWUsZ0JBQWNOO0lBQ2pFLENBQUM7SUFFRCxPQUFPRztBQUNUIn0=
|
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.539",
|
|
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.397",
|
|
16
16
|
"occam-dom": "^3.1.1",
|
|
17
|
-
"occam-file-system": "^5.0.
|
|
17
|
+
"occam-file-system": "^5.0.158",
|
|
18
18
|
"occam-grammar-utilities": "^7.0.66"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
package/src/axiom.js
CHANGED
|
@@ -9,5 +9,5 @@ export default class Axiom extends AxiomLemmaTheoremConjecture {
|
|
|
9
9
|
|
|
10
10
|
static fromJSON(json, context) { return AxiomLemmaTheoremConjecture.fromJSON(Axiom, json, context); }
|
|
11
11
|
|
|
12
|
-
static
|
|
12
|
+
static fromLabelsSuppositionsConsequenceAndProofContext(labels, suppositions, consequence, proofContext) { return AxiomLemmaTheoremConjecture.fromLabelsSuppositionsConsequenceAndProofContext(Axiom, labels, suppositions, consequence, proofContext); }
|
|
13
13
|
}
|
|
@@ -8,10 +8,11 @@ import { prune } from "./utilities/array";
|
|
|
8
8
|
import { someSubArray } from "./utilities/array";
|
|
9
9
|
|
|
10
10
|
export default class AxiomLemmaTheoremConjecture {
|
|
11
|
-
constructor(labels, suppositions, consequence) {
|
|
11
|
+
constructor(labels, suppositions, consequence, proofContext) {
|
|
12
12
|
this.labels = labels;
|
|
13
13
|
this.suppositions = suppositions;
|
|
14
14
|
this.consequence = consequence;
|
|
15
|
+
this.proofContext = proofContext;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
getLabels() {
|
|
@@ -26,6 +27,10 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
26
27
|
return this.consequence;
|
|
27
28
|
}
|
|
28
29
|
|
|
30
|
+
getProofContext() {
|
|
31
|
+
return this.proofContext;
|
|
32
|
+
}
|
|
33
|
+
|
|
29
34
|
matchLabelName(labelName) {
|
|
30
35
|
const matchesLabelName = this.labels.some((label) => {
|
|
31
36
|
const name = labelName, ///
|
|
@@ -39,21 +44,30 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
39
44
|
return matchesLabelName;
|
|
40
45
|
}
|
|
41
46
|
|
|
42
|
-
matchStatement(statementNode,
|
|
47
|
+
matchStatement(statementNode, statementProofContext) {
|
|
43
48
|
let statementNatches;
|
|
44
49
|
|
|
45
50
|
const suppositionsLength = this.suppositions.length;
|
|
46
51
|
|
|
47
52
|
if (suppositionsLength === 0) {
|
|
48
53
|
const substitutions = [],
|
|
49
|
-
consequenceMatches = matchConsequence(this.consequence, statementNode, substitutions);
|
|
54
|
+
consequenceMatches = matchConsequence(this.consequence, statementNode, substitutions, this.proofContext, statementProofContext);
|
|
50
55
|
|
|
51
56
|
statementNatches = consequenceMatches; ///
|
|
52
57
|
} else {
|
|
53
|
-
const proofSteps =
|
|
58
|
+
const proofSteps = statementProofContext.getProofSteps();
|
|
54
59
|
|
|
55
60
|
statementNatches = someSubArray(proofSteps, suppositionsLength, (proofSteps) => {
|
|
56
|
-
|
|
61
|
+
let suppositionsMatchConsequence = false;
|
|
62
|
+
|
|
63
|
+
const substitutions = [],
|
|
64
|
+
suppositionsMatch = matchSuppositions(this.suppositions, proofSteps, substitutions, this.proofContext, statementProofContext);
|
|
65
|
+
|
|
66
|
+
if (suppositionsMatch) {
|
|
67
|
+
const consequenceMatches = matchConsequence(this.consequence, statementNode, substitutions, this.proofContext, statementProofContext);
|
|
68
|
+
|
|
69
|
+
suppositionsMatchConsequence = consequenceMatches; ///
|
|
70
|
+
}
|
|
57
71
|
|
|
58
72
|
if (suppositionsMatchConsequence) {
|
|
59
73
|
return true;
|
|
@@ -124,16 +138,16 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
124
138
|
return new Class(labels, suppositions, consequence); ///
|
|
125
139
|
}
|
|
126
140
|
|
|
127
|
-
static
|
|
141
|
+
static fromLabelsSuppositionsConsequenceAndProofContext(Class, labels, suppositions, consequence, proofContext) { return new Class(labels, suppositions, consequence, proofContext); }
|
|
128
142
|
}
|
|
129
143
|
|
|
130
|
-
function matchSupposition(supposition, proofSteps, substitutions) {
|
|
144
|
+
function matchSupposition(supposition, proofSteps, substitutions, proofContext, statementProofContext) {
|
|
131
145
|
const proofStep = prune(proofSteps, (proofStep) => {
|
|
132
146
|
const subproofNode = proofStep.getSubproofNode(),
|
|
133
147
|
statementNode = proofStep.getStatementNode();
|
|
134
148
|
|
|
135
149
|
if (subproofNode !== null) {
|
|
136
|
-
const subProofMatches = supposition.matchSubproofNode(subproofNode, substitutions);
|
|
150
|
+
const subProofMatches = supposition.matchSubproofNode(subproofNode, substitutions, proofContext, statementProofContext);
|
|
137
151
|
|
|
138
152
|
if (!subProofMatches) { ///
|
|
139
153
|
return true;
|
|
@@ -141,7 +155,7 @@ function matchSupposition(supposition, proofSteps, substitutions) {
|
|
|
141
155
|
}
|
|
142
156
|
|
|
143
157
|
if (statementNode !== null) {
|
|
144
|
-
const statementMatches = supposition.matchStatementNode(statementNode, substitutions);
|
|
158
|
+
const statementMatches = supposition.matchStatementNode(statementNode, substitutions, proofContext, statementProofContext);
|
|
145
159
|
|
|
146
160
|
if (!statementMatches) { ///
|
|
147
161
|
return true;
|
|
@@ -155,9 +169,9 @@ function matchSupposition(supposition, proofSteps, substitutions) {
|
|
|
155
169
|
return suppositionMatches;
|
|
156
170
|
}
|
|
157
171
|
|
|
158
|
-
function matchSuppositions(supposition, proofSteps, substitutions) {
|
|
172
|
+
function matchSuppositions(supposition, proofSteps, substitutions, proofContext, statementProofContext) {
|
|
159
173
|
const suppositionsMatch = supposition.every((supposition) => {
|
|
160
|
-
const suppositionMatches = matchSupposition(supposition, proofSteps, substitutions);
|
|
174
|
+
const suppositionMatches = matchSupposition(supposition, proofSteps, substitutions, proofContext, statementProofContext);
|
|
161
175
|
|
|
162
176
|
if (suppositionMatches) {
|
|
163
177
|
return true;
|
|
@@ -167,24 +181,9 @@ function matchSuppositions(supposition, proofSteps, substitutions) {
|
|
|
167
181
|
return suppositionsMatch;
|
|
168
182
|
}
|
|
169
183
|
|
|
170
|
-
function matchConsequence(consequence, statementNode, substitutions) {
|
|
171
|
-
const nonTerminalNodeMatches = consequence.matchStatementNode(statementNode, substitutions),
|
|
184
|
+
function matchConsequence(consequence, statementNode, substitutions, proofContext, statementProofContext) {
|
|
185
|
+
const nonTerminalNodeMatches = consequence.matchStatementNode(statementNode, substitutions, proofContext, statementProofContext),
|
|
172
186
|
consequenceMatches = nonTerminalNodeMatches; ///
|
|
173
187
|
|
|
174
188
|
return consequenceMatches;
|
|
175
189
|
}
|
|
176
|
-
|
|
177
|
-
function matchSuppositionsAndConsequence(suppositions, consequence, proofSteps, statementNode) {
|
|
178
|
-
let suppositionsMatchConsequence = false;
|
|
179
|
-
|
|
180
|
-
const substitutions = [],
|
|
181
|
-
suppositionsMatch = matchSuppositions(suppositions, proofSteps, substitutions);
|
|
182
|
-
|
|
183
|
-
if (suppositionsMatch) {
|
|
184
|
-
const consequenceMatches = matchConsequence(consequence, statementNode, substitutions);
|
|
185
|
-
|
|
186
|
-
suppositionsMatchConsequence = consequenceMatches; ///
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return suppositionsMatchConsequence;
|
|
190
|
-
}
|
package/src/conclusion.js
CHANGED
|
@@ -14,19 +14,23 @@ export default class Conclusion {
|
|
|
14
14
|
return this.metastatementNode;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
matchStatementNode(statementNode, substitutions) {
|
|
17
|
+
matchStatementNode(statementNode, substitutions, fileContext, statementProofContext) {
|
|
18
18
|
const nonTerminalNodeA = this.metastatementNode, ///
|
|
19
19
|
nonTerminalNodeB = statementNode, ///
|
|
20
|
-
|
|
20
|
+
fileContextA = fileContext, ///
|
|
21
|
+
proofContextB = statementProofContext, ///
|
|
22
|
+
nonTerminalNodeVerified = conclusionStatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, proofContextB),
|
|
21
23
|
statementNodeMatches = nonTerminalNodeVerified; ///
|
|
22
24
|
|
|
23
25
|
return statementNodeMatches;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
matchMetastatementNode(metastatementNode, substitutions) {
|
|
28
|
+
matchMetastatementNode(metastatementNode, substitutions, fileContext, metastatementMetaproofContext) {
|
|
27
29
|
const nonTerminalNodeA = this.metastatementNode, ///
|
|
28
30
|
nonTerminalNodeB = metastatementNode, ///
|
|
29
|
-
|
|
31
|
+
fileContextA = fileContext, ///
|
|
32
|
+
metaproofContextB = metastatementMetaproofContext, ///
|
|
33
|
+
nonTerminalNodeVerified = conclusionMetastatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, metaproofContextB),
|
|
30
34
|
metastatementNodeMatches = nonTerminalNodeVerified; ///
|
|
31
35
|
|
|
32
36
|
return metastatementNodeMatches;
|
package/src/conjecture.js
CHANGED
|
@@ -9,5 +9,5 @@ export default class Conjecture extends AxiomLemmaTheoremConjecture {
|
|
|
9
9
|
|
|
10
10
|
static fromJSON(json, context) { return AxiomLemmaTheoremConjecture.fromJSON(Conjecture, json, context); }
|
|
11
11
|
|
|
12
|
-
static
|
|
12
|
+
static fromLabelsSuppositionsConsequenceAndProofContext(labels, suppositions, consequence, proofContext) { return AxiomLemmaTheoremConjecture.fromLabelsSuppositionsConsequenceAndProofContext(Conjecture, labels, suppositions, consequence, proofContext); }
|
|
13
13
|
}
|
package/src/consequence.js
CHANGED
|
@@ -13,10 +13,10 @@ export default class Consequence {
|
|
|
13
13
|
return this.statementNode;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
matchStatementNode(statementNode, substitutions) {
|
|
16
|
+
matchStatementNode(statementNode, substitutions, proofContext) {
|
|
17
17
|
const nonTerminalNodeA = this.statementNode, ///
|
|
18
18
|
nonTerminalNodeB = statementNode, ///
|
|
19
|
-
nonTerminalNodeVerified = consequenceTermForVariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions),
|
|
19
|
+
nonTerminalNodeVerified = consequenceTermForVariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, proofContext),
|
|
20
20
|
statementNodeMatches = nonTerminalNodeVerified; ///
|
|
21
21
|
|
|
22
22
|
return statementNodeMatches;
|
package/src/context/file.js
CHANGED
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { rewriteNodes } from "occam-grammar-utilities";
|
|
4
4
|
|
|
5
|
-
import { push } from "../utilities/array";
|
|
5
|
+
import { push, filter } from "../utilities/array";
|
|
6
|
+
import { statementMetaType } from "../metaType";
|
|
6
7
|
import { nodeAsString, nodesAsString } from "../utilities/string";
|
|
7
8
|
|
|
9
|
+
const metaTypes = [
|
|
10
|
+
statementMetaType
|
|
11
|
+
];
|
|
12
|
+
|
|
8
13
|
export default class FileContext {
|
|
9
14
|
constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, conjectures, combinators, constructors, variables, metavariables) {
|
|
10
15
|
this.releaseContext = releaseContext;
|
|
@@ -157,6 +162,10 @@ export default class FileContext {
|
|
|
157
162
|
return theorems;
|
|
158
163
|
}
|
|
159
164
|
|
|
165
|
+
getMetaTypes(includeRelease = true) {
|
|
166
|
+
return metaTypes;
|
|
167
|
+
}
|
|
168
|
+
|
|
160
169
|
getConjectures(includeRelease = true) {
|
|
161
170
|
const conjectures = [];
|
|
162
171
|
|
|
@@ -290,6 +299,33 @@ export default class FileContext {
|
|
|
290
299
|
return theorem;
|
|
291
300
|
}
|
|
292
301
|
|
|
302
|
+
findVariableByVariableName(variableName) {
|
|
303
|
+
const name = variableName, ///
|
|
304
|
+
variables = this.getVariables(),
|
|
305
|
+
variable = variables.find((variable) => {
|
|
306
|
+
const matches = variable.matchName(name);
|
|
307
|
+
|
|
308
|
+
if (matches) {
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
}) || null;
|
|
312
|
+
|
|
313
|
+
return variable;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
findMetaTypeByMetaTypeName(metaTypeName) {
|
|
317
|
+
const metaTypes = this.getMetaTypes(),
|
|
318
|
+
metaType = metaTypes.find((metaType) => {
|
|
319
|
+
const matches = metaType.matchMetaTypeName(metaTypeName);
|
|
320
|
+
|
|
321
|
+
if (matches) {
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
}) || null;
|
|
325
|
+
|
|
326
|
+
return metaType;
|
|
327
|
+
}
|
|
328
|
+
|
|
293
329
|
findConjectureByReferenceName(referenceName) {
|
|
294
330
|
const labelName = referenceName, ///
|
|
295
331
|
conjectures = this.getConjectures(),
|
|
@@ -304,11 +340,18 @@ export default class FileContext {
|
|
|
304
340
|
return conjecture;
|
|
305
341
|
}
|
|
306
342
|
|
|
307
|
-
|
|
308
|
-
const
|
|
309
|
-
|
|
343
|
+
findMetavariableByMetavariableName(metavariableName) {
|
|
344
|
+
const name = metavariableName, ///
|
|
345
|
+
metavariables = this.getMetavariables(),
|
|
346
|
+
metavariable = metavariables.find((metavariable) => {
|
|
347
|
+
const matches = metavariable.matchName(name);
|
|
310
348
|
|
|
311
|
-
|
|
349
|
+
if (matches) {
|
|
350
|
+
return true;
|
|
351
|
+
}
|
|
352
|
+
}) || null;
|
|
353
|
+
|
|
354
|
+
return metavariable;
|
|
312
355
|
}
|
|
313
356
|
|
|
314
357
|
isTypePresentByTypeName(typeName) {
|
|
@@ -318,30 +361,11 @@ export default class FileContext {
|
|
|
318
361
|
return typePresent;
|
|
319
362
|
}
|
|
320
363
|
|
|
321
|
-
|
|
322
|
-
const
|
|
323
|
-
|
|
324
|
-
return string;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
nodesAsString(node) {
|
|
328
|
-
const string = nodesAsString(node, this.tokens);
|
|
329
|
-
|
|
330
|
-
return string;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
findVariableByVariableName(variableName) {
|
|
334
|
-
const name = variableName, ///
|
|
335
|
-
variables = this.getVariables(),
|
|
336
|
-
variable = variables.find((variable) => {
|
|
337
|
-
const matches = variable.matchName(name);
|
|
338
|
-
|
|
339
|
-
if (matches) {
|
|
340
|
-
return true;
|
|
341
|
-
}
|
|
342
|
-
}) || null;
|
|
364
|
+
isLabelPresentByLabelName(labelName) {
|
|
365
|
+
const label = this.findLabelByLabelName(labelName),
|
|
366
|
+
labelPresent = (label !== null);
|
|
343
367
|
|
|
344
|
-
return
|
|
368
|
+
return labelPresent;
|
|
345
369
|
}
|
|
346
370
|
|
|
347
371
|
isVariablePresentByVariableName(variableName) {
|
|
@@ -351,12 +375,31 @@ export default class FileContext {
|
|
|
351
375
|
return variablePresent;
|
|
352
376
|
}
|
|
353
377
|
|
|
378
|
+
isMetavariablePresentByMetavariableName(metavariableName) {
|
|
379
|
+
const metavariable = this.findMetavariableByMetavariableName(metavariableName),
|
|
380
|
+
metavariablePresent = (metavariable !== null);
|
|
381
|
+
|
|
382
|
+
return metavariablePresent;
|
|
383
|
+
}
|
|
384
|
+
|
|
354
385
|
matchStatement(statementNode) {
|
|
355
386
|
const statementMatches = false;
|
|
356
387
|
|
|
357
388
|
return statementMatches;
|
|
358
389
|
}
|
|
359
390
|
|
|
391
|
+
nodeAsString(node) {
|
|
392
|
+
const string = nodeAsString(node, this.tokens);
|
|
393
|
+
|
|
394
|
+
return string;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
nodesAsString(node) {
|
|
398
|
+
const string = nodesAsString(node, this.tokens);
|
|
399
|
+
|
|
400
|
+
return string;
|
|
401
|
+
}
|
|
402
|
+
|
|
360
403
|
addType(type) {
|
|
361
404
|
this.types.push(type);
|
|
362
405
|
}
|
|
@@ -378,6 +421,17 @@ export default class FileContext {
|
|
|
378
421
|
}
|
|
379
422
|
|
|
380
423
|
addVariable(variable) {
|
|
424
|
+
const variableName = variable.getName();
|
|
425
|
+
|
|
426
|
+
filter(this.variables, (variable) => {
|
|
427
|
+
const name = variable.getName(),
|
|
428
|
+
nameVariableName = (name === variableName);
|
|
429
|
+
|
|
430
|
+
if (!nameVariableName) {
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
|
|
381
435
|
this.variables.push(variable);
|
|
382
436
|
}
|
|
383
437
|
|
|
@@ -389,6 +443,21 @@ export default class FileContext {
|
|
|
389
443
|
this.constructors.push(constructor);
|
|
390
444
|
}
|
|
391
445
|
|
|
446
|
+
addMetavariable(metavariable) {
|
|
447
|
+
const metavariableName = metavariable.getName();
|
|
448
|
+
|
|
449
|
+
filter(this.metavariables, (metavariable) => {
|
|
450
|
+
const name = metavariable.getName(),
|
|
451
|
+
nameMetavariableName = (name === metavariableName);
|
|
452
|
+
|
|
453
|
+
if (!nameMetavariableName) {
|
|
454
|
+
return true;
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
|
|
458
|
+
this.metavariables.push(metavariable);
|
|
459
|
+
}
|
|
460
|
+
|
|
392
461
|
trace(message, node) { this.releaseContext.trace(message, node, this.tokens, this.filePath); }
|
|
393
462
|
|
|
394
463
|
debug(message, node) { this.releaseContext.debug(message, node, this.tokens, this.filePath); }
|
package/src/kinds.js
CHANGED
|
@@ -5,6 +5,7 @@ export const RULE_KIND = "rule";
|
|
|
5
5
|
export const AXIOM_KIND = "axiom";
|
|
6
6
|
export const LEMMA_KIND = "lemma";
|
|
7
7
|
export const THEOREM_KIND = "theorem";
|
|
8
|
+
export const META_TYPE_KIND = "meta-type";
|
|
8
9
|
export const CONJECTURE_KIND = "conjecture";
|
|
9
10
|
export const COMBINATOR_KIND = "combinator";
|
|
10
11
|
export const CONSTRUCTOR_KIND = "constructor";
|
package/src/lemma.js
CHANGED
|
@@ -9,5 +9,5 @@ export default class Lemma extends AxiomLemmaTheoremConjecture {
|
|
|
9
9
|
|
|
10
10
|
static fromJSON(json, context) { return AxiomLemmaTheoremConjecture.fromJSON(Lemma, json, context); }
|
|
11
11
|
|
|
12
|
-
static
|
|
12
|
+
static fromLabelsSuppositionsConsequenceAndProofContext(labels, suppositions, consequence, proofContext) { return AxiomLemmaTheoremConjecture.fromLabelsSuppositionsConsequenceAndProofContext(Lemma, labels, suppositions, consequence, proofContext); }
|
|
13
13
|
}
|
package/src/metaType.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { META_TYPE_KIND } from "./kinds";
|
|
4
|
+
import { STATEMENT_META_TYPE_NAME } from "./metaTypeNames";
|
|
5
|
+
|
|
6
|
+
export default class MetaType {
|
|
7
|
+
constructor(name) {
|
|
8
|
+
this.name = name;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getName() {
|
|
12
|
+
return this.name;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
isEqualTo(metaType) {
|
|
16
|
+
const equalTo = (this === metaType);
|
|
17
|
+
|
|
18
|
+
return equalTo;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
match(metaType) {
|
|
22
|
+
const equalToMetaType = this.isEqualTo(metaType),
|
|
23
|
+
matches = equalToMetaType; ///
|
|
24
|
+
|
|
25
|
+
return matches;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
matchName(name) {
|
|
29
|
+
const matchesName = (this.name === name);
|
|
30
|
+
|
|
31
|
+
return matchesName;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
matchMetaTypeName(metaTypeName) {
|
|
35
|
+
const matchesMetaTypeName = (this.name === metaTypeName);
|
|
36
|
+
|
|
37
|
+
return matchesMetaTypeName;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
asString(tokens) {
|
|
41
|
+
const string = `${this.name}`;
|
|
42
|
+
|
|
43
|
+
return string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
toJSON(tokens) {
|
|
47
|
+
const kind = META_TYPE_KIND,
|
|
48
|
+
name = this.name,
|
|
49
|
+
json = {
|
|
50
|
+
kind,
|
|
51
|
+
name
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return json;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static fromJSON(json, context) {
|
|
58
|
+
const { name } = json,
|
|
59
|
+
metaType = new MetaType(name);
|
|
60
|
+
|
|
61
|
+
return metaType;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static fromMetaTypeName(metaTypeName) {
|
|
65
|
+
const name = metaTypeName, ///
|
|
66
|
+
metaType = new MetaType(name);
|
|
67
|
+
|
|
68
|
+
return metaType;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
class StatementMetaType extends MetaType {
|
|
73
|
+
static fromNothing() {
|
|
74
|
+
const name = STATEMENT_META_TYPE_NAME,
|
|
75
|
+
objectMetaType = new StatementMetaType(name);
|
|
76
|
+
|
|
77
|
+
return objectMetaType;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export const statementMetaType = StatementMetaType.fromNothing();
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default class Metavariable {
|
|
4
|
+
constructor(name, metaType) {
|
|
5
|
+
this.name = name;
|
|
6
|
+
this.metaType = metaType;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
getName() {
|
|
10
|
+
return this.name;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
getMetaType() {
|
|
14
|
+
return this.metaType;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
matchName(name) {
|
|
18
|
+
const matchesName = (this.name === name);
|
|
19
|
+
|
|
20
|
+
return matchesName;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
asString(tokens) {
|
|
24
|
+
const metaTypeName = this.metaType.getName(),
|
|
25
|
+
string = `${this.name}:${metaTypeName}`;
|
|
26
|
+
|
|
27
|
+
return string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static fromNameAndMetaType(name, metaType) {
|
|
31
|
+
const metavariable = new Metavariable(name, metaType);
|
|
32
|
+
|
|
33
|
+
return metavariable;
|
|
34
|
+
}
|
|
35
|
+
}
|