occam-verify-cli 0.0.869 → 0.0.871
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/axiomLemmaTheoremConjecture.js +13 -13
- package/lib/conclusion.js +3 -3
- package/lib/context/file.js +77 -73
- package/lib/equality.js +2 -4
- package/lib/equivalence.js +1 -1
- package/lib/label.js +5 -6
- package/lib/metaLemmaMetatheorem.js +13 -13
- package/lib/mixins/context.js +28 -28
- package/lib/premise.js +4 -4
- package/lib/rule.js +13 -13
- package/lib/ruleNames.js +1 -29
- package/lib/substitution/metastatementForMetavariable.js +3 -2
- package/lib/substitution/statementForMetavariable.js +27 -64
- package/lib/substitution/termForVariable.js +5 -5
- package/lib/utilities/name.js +8 -8
- package/lib/utilities/node.js +14 -14
- package/lib/utilities/query.js +4 -9
- package/lib/utilities/tokens.js +6 -6
- package/lib/utilities/verifier.js +86 -0
- package/lib/verifier/node/metastatement.js +41 -28
- package/lib/verifier/node/statementAsCombinator.js +41 -28
- package/lib/verifier/node/termAsConstructor.js +30 -22
- package/lib/verifier/nodes/equality.js +27 -32
- package/lib/verifier/nodes/intrinsicLevel.js +25 -34
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +270 -0
- package/lib/verifier/nodes/metaLevel.js +25 -34
- package/lib/verifier/nodes/statementAgainstCombinator.js +45 -49
- package/lib/verifier/nodes/termAgainstConstructor.js +24 -51
- package/lib/verify/argumentAgainstArgument.js +24 -0
- package/lib/verify/axiom.js +4 -4
- package/lib/verify/conjecture.js +4 -4
- package/lib/verify/containment.js +5 -5
- package/lib/verify/equality.js +9 -9
- package/lib/verify/label.js +8 -9
- package/lib/verify/labels.js +15 -8
- package/lib/verify/lemma.js +4 -4
- package/lib/verify/metaDerivation.js +19 -19
- package/lib/verify/metaLemma.js +4 -4
- package/lib/verify/metaproof.js +4 -6
- package/lib/verify/metastatement/qualified.js +3 -3
- package/lib/verify/metatheorem.js +4 -4
- package/lib/verify/metavariable.js +7 -5
- package/lib/verify/metavariableAgainstMetastatement.js +44 -0
- package/lib/verify/metavariableAgainstStatement.js +65 -0
- package/lib/verify/rule.js +4 -4
- package/lib/verify/statement/qualified.js +29 -29
- package/lib/verify/statement.js +4 -4
- package/lib/verify/statementAgainstMetaType.js +24 -0
- package/lib/verify/statementAtainstStatement.js +52 -0
- package/lib/verify/term.js +7 -8
- package/lib/verify/termAgainstTerm.js +22 -0
- package/lib/verify/termAgainstType.js +26 -0
- package/lib/verify/terms.js +2 -3
- package/lib/verify/theorem.js +4 -4
- package/lib/verify/type.js +7 -5
- package/lib/verify/typeAssertion.js +45 -40
- package/lib/verify/variable.js +7 -5
- package/lib/verify/variableAgainstTerm.js +70 -0
- package/package.json +4 -4
- package/src/axiomLemmaTheoremConjecture.js +13 -13
- package/src/conclusion.js +2 -2
- package/src/context/file.js +79 -73
- package/src/equality.js +3 -9
- package/src/equivalence.js +1 -1
- package/src/label.js +6 -7
- package/src/metaLemmaMetatheorem.js +13 -13
- package/src/mixins/context.js +17 -17
- package/src/premise.js +3 -3
- package/src/rule.js +13 -13
- package/src/ruleNames.js +0 -7
- package/src/substitution/metastatementForMetavariable.js +3 -1
- package/src/substitution/statementForMetavariable.js +32 -74
- package/src/substitution/termForVariable.js +3 -3
- package/src/utilities/name.js +7 -7
- package/src/utilities/node.js +13 -13
- package/src/utilities/query.js +3 -9
- package/src/utilities/tokens.js +4 -4
- package/src/utilities/verifier.js +46 -0
- package/src/verifier/node/metastatement.js +41 -34
- package/src/verifier/node/statementAsCombinator.js +39 -32
- package/src/verifier/node/termAsConstructor.js +30 -25
- package/src/verifier/nodes/equality.js +31 -36
- package/src/verifier/nodes/intrinsicLevel.js +30 -38
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +222 -0
- package/src/verifier/nodes/metaLevel.js +30 -38
- package/src/verifier/nodes/statementAgainstCombinator.js +52 -55
- package/src/verifier/nodes/termAgainstConstructor.js +30 -71
- package/src/verify/argumentAgainstArgument.js +15 -0
- package/src/verify/axiom.js +4 -4
- package/src/verify/conjecture.js +4 -4
- package/src/verify/containment.js +4 -4
- package/src/verify/equality.js +8 -8
- package/src/verify/label.js +8 -9
- package/src/verify/labels.js +17 -7
- package/src/verify/lemma.js +4 -4
- package/src/verify/metaDerivation.js +18 -18
- package/src/verify/metaLemma.js +6 -6
- package/src/verify/metaproof.js +3 -6
- package/src/verify/metastatement/qualified.js +5 -4
- package/src/verify/metatheorem.js +4 -4
- package/src/verify/metavariable.js +7 -5
- package/src/verify/metavariableAgainstMetastatement.js +42 -0
- package/src/verify/metavariableAgainstStatement.js +77 -0
- package/src/verify/rule.js +4 -4
- package/src/verify/statement/qualified.js +35 -30
- package/src/verify/statement.js +5 -5
- package/src/verify/statementAgainstMetaType.js +21 -0
- package/src/verify/statementAtainstStatement.js +60 -0
- package/src/verify/term.js +13 -17
- package/src/verify/termAgainstTerm.js +20 -0
- package/src/verify/termAgainstType.js +28 -0
- package/src/verify/terms.js +1 -3
- package/src/verify/theorem.js +4 -4
- package/src/verify/type.js +7 -5
- package/src/verify/typeAssertion.js +56 -55
- package/src/verify/variable.js +7 -5
- package/src/verify/variableAgainstTerm.js +86 -0
- package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +0 -327
- package/lib/verifier/nodes/substitution.js +0 -223
- package/lib/verify/givenMetavariable.js +0 -31
- package/lib/verify/givenType.js +0 -31
- package/lib/verify/givenVariable.js +0 -31
- package/lib/verify/termAndGivenType.js +0 -39
- package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +0 -219
- package/src/verifier/nodes/substitution.js +0 -125
- package/src/verify/givenMetavariable.js +0 -31
- package/src/verify/givenType.js +0 -31
- package/src/verify/givenVariable.js +0 -31
- package/src/verify/termAndGivenType.js +0 -37
|
@@ -0,0 +1,70 @@
|
|
|
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 verifyVariableAgainstTerm;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _term = /*#__PURE__*/ _interop_require_default(require("../verify/term"));
|
|
12
|
+
var _termForVariable = /*#__PURE__*/ _interop_require_default(require("../substitution/termForVariable"));
|
|
13
|
+
var _array = require("../utilities/array");
|
|
14
|
+
var _query = require("../utilities/query");
|
|
15
|
+
function _interop_require_default(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
var variableNodeQuery = (0, _query.nodeQuery)("/term/variable");
|
|
21
|
+
function verifyVariableAgainstTerm(variableNode, termNode, substitutions, localContextA, localContextB, verifyAhead) {
|
|
22
|
+
var variableVerifiedAgainstTerm = false;
|
|
23
|
+
var substitution = substitutions.find(function(substitution) {
|
|
24
|
+
var substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNode);
|
|
25
|
+
if (substitutionMatchesVariableNodeA) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}) || null;
|
|
29
|
+
if (substitution !== null) {
|
|
30
|
+
var termNodeMatches = substitution.matchTermNode(termNode);
|
|
31
|
+
if (termNodeMatches) {
|
|
32
|
+
var verifiedAhead = verifyAhead();
|
|
33
|
+
variableVerifiedAgainstTerm = verifiedAhead; ///
|
|
34
|
+
}
|
|
35
|
+
} else {
|
|
36
|
+
var variableA = localContextA.findVariableByVariableNode(variableNode);
|
|
37
|
+
if (variableA !== null) {
|
|
38
|
+
var terms = [], termVerified = (0, _term.default)(termNode, terms, localContextB, function() {
|
|
39
|
+
var verifiedAhead = false;
|
|
40
|
+
var firstTerm = (0, _array.first)(terms), termB = firstTerm, variableB = variableFromTerm(termB, localContextB);
|
|
41
|
+
if (variableA === variableB) {
|
|
42
|
+
verifiedAhead = verifyAhead();
|
|
43
|
+
} else {
|
|
44
|
+
var term = termB, variable = variableA, termType = term.getType(), variableType = variable.getType(), variableTypeEqualToOrSuperTypeOfTermType = variableType.isEqualToOrSuperTypeOf(termType);
|
|
45
|
+
if (variableTypeEqualToOrSuperTypeOfTermType) {
|
|
46
|
+
var termForVariableSubstitution = _termForVariable.default.fromVariableNodeAndTermNode(variableNode, termNode), substitution = termForVariableSubstitution; ///
|
|
47
|
+
substitutions.push(substitution);
|
|
48
|
+
verifiedAhead = verifyAhead();
|
|
49
|
+
if (!verifiedAhead) {
|
|
50
|
+
substitutions.pop();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return verifiedAhead;
|
|
55
|
+
});
|
|
56
|
+
variableVerifiedAgainstTerm = termVerified; ///
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return variableVerifiedAgainstTerm;
|
|
60
|
+
}
|
|
61
|
+
function variableFromTerm(term, localContext) {
|
|
62
|
+
var variable = null;
|
|
63
|
+
var termNode = term.getNode(), variableNode = variableNodeQuery(termNode);
|
|
64
|
+
if (variableNode !== null) {
|
|
65
|
+
variable = localContext.findVariableByVariableNode(variableNode);
|
|
66
|
+
}
|
|
67
|
+
return variable;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdmFyaWFibGVBZ2FpbnN0VGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4uL3ZlcmlmeS90ZXJtXCI7XG5pbXBvcnQgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb24vdGVybUZvclZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlWYXJpYWJsZUFnYWluc3RUZXJtKHZhcmlhYmxlTm9kZSwgdGVybU5vZGUsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB2YXJpYWJsZVZlcmlmaWVkQWdhaW5zdFRlcm0gPSBmYWxzZTtcblxuICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmQoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGVBID0gc3Vic3RpdHV0aW9uLm1hdGNoVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uTWF0Y2hlc1ZhcmlhYmxlTm9kZUEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSkgfHwgbnVsbDtcblxuICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybU5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgIHZhcmlhYmxlVmVyaWZpZWRBZ2FpbnN0VGVybSA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFyaWFibGVBID0gbG9jYWxDb250ZXh0QS5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlQSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHRCLCAoKSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlyc3RUZXJtID0gZmlyc3QodGVybXMpLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtQiA9IGZpcnN0VGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQiA9IHZhcmlhYmxlRnJvbVRlcm0odGVybUIsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgICAgICAgICAgIGlmICh2YXJpYWJsZUEgPT09IHZhcmlhYmxlQikge1xuICAgICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZXJtQiwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSB2YXJpYWJsZUEsIC8vL1xuICAgICAgICAgICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUgPSB2YXJpYWJsZVR5cGUuaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0ZXJtVHlwZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVUeXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uID0gVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21WYXJpYWJsZU5vZGVBbmRUZXJtTm9kZSh2YXJpYWJsZU5vZGUsIHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmICghdmVyaWZpZWRBaGVhZCkge1xuICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25zLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgIHZhcmlhYmxlVmVyaWZpZWRBZ2FpbnN0VGVybSA9IHRlcm1WZXJpZmllZDsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZVZlcmlmaWVkQWdhaW5zdFRlcm07XG59XG5cbmZ1bmN0aW9uIHZhcmlhYmxlRnJvbVRlcm0odGVybSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlO1xufSJdLCJuYW1lcyI6WyJ2ZXJpZnlWYXJpYWJsZUFnYWluc3RUZXJtIiwidmFyaWFibGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGUiLCJ0ZXJtTm9kZSIsInN1YnN0aXR1dGlvbnMiLCJsb2NhbENvbnRleHRBIiwibG9jYWxDb250ZXh0QiIsInZlcmlmeUFoZWFkIiwidmFyaWFibGVWZXJpZmllZEFnYWluc3RUZXJtIiwic3Vic3RpdHV0aW9uIiwiZmluZCIsInN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGVBIiwibWF0Y2hWYXJpYWJsZU5vZGUiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwidmVyaWZpZWRBaGVhZCIsInZhcmlhYmxlQSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidGVybXMiLCJ0ZXJtVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtIiwiZmlyc3RUZXJtIiwiZmlyc3QiLCJ0ZXJtQiIsInZhcmlhYmxlQiIsInZhcmlhYmxlRnJvbVRlcm0iLCJ0ZXJtIiwidmFyaWFibGUiLCJ0ZXJtVHlwZSIsImdldFR5cGUiLCJ2YXJpYWJsZVR5cGUiLCJ2YXJpYWJsZVR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlRlcm1UeXBlIiwiaXNFcXVhbFRvT3JTdXBlclR5cGVPZiIsInRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiIsIlRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiIsImZyb21WYXJpYWJsZU5vZGVBbmRUZXJtTm9kZSIsInB1c2giLCJwb3AiLCJsb2NhbENvbnRleHQiLCJnZXROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXdCQTs7OzJEQVJEO3NFQUNpQjtxQkFFbEI7cUJBQ0k7Ozs7OztBQUUxQixJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUM7QUFFckIsU0FBU0YsMEJBQTBCRyxZQUFZLEVBQUVDLFFBQVEsRUFBRUMsYUFBYSxFQUFFQyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsV0FBVztJQUNoSSxJQUFJQyw4QkFBOEI7SUFFbEMsSUFBTUMsZUFBZUwsY0FBY00sSUFBSSxDQUFDLFNBQUNEO1FBQ3ZDLElBQU1FLG1DQUFtQ0YsYUFBYUcsaUJBQWlCLENBQUNWO1FBRXhFLElBQUlTLGtDQUFrQztZQUNwQyxPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sSUFBSUYsaUJBQWlCLE1BQU07UUFDekIsSUFBTUksa0JBQWtCSixhQUFhSyxhQUFhLENBQUNYO1FBRW5ELElBQUlVLGlCQUFpQjtZQUNuQixJQUFNRSxnQkFBZ0JSO1lBRXRCQyw4QkFBOEJPLGVBQWdCLEdBQUc7UUFDbkQ7SUFDRixPQUFPO1FBQ0wsSUFBTUMsWUFBWVgsY0FBY1ksMEJBQTBCLENBQUNmO1FBRTNELElBQUljLGNBQWMsTUFBTTtZQUN0QixJQUFNRSxRQUFRLEVBQUUsRUFDVkMsZUFBZUMsSUFBQUEsYUFBVSxFQUFDakIsVUFBVWUsT0FBT1osZUFBZTtnQkFDeEQsSUFBSVMsZ0JBQWdCO2dCQUVwQixJQUFNTSxZQUFZQyxJQUFBQSxZQUFLLEVBQUNKLFFBQ2xCSyxRQUFRRixXQUNSRyxZQUFZQyxpQkFBaUJGLE9BQU9qQjtnQkFFMUMsSUFBSVUsY0FBY1EsV0FBVztvQkFDM0JULGdCQUFnQlI7Z0JBQ2xCLE9BQU87b0JBQ0wsSUFBTW1CLE9BQU9ILE9BQ1BJLFdBQVdYLFdBQ1hZLFdBQVdGLEtBQUtHLE9BQU8sSUFDdkJDLGVBQWVILFNBQVNFLE9BQU8sSUFDL0JFLDJDQUEyQ0QsYUFBYUUsc0JBQXNCLENBQUNKO29CQUVyRixJQUFJRywwQ0FBMEM7d0JBQzVDLElBQU1FLDhCQUE4QkMsd0JBQTJCLENBQUNDLDJCQUEyQixDQUFDakMsY0FBY0MsV0FDcEdNLGVBQWV3Qiw2QkFBOEIsR0FBRzt3QkFFdEQ3QixjQUFjZ0MsSUFBSSxDQUFDM0I7d0JBRW5CTSxnQkFBZ0JSO3dCQUVoQixJQUFJLENBQUNRLGVBQWU7NEJBQ2xCWCxjQUFjaUMsR0FBRzt3QkFDbkI7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsT0FBT3RCO1lBQ1Q7WUFFTlAsOEJBQThCVyxjQUFlLEdBQUc7UUFDbEQ7SUFDRjtJQUVBLE9BQU9YO0FBQ1Q7QUFFQSxTQUFTaUIsaUJBQWlCQyxJQUFJLEVBQUVZLFlBQVk7SUFDMUMsSUFBSVgsV0FBVztJQUVmLElBQU14QixXQUFXdUIsS0FBS2EsT0FBTyxJQUN2QnJDLGVBQWVGLGtCQUFrQkc7SUFFdkMsSUFBSUQsaUJBQWlCLE1BQU07UUFDekJ5QixXQUFXVyxhQUFhckIsMEJBQTBCLENBQUNmO0lBQ3JEO0lBRUEsT0FBT3lCO0FBQ1QifQ==
|
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.871",
|
|
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.28",
|
|
14
14
|
"necessary": "^14.0.1",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
16
|
-
"occam-entities": "^1.0.
|
|
17
|
-
"occam-file-system": "^6.0.
|
|
15
|
+
"occam-custom-grammars": "^5.0.777",
|
|
16
|
+
"occam-entities": "^1.0.134",
|
|
17
|
+
"occam-file-system": "^6.0.176",
|
|
18
18
|
"occam-grammar-utilities": "^8.0.205",
|
|
19
19
|
"occam-query": "^3.1.174"
|
|
20
20
|
},
|
|
@@ -32,19 +32,6 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
32
32
|
return this.localContext;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
matchLabelNode(labelNode) {
|
|
36
|
-
const labelNodeMatches = this.labels.some((label) => {
|
|
37
|
-
const node = labelNode, ///
|
|
38
|
-
labelMatchesNode = label.matchNode(node);
|
|
39
|
-
|
|
40
|
-
if (labelMatchesNode) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
return labelNodeMatches;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
35
|
matchStatement(statementNode, statementLocalContext) {
|
|
49
36
|
let statementNatches;
|
|
50
37
|
|
|
@@ -79,6 +66,19 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
79
66
|
return statementNatches;
|
|
80
67
|
}
|
|
81
68
|
|
|
69
|
+
matchLabelMetavariableNode(labelMetavariableNode) {
|
|
70
|
+
const labelMetavariableNodeMatches = this.labels.some((label) => {
|
|
71
|
+
const node = labelMetavariableNode, ///
|
|
72
|
+
labelMatchesNode = label.matchNode(node);
|
|
73
|
+
|
|
74
|
+
if (labelMatchesNode) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return labelMetavariableNodeMatches;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
82
|
toJSON(tokens) {
|
|
83
83
|
const labelsJSON = this.labels.map((label) => {
|
|
84
84
|
const labelJSON = label.toJSON(tokens);
|
package/src/conclusion.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
4
|
-
import
|
|
4
|
+
import intrinsicLevelAgainstMetaLevelNodesVerifier from "./verifier/nodes/intrinsicLevelAgainstMetaLevel";
|
|
5
5
|
|
|
6
6
|
import { nodeAsString } from "./utilities/string";
|
|
7
7
|
import { metastatementNodeFromMetastatementString } from "./utilities/node";
|
|
@@ -20,7 +20,7 @@ export default class Conclusion {
|
|
|
20
20
|
nonTerminalNodeB = statementNode, ///
|
|
21
21
|
localContextA = localContext, ///
|
|
22
22
|
localContextB = statementLocalContext, ///
|
|
23
|
-
nonTerminalNodeVerified =
|
|
23
|
+
nonTerminalNodeVerified = intrinsicLevelAgainstMetaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
24
24
|
const verifyAhead = true;
|
|
25
25
|
|
|
26
26
|
return verifyAhead;
|
package/src/context/file.js
CHANGED
|
@@ -115,6 +115,12 @@ export default class FileContext {
|
|
|
115
115
|
push(labels, conjectureLabels);
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
+
this.metatheorems.forEach((metatheorem) => {
|
|
119
|
+
const metatheoremLabels = metatheorem.getLabels();
|
|
120
|
+
|
|
121
|
+
push(labels, metatheoremLabels);
|
|
122
|
+
});
|
|
123
|
+
|
|
118
124
|
if (includeRelease) {
|
|
119
125
|
const releaseContextLabels = this.releaseContext.getLabels();
|
|
120
126
|
|
|
@@ -308,8 +314,49 @@ export default class FileContext {
|
|
|
308
314
|
return type;
|
|
309
315
|
}
|
|
310
316
|
|
|
311
|
-
|
|
312
|
-
const
|
|
317
|
+
findVariableByVariableNode(variableNode) {
|
|
318
|
+
const node = variableNode, ///
|
|
319
|
+
variables = this.getVariables(),
|
|
320
|
+
variable = variables.find((variable) => {
|
|
321
|
+
const nodeMatches = variable.matchNode(node);
|
|
322
|
+
|
|
323
|
+
if (nodeMatches) {
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
}) || null;
|
|
327
|
+
|
|
328
|
+
return variable;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
findMetaTypeByMetaTypeNode(metaTypeNode) {
|
|
332
|
+
const metaTypes = this.getMetaTypes(),
|
|
333
|
+
metaType = metaTypes.find((metaType) => {
|
|
334
|
+
const matches = metaType.matchMetaTypeNode(metaTypeNode);
|
|
335
|
+
|
|
336
|
+
if (matches) {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
}) || null;
|
|
340
|
+
|
|
341
|
+
return metaType;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
findMetavariableByMetavariableNode(metavariableNode) {
|
|
345
|
+
const node = metavariableNode, ///
|
|
346
|
+
metavariables = this.getMetavariables(),
|
|
347
|
+
metavariable = metavariables.find((metavariable) => {
|
|
348
|
+
const matches = metavariable.matchNode(node);
|
|
349
|
+
|
|
350
|
+
if (matches) {
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
}) || null;
|
|
354
|
+
|
|
355
|
+
return metavariable;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
findLabelByLabelMetavariableNode(labelMetavariableNode) {
|
|
359
|
+
const name = labelMetavariableNode, ///
|
|
313
360
|
labels = this.getLabels(),
|
|
314
361
|
label = labels.find((label) => {
|
|
315
362
|
const matches = label.matchNode(name);
|
|
@@ -322,12 +369,12 @@ export default class FileContext {
|
|
|
322
369
|
return label;
|
|
323
370
|
}
|
|
324
371
|
|
|
325
|
-
|
|
372
|
+
findRuleByLabelMetavariableNode(labelMetavariableNode) {
|
|
326
373
|
const rules = this.getRules(),
|
|
327
374
|
rule = rules.find((rule) => {
|
|
328
|
-
const
|
|
375
|
+
const ruleMatchesLabelMetavariableNode = rule.matchLabelMetavariableNode(labelMetavariableNode);
|
|
329
376
|
|
|
330
|
-
if (
|
|
377
|
+
if (ruleMatchesLabelMetavariableNode) {
|
|
331
378
|
return true;
|
|
332
379
|
}
|
|
333
380
|
}) || null;
|
|
@@ -335,12 +382,12 @@ export default class FileContext {
|
|
|
335
382
|
return rule;
|
|
336
383
|
}
|
|
337
384
|
|
|
338
|
-
|
|
385
|
+
findAxiomByLabelMetavariableNode(labelMetavariableNode) {
|
|
339
386
|
const axioms = this.getAxioms(),
|
|
340
387
|
axiom = axioms.find((axiom) => {
|
|
341
|
-
const
|
|
388
|
+
const axiomMatchesLabelMetavariableNode = axiom.matchLabelMetavariableNode(labelMetavariableNode);
|
|
342
389
|
|
|
343
|
-
if (
|
|
390
|
+
if (axiomMatchesLabelMetavariableNode) {
|
|
344
391
|
return true;
|
|
345
392
|
}
|
|
346
393
|
}) || null;
|
|
@@ -348,12 +395,12 @@ export default class FileContext {
|
|
|
348
395
|
return axiom;
|
|
349
396
|
}
|
|
350
397
|
|
|
351
|
-
|
|
398
|
+
findLemmaByLabelMetavariableNode(labelMetavariableNode) {
|
|
352
399
|
const lemmas = this.getLemmas(),
|
|
353
400
|
lemma = lemmas.find((lemma) => {
|
|
354
|
-
const
|
|
401
|
+
const lemmaMatchesLabelMetavariableNode = lemma.matchLabelMetavariableNode(labelMetavariableNode);
|
|
355
402
|
|
|
356
|
-
if (
|
|
403
|
+
if (lemmaMatchesLabelMetavariableNode) {
|
|
357
404
|
return true;
|
|
358
405
|
}
|
|
359
406
|
}) || null;
|
|
@@ -361,12 +408,12 @@ export default class FileContext {
|
|
|
361
408
|
return lemma;
|
|
362
409
|
}
|
|
363
410
|
|
|
364
|
-
|
|
411
|
+
findTheoremByLabelMetavariableNode(labelMetavariableNode) {
|
|
365
412
|
const theorems = this.getTheorems(),
|
|
366
413
|
theorem = theorems.find((theorem) => {
|
|
367
|
-
const
|
|
414
|
+
const theoremMatchesLabelMetavariableNode = theorem.matchLabelMetavariableNode(labelMetavariableNode);
|
|
368
415
|
|
|
369
|
-
if (
|
|
416
|
+
if (theoremMatchesLabelMetavariableNode) {
|
|
370
417
|
return true;
|
|
371
418
|
}
|
|
372
419
|
}) || null;
|
|
@@ -374,12 +421,12 @@ export default class FileContext {
|
|
|
374
421
|
return theorem;
|
|
375
422
|
}
|
|
376
423
|
|
|
377
|
-
|
|
424
|
+
findMetaLemmaByLabelMetavariableNode(labelMetavariableNode) {
|
|
378
425
|
const metaLemmas = this.getMetaLemmas(),
|
|
379
426
|
metaLemma = metaLemmas.find((metaLemma) => {
|
|
380
|
-
const
|
|
427
|
+
const metaLemmaMatchesLabelMetavariableNode = metaLemma.matchLabelMetavariableNode(labelMetavariableNode);
|
|
381
428
|
|
|
382
|
-
if (
|
|
429
|
+
if (metaLemmaMatchesLabelMetavariableNode) {
|
|
383
430
|
return true;
|
|
384
431
|
}
|
|
385
432
|
}) || null;
|
|
@@ -387,39 +434,12 @@ export default class FileContext {
|
|
|
387
434
|
return metaLemma;
|
|
388
435
|
}
|
|
389
436
|
|
|
390
|
-
|
|
391
|
-
const node = variableNode, ///
|
|
392
|
-
variables = this.getVariables(),
|
|
393
|
-
variable = variables.find((variable) => {
|
|
394
|
-
const nodeMatches = variable.matchNode(node);
|
|
395
|
-
|
|
396
|
-
if (nodeMatches) {
|
|
397
|
-
return true;
|
|
398
|
-
}
|
|
399
|
-
}) || null;
|
|
400
|
-
|
|
401
|
-
return variable;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
findMetaTypeByMetaTypeNode(metaTypeNode) {
|
|
405
|
-
const metaTypes = this.getMetaTypes(),
|
|
406
|
-
metaType = metaTypes.find((metaType) => {
|
|
407
|
-
const matches = metaType.matchMetaTypeNode(metaTypeNode);
|
|
408
|
-
|
|
409
|
-
if (matches) {
|
|
410
|
-
return true;
|
|
411
|
-
}
|
|
412
|
-
}) || null;
|
|
413
|
-
|
|
414
|
-
return metaType;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
findConjectureByLabelNode(labelNode) {
|
|
437
|
+
findConjectureByLabelMetavariableNode(labelMetavariableNode) {
|
|
418
438
|
const conjectures = this.getConjectures(),
|
|
419
439
|
conjecture = conjectures.find((conjecture) => {
|
|
420
|
-
const
|
|
440
|
+
const conjectureMatchesLabelMetavariableNode = conjecture.matchLabelMetavariableNode(labelMetavariableNode);
|
|
421
441
|
|
|
422
|
-
if (
|
|
442
|
+
if (conjectureMatchesLabelMetavariableNode) {
|
|
423
443
|
return true;
|
|
424
444
|
}
|
|
425
445
|
}) || null;
|
|
@@ -427,26 +447,12 @@ export default class FileContext {
|
|
|
427
447
|
return conjecture;
|
|
428
448
|
}
|
|
429
449
|
|
|
430
|
-
|
|
431
|
-
const node = metavariableNode, ///
|
|
432
|
-
metavariables = this.getMetavariables(),
|
|
433
|
-
metavariable = metavariables.find((metavariable) => {
|
|
434
|
-
const matches = metavariable.matchNode(node);
|
|
435
|
-
|
|
436
|
-
if (matches) {
|
|
437
|
-
return true;
|
|
438
|
-
}
|
|
439
|
-
}) || null;
|
|
440
|
-
|
|
441
|
-
return metavariable;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
findMetatheoremByLabelNode(labelNode) {
|
|
450
|
+
findMetatheoremByLabelMetavariableNode(labelMetavariableNode) {
|
|
445
451
|
const metatheorems = this.getMetatheorems(),
|
|
446
452
|
metatheorem = metatheorems.find((metatheorem) => {
|
|
447
|
-
const
|
|
453
|
+
const metatheoremMatchesLabelMetavariableNode = metatheorem.matchLabelMetavariableNode(labelMetavariableNode);
|
|
448
454
|
|
|
449
|
-
if (
|
|
455
|
+
if (metatheoremMatchesLabelMetavariableNode) {
|
|
450
456
|
return true;
|
|
451
457
|
}
|
|
452
458
|
}) || null;
|
|
@@ -468,13 +474,6 @@ export default class FileContext {
|
|
|
468
474
|
return typePresent;
|
|
469
475
|
}
|
|
470
476
|
|
|
471
|
-
isLabelPresentByLabelNode(labelNode) {
|
|
472
|
-
const label = this.findLabelByLabelNode(labelNode),
|
|
473
|
-
labelPresent = (label !== null);
|
|
474
|
-
|
|
475
|
-
return labelPresent;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
477
|
isVariablePresentByVariableNode(variableNode) {
|
|
479
478
|
const variable = this.findVariableByVariableNode(variableNode),
|
|
480
479
|
variablePresent = (variable !== null);
|
|
@@ -482,6 +481,13 @@ export default class FileContext {
|
|
|
482
481
|
return variablePresent;
|
|
483
482
|
}
|
|
484
483
|
|
|
484
|
+
isLabelPresentByLabelMetavariableNode(labelMetavariableNode) {
|
|
485
|
+
const label = this.findLabelByLabelMetavariableNode(labelMetavariableNode),
|
|
486
|
+
labelPresent = (label !== null);
|
|
487
|
+
|
|
488
|
+
return labelPresent;
|
|
489
|
+
}
|
|
490
|
+
|
|
485
491
|
isMetavariablePresentByMetavariableNode(metavariableNode) {
|
|
486
492
|
const metavariable = this.findMetavariableByMetavariableNode(metavariableNode),
|
|
487
493
|
metavariablePresent = (metavariable !== null);
|
|
@@ -727,11 +733,11 @@ export default class FileContext {
|
|
|
727
733
|
lemmasJSON = lemmas, ///
|
|
728
734
|
theoremsJSON = theorems, ///
|
|
729
735
|
variablesJSON = variables, ///
|
|
730
|
-
metaLemmasJSON = metaLemmas
|
|
736
|
+
metaLemmasJSON = metaLemmas, ///
|
|
731
737
|
conjecturesJSON = conjectures, ///
|
|
732
738
|
combinatorsJSON = combinators, ///
|
|
733
739
|
constructorsJSON = constructors, ///
|
|
734
|
-
metatheoremsJSON = metatheorems
|
|
740
|
+
metatheoremsJSON = metatheorems, ///
|
|
735
741
|
metavariablesJSON = metavariables; ///
|
|
736
742
|
|
|
737
743
|
typesJSON.forEach((typeJSON) => {
|
package/src/equality.js
CHANGED
|
@@ -29,17 +29,11 @@ export default class Equality {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
isEqual(localContext) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
leftTermNode = leftTerm.getNode(),
|
|
35
|
-
rightTermNode = rightTerm.getNode(),
|
|
32
|
+
const leftTermNode = this.leftTerm.getNode(),
|
|
33
|
+
rightTermNode = this.rightTerm.getNode(),
|
|
36
34
|
nonTerminalNodeA = leftTermNode, ///
|
|
37
35
|
nonTerminalNodeB = rightTermNode, ///
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
localContext = this; ///
|
|
41
|
-
|
|
42
|
-
const nonTerminalNodeVerified = equalityNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, equivalences, localContext, () => {
|
|
36
|
+
nonTerminalNodeVerified = equalityNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, () => {
|
|
43
37
|
const verifiedAhead = true;
|
|
44
38
|
|
|
45
39
|
return verifiedAhead;
|
package/src/equivalence.js
CHANGED
package/src/label.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { nodeAsString } from "./utilities/string";
|
|
4
|
-
import {
|
|
5
|
-
import { labelNodeFromLabelString } from "./utilities/node";
|
|
4
|
+
import { metavariableNodeFromMetavariableString } from "./utilities/node";
|
|
6
5
|
|
|
7
6
|
export default class Label {
|
|
8
7
|
constructor(node) {
|
|
@@ -32,19 +31,19 @@ export default class Label {
|
|
|
32
31
|
return json;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
static
|
|
36
|
-
const node =
|
|
34
|
+
static fromMetavariableNode(metavariableNode) {
|
|
35
|
+
const node = metavariableNode, ///
|
|
37
36
|
variable = new Label(node);
|
|
38
37
|
|
|
39
38
|
return variable;
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
static fromJSONAndFileContext(json, fileContext) {
|
|
43
|
-
const
|
|
42
|
+
const metavariableString = json, ///
|
|
44
43
|
lexer = fileContext.getLexer(),
|
|
45
44
|
parser = fileContext.getParser(),
|
|
46
|
-
|
|
47
|
-
node =
|
|
45
|
+
metavariableNode = metavariableNodeFromMetavariableString(metavariableString, lexer, parser),
|
|
46
|
+
node = metavariableNode, ///
|
|
48
47
|
label = new Label(node);
|
|
49
48
|
|
|
50
49
|
return label;
|
|
@@ -32,19 +32,6 @@ export default class MetaLemmaMetatheorem {
|
|
|
32
32
|
return this.localContext;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
matchLabelNode(labelNode) {
|
|
36
|
-
const labelNodeMatches = this.labels.some((label) => {
|
|
37
|
-
const node = labelNode, ///
|
|
38
|
-
labelMatchesNode = label.matchNode(node);
|
|
39
|
-
|
|
40
|
-
if (labelMatchesNode) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
return labelNodeMatches;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
35
|
matchMetastatement(metastatementNode, metastatementLocalContext) {
|
|
49
36
|
let metastatementNatches;
|
|
50
37
|
|
|
@@ -79,6 +66,19 @@ export default class MetaLemmaMetatheorem {
|
|
|
79
66
|
return metastatementNatches;
|
|
80
67
|
}
|
|
81
68
|
|
|
69
|
+
matchLabelMetavariableNode(labelMetavariableNode) {
|
|
70
|
+
const labelMetavariableNodeMatches = this.labels.some((label) => {
|
|
71
|
+
const node = labelMetavariableNode, ///
|
|
72
|
+
labelMatchesNode = label.matchNode(node);
|
|
73
|
+
|
|
74
|
+
if (labelMatchesNode) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return labelMetavariableNodeMatches;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
82
|
toJSON(tokens) {
|
|
83
83
|
const labelsJSON = this.labels.map((label) => {
|
|
84
84
|
const labelJSON = label.toJSON(tokens);
|
package/src/mixins/context.js
CHANGED
|
@@ -26,25 +26,25 @@ function getConstructors() { return this.context.getConstructors(); }
|
|
|
26
26
|
|
|
27
27
|
function findTypeByTypeName(typeName) { return this.context.findTypeByTypeName(typeName); }
|
|
28
28
|
|
|
29
|
-
function findTypeByTypeNode(
|
|
29
|
+
function findTypeByTypeNode(labelMetavariableNode) { return this.context.findTypeByTypeNode(labelMetavariableNode); }
|
|
30
30
|
|
|
31
|
-
function
|
|
31
|
+
function isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
|
|
32
32
|
|
|
33
|
-
function
|
|
33
|
+
function isTypePresentByTypeNode(typeNode) { return this.context.isTypePresentByTypeNode(typeNode); }
|
|
34
34
|
|
|
35
|
-
function
|
|
35
|
+
function findLabelByLabelMetavariableNode(labelMetavariableNode) { return this.context.findLabelByLabelMetavariableNode(labelMetavariableNode); }
|
|
36
36
|
|
|
37
|
-
function
|
|
37
|
+
function findRuleByLabelMetavariableNode(labelMetavariableNode) { return this.context.findRuleByLabelMetavariableNode(labelMetavariableNode); }
|
|
38
38
|
|
|
39
|
-
function
|
|
39
|
+
function findAxiomByLabelMetavariableNode(labelMetavariableNode) { return this.context.findAxiomByLabelMetavariableNode(labelMetavariableNode); }
|
|
40
40
|
|
|
41
|
-
function
|
|
41
|
+
function findLemmaByLabelMetavariableNode(labelMetavariableNode) { return this.context.findLemmaByLabelMetavariableNode(labelMetavariableNode); }
|
|
42
42
|
|
|
43
|
-
function
|
|
43
|
+
function findTheoremByLabelMetavariableNode(labelMetavariableNode) { return this.context.findTheoremByLabelMetavariableNode(labelMetavariableNode); }
|
|
44
44
|
|
|
45
|
-
function
|
|
45
|
+
function findConjectureByLabelMetavariableNode(labelMetavariableNode) { return this.context.findConjectureByLabelMetavariableNode(labelMetavariableNode); }
|
|
46
46
|
|
|
47
|
-
function
|
|
47
|
+
function isLabelPresentByLabelMetavariableNode(labelMetavariableNode) { return this.context.isLabelPresentByLabelMetavariableNode(labelMetavariableNode); }
|
|
48
48
|
|
|
49
49
|
function nodeAsString(node) { return this.context.nodeAsString(node); }
|
|
50
50
|
|
|
@@ -65,15 +65,15 @@ const contextMixins = {
|
|
|
65
65
|
getConstructors,
|
|
66
66
|
findTypeByTypeName,
|
|
67
67
|
findTypeByTypeNode,
|
|
68
|
-
findLabelByLabelNode,
|
|
69
|
-
findRuleByLabelNode,
|
|
70
|
-
findAxiomByLabelNode,
|
|
71
|
-
findLemmaByLabelNode,
|
|
72
|
-
findTheoremByLabelNode,
|
|
73
|
-
findConjectureByLabelNode,
|
|
74
68
|
isTypePresentByTypeName,
|
|
75
69
|
isTypePresentByTypeNode,
|
|
76
|
-
|
|
70
|
+
findLabelByLabelMetavariableNode,
|
|
71
|
+
findRuleByLabelMetavariableNode,
|
|
72
|
+
findAxiomByLabelMetavariableNode,
|
|
73
|
+
findLemmaByLabelMetavariableNode,
|
|
74
|
+
findTheoremByLabelMetavariableNode,
|
|
75
|
+
findConjectureByLabelMetavariableNode,
|
|
76
|
+
isLabelPresentByLabelMetavariableNode,
|
|
77
77
|
nodeAsString,
|
|
78
78
|
nodesAsString
|
|
79
79
|
};
|
package/src/premise.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import LocalContext from "./context/local";
|
|
4
4
|
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
5
|
-
import
|
|
5
|
+
import intrinsicLevelAgainstMetaLevelNodesVerifier from "./verifier/nodes/intrinsicLevelAgainstMetaLevel";
|
|
6
6
|
|
|
7
7
|
import { match } from "./utilities/array";
|
|
8
8
|
import { nodeAsString } from "./utilities/string";
|
|
@@ -48,7 +48,7 @@ export default class Premise {
|
|
|
48
48
|
fileContextA = fileContext, ///
|
|
49
49
|
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
50
50
|
localContextB = statementLocalContext, ///
|
|
51
|
-
nonTerminalNodeVerified =
|
|
51
|
+
nonTerminalNodeVerified = intrinsicLevelAgainstMetaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
52
52
|
const verifiedAhead = true;
|
|
53
53
|
|
|
54
54
|
return verifiedAhead;
|
|
@@ -70,7 +70,7 @@ export default class Premise {
|
|
|
70
70
|
fileContextA = fileContext, ///
|
|
71
71
|
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
72
72
|
localContextB = statementLocalContext, ///
|
|
73
|
-
nonTerminalNodeVerified =
|
|
73
|
+
nonTerminalNodeVerified = intrinsicLevelAgainstMetaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
74
74
|
const verifiedAhead = true;
|
|
75
75
|
|
|
76
76
|
return verifiedAhead;
|
package/src/rule.js
CHANGED
|
@@ -31,19 +31,6 @@ export default class Rule {
|
|
|
31
31
|
return this.fileContext;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
matchLabelNode(labelNode) {
|
|
35
|
-
const labelNodeMatches = this.labels.some((label) => {
|
|
36
|
-
const node = labelNode, ///
|
|
37
|
-
labelMatchesNode = label.matchNode(node);
|
|
38
|
-
|
|
39
|
-
if (labelMatchesNode) {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
return labelNodeMatches;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
34
|
matchStatement(statementNode, statementLocalContext) {
|
|
48
35
|
let statementNatches;
|
|
49
36
|
|
|
@@ -112,6 +99,19 @@ export default class Rule {
|
|
|
112
99
|
return metastatementNatches;
|
|
113
100
|
}
|
|
114
101
|
|
|
102
|
+
matchLabelMetavariableNode(labelMetavariableNode) {
|
|
103
|
+
const labelMetavariableNodeMatches = this.labels.some((label) => {
|
|
104
|
+
const node = labelMetavariableNode, ///
|
|
105
|
+
labelMatchesNode = label.matchNode(node);
|
|
106
|
+
|
|
107
|
+
if (labelMatchesNode) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
return labelMetavariableNodeMatches;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
115
|
toJSON(tokens) {
|
|
116
116
|
const labelsJSON = this.labels.map((label) => {
|
|
117
117
|
const labelJSON = label.toJSON(tokens);
|
package/src/ruleNames.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
export const TERM_RULE_NAME = "term";
|
|
4
|
-
export const TYPE_RULE_NAME = "type";
|
|
5
|
-
export const LABEL_RULE_NAME = "label";
|
|
6
|
-
export const VARIABLE_RULE_NAME = "variable";
|
|
7
|
-
export const ARGUMENT_RULE_NAME = "argument";
|
|
8
3
|
export const SUBPROOF_RULE_NAME = "subproof";
|
|
9
|
-
export const STATEMENT_RULE_NAME = "statement";
|
|
10
4
|
export const METAVARIABLE_RULE_NAME = "metavariable";
|
|
11
|
-
export const METASTATEMENT_RULE_NAME = "metastatement";
|
|
12
5
|
export const RULE_SUBPROOF_RULE_NAME = "ruleSubproof";
|
|
13
6
|
export const META_SUBPROOF_RULE_NAME = "metaSubproof";
|
|
14
7
|
export const META_ARGUMENT_RULE_NAME = "metaArgument";
|