occam-verify-cli 0.0.915 → 0.0.917
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/assignment/judgement.js +62 -0
- package/lib/axiom.js +11 -24
- package/lib/conjecture.js +11 -24
- package/lib/constants.js +9 -1
- package/lib/constructor/bracketed.js +11 -24
- package/lib/context/file.js +5 -5
- package/lib/context/local/metaLevel.js +46 -54
- package/lib/judgement.js +87 -0
- package/lib/lemma.js +11 -24
- package/lib/metaLemma.js +11 -24
- package/lib/metaType/frame.js +11 -24
- package/lib/metaType/reference.js +11 -24
- package/lib/metaType/statement.js +11 -24
- package/lib/metatheorem.js +11 -24
- package/lib/ocmbinator/bracketed.js +11 -24
- package/lib/substitution/metastatementForMetavariable.js +11 -24
- package/lib/substitution/statementForMetavariable.js +11 -24
- package/lib/substitution/termForVariable.js +11 -24
- package/lib/theorem.js +11 -24
- package/lib/type.js +11 -24
- package/lib/utilities/verify.js +7 -7
- package/lib/verifier/node/metaLevel.js +11 -24
- package/lib/verifier/node/statementAsCombinator.js +11 -24
- package/lib/verifier/node/termAsConstructor.js +11 -24
- package/lib/verifier/nodes/equality.js +11 -24
- package/lib/verifier/nodes/intrinsicLevel.js +11 -24
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +11 -24
- package/lib/verifier/nodes/metaLevel.js +11 -24
- package/lib/verifier/nodes/statementAgainstCombinator.js +11 -24
- package/lib/verifier/nodes/termAgainstConstructor.js +11 -24
- package/lib/verify/frame.js +6 -6
- package/lib/verify/judgement.js +121 -0
- package/lib/verify/metastatement.js +20 -16
- package/lib/verify/statement.js +45 -46
- package/lib/verify/statementAsContainedAssertion.js +93 -0
- package/lib/verify/statementAsDefinedAssertion.js +111 -0
- package/package.json +2 -2
- package/src/assignment/judgement.js +30 -0
- package/src/constants.js +2 -0
- package/src/context/file.js +3 -3
- package/src/context/local/metaLevel.js +35 -35
- package/src/{frameAssertion.js → judgement.js} +5 -5
- package/src/utilities/verify.js +5 -5
- package/src/verify/frame.js +5 -5
- package/src/verify/{frameAssertion.js → judgement.js} +46 -46
- package/src/verify/metastatement.js +23 -15
- package/src/verify/statement.js +70 -70
- package/src/verify/statementAsContainedAssertion.js +112 -0
- package/src/verify/statementAsDefinedAssertion.js +136 -0
- package/lib/assignment/frameAssertion.js +0 -62
- package/lib/frameAssertion.js +0 -87
- package/lib/verify/containedAssertion.js +0 -93
- package/lib/verify/definedAssertion.js +0 -111
- package/lib/verify/frameAssertion.js +0 -121
- package/src/assignment/frameAssertion.js +0 -30
- package/src/verify/containedAssertion.js +0 -112
- package/src/verify/definedAssertion.js +0 -137
|
@@ -0,0 +1,111 @@
|
|
|
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 verifyStatementAsDefinedAssertion;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _term = /*#__PURE__*/ _interop_require_default(require("./term"));
|
|
12
|
+
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../verifier/node/metaLevel"));
|
|
13
|
+
var _array = require("../utilities/array");
|
|
14
|
+
var _query = require("../utilities/query");
|
|
15
|
+
var _verify = require("../utilities/verify");
|
|
16
|
+
function _interop_require_default(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
var termNodeQuery = (0, _query.nodeQuery)("/statement/term!"), variableNodeQuery = (0, _query.nodeQuery)("/statement/term/variable!");
|
|
22
|
+
function verifyStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
23
|
+
var statementVerifiedAsDefinedAssertion;
|
|
24
|
+
var statementString = localContext.nodeAsString(statementNode);
|
|
25
|
+
localContext.trace("Verifying the '".concat(statementString, "' statement as a defined assertion..."), statementNode);
|
|
26
|
+
var definedAssertionFunctions = [
|
|
27
|
+
verifyDerivedStatementAsDefinedAssertion,
|
|
28
|
+
verifyStatedStatementAsDefinedAssertion
|
|
29
|
+
];
|
|
30
|
+
statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some(function(definedAssertionFunction) {
|
|
31
|
+
var statementVerifiedAsDefinedAssertion = definedAssertionFunction(statementNode, assignments, derived, localContext);
|
|
32
|
+
if (statementVerifiedAsDefinedAssertion) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
if (statementVerifiedAsDefinedAssertion) {
|
|
37
|
+
localContext.debug("...verified the '".concat(statementString, "' statement as a defined assertion."), statementNode);
|
|
38
|
+
}
|
|
39
|
+
return statementVerifiedAsDefinedAssertion;
|
|
40
|
+
}
|
|
41
|
+
function verifyDerivedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
42
|
+
var derivedStatementVerifiedAsDefeindAssertion = false;
|
|
43
|
+
if (derived) {
|
|
44
|
+
var statementString = localContext.nodeAsString(statementNode);
|
|
45
|
+
localContext.trace("Verifying the derived '".concat(statementString, "' statement as a defined assertion..."), statementNode);
|
|
46
|
+
var statementNegated = (0, _verify.isStatementNegated)(statementNode), variableNode = variableNodeQuery(statementNode), termNode = termNodeQuery(statementNode);
|
|
47
|
+
if (false) {
|
|
48
|
+
///
|
|
49
|
+
} else if (variableNode !== null) {
|
|
50
|
+
var variable = localContext.findVariableByVariableNode(variableNode);
|
|
51
|
+
if (variable !== null) {
|
|
52
|
+
var variableDefined = localContext.isVariableDefined(variable);
|
|
53
|
+
if (!statementNegated) {
|
|
54
|
+
if (variableDefined) {
|
|
55
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (statementNegated) {
|
|
59
|
+
if (!variableDefined) {
|
|
60
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
} else if (termNode !== null) {
|
|
65
|
+
var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext, function() {
|
|
66
|
+
var verifiedAhead = true;
|
|
67
|
+
return verifiedAhead;
|
|
68
|
+
});
|
|
69
|
+
if (termVerified) {
|
|
70
|
+
var firstTerm = (0, _array.first)(terms), term = firstTerm, termGrounded = localContext.isTermGrounded(term);
|
|
71
|
+
if (!statementNegated) {
|
|
72
|
+
if (termGrounded) {
|
|
73
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (statementNegated) {
|
|
77
|
+
if (!termGrounded) {
|
|
78
|
+
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (derivedStatementVerifiedAsDefeindAssertion) {
|
|
84
|
+
localContext.debug("...verified the derived '".concat(statementString, "' statement as a defined assertion."), statementNode);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return derivedStatementVerifiedAsDefeindAssertion;
|
|
88
|
+
}
|
|
89
|
+
function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
|
|
90
|
+
var statedStatementVerifiedAsDefinedAssertion = false;
|
|
91
|
+
if (!derived) {
|
|
92
|
+
var statementString = localContext.nodeAsString(statementNode);
|
|
93
|
+
localContext.trace("Verifying the stated '".concat(statementString, "' statement as a defined assertion..."), statementNode);
|
|
94
|
+
var intrinsicLevel = localContext.isIntrinsicLevel();
|
|
95
|
+
if (intrinsicLevel) {
|
|
96
|
+
localContext.debug("The stated '".concat(statementString, "' statement as a defined assertion cannot be verified at intrinsic level."), statementNode);
|
|
97
|
+
} else {
|
|
98
|
+
var nonTerminalNode = statementNode, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNode, localContext, function() {
|
|
99
|
+
var verifiedAhead = true;
|
|
100
|
+
return verifiedAhead;
|
|
101
|
+
});
|
|
102
|
+
statedStatementVerifiedAsDefinedAssertion = nonTerminalNodeVerified; ///
|
|
103
|
+
}
|
|
104
|
+
if (statedStatementVerifiedAsDefinedAssertion) {
|
|
105
|
+
localContext.debug("...verified the stated '".concat(statementString, "' statement as a defined assertion."), statementNode);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return statedStatementVerifiedAsDefinedAssertion;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5VGVybSBmcm9tIFwiLi90ZXJtXCI7XG5pbXBvcnQgbWV0YUxldmVsTm9kZVZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci9ub2RlL21ldGFMZXZlbFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IGlzU3RhdGVtZW50TmVnYXRlZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvdmVyaWZ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3Rlcm0hXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb247XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uRnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24sXG4gICAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uXG4gIF07XG5cbiAgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnVuY3Rpb25zLnNvbWUoKGRlZmluZWRBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLmAsIHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGlmIChkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSBkZXJpdmVkICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROZWdhdGVkID0gaXNTdGF0ZW1lbnROZWdhdGVkKHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB2YXJpYWJsZURlZmluZWQgPSBsb2NhbENvbnRleHQuaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUpO1xuXG4gICAgICAgIGlmICghc3RhdGVtZW50TmVnYXRlZCkge1xuICAgICAgICAgIGlmICh2YXJpYWJsZURlZmluZWQpIHtcbiAgICAgICAgICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudE5lZ2F0ZWQpIHtcbiAgICAgICAgICBpZiAoIXZhcmlhYmxlRGVmaW5lZCkge1xuICAgICAgICAgICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0KHRlcm1zKSxcbiAgICAgICAgICAgICAgdGVybSA9IGZpcnN0VGVybSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IGxvY2FsQ29udGV4dC5pc1Rlcm1Hcm91bmRlZCh0ZXJtKTtcblxuICAgICAgICBpZiAoIXN0YXRlbWVudE5lZ2F0ZWQpIHtcbiAgICAgICAgICBpZiAodGVybUdyb3VuZGVkKSB7XG4gICAgICAgICAgICBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmVpbmRBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZW1lbnROZWdhdGVkKSB7XG4gICAgICAgICAgaWYgKCF0ZXJtR3JvdW5kZWQpIHtcbiAgICAgICAgICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbikge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgZGVyaXZlZCAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBpZiAoIWRlcml2ZWQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlIHN0YXRlZCAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBsb2NhbENvbnRleHQuaXNJbnRyaW5zaWNMZXZlbCgpO1xuXG4gICAgaWYgKGludHJpbnNpY0xldmVsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24gY2Fubm90IGJlIHZlcmlmaWVkIGF0IGludHJpbnNpYyBsZXZlbC5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG1ldGFMZXZlbE5vZGVWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBzdGF0ZWQgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbiIsInN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwiZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9ucyIsInZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJzb21lIiwiZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9uIiwiZGVidWciLCJkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmVpbmRBc3NlcnRpb24iLCJzdGF0ZW1lbnROZWdhdGVkIiwiaXNTdGF0ZW1lbnROZWdhdGVkIiwidmFyaWFibGVOb2RlIiwidGVybU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVEZWZpbmVkIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ0ZXJtcyIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm0iLCJ2ZXJpZmllZEFoZWFkIiwiZmlyc3RUZXJtIiwiZmlyc3QiLCJ0ZXJtIiwidGVybUdyb3VuZGVkIiwiaXNUZXJtR3JvdW5kZWQiLCJzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbiIsImludHJpbnNpY0xldmVsIiwiaXNJbnRyaW5zaWNMZXZlbCIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwibWV0YUxldmVsTm9kZVZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQXdCQTs7OzJEQVZEO2dFQUNXO3FCQUVaO3FCQUNJO3NCQUNTOzs7Ozs7QUFFbkMsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHFCQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLFNBQVNGLGtDQUFrQ0ksYUFBYSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUN6RyxJQUFJQztJQUVKLElBQU1DLGtCQUFrQkYsYUFBYUcsWUFBWSxDQUFDTjtJQUVsREcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCRixpQkFBZ0IsMENBQXdDTDtJQUU3RixJQUFNUSw0QkFBNEI7UUFDaENDO1FBQ0FDO0tBQ0Q7SUFFRE4sc0NBQXNDSSwwQkFBMEJHLElBQUksQ0FBQyxTQUFDQztRQUNwRSxJQUFNUixzQ0FBc0NRLHlCQUF5QlosZUFBZUMsYUFBYUMsU0FBU0M7UUFFMUcsSUFBSUMscUNBQXFDO1lBQ3ZDLE9BQU87UUFDVDtJQUNGO0lBRUEsSUFBSUEscUNBQXFDO1FBQ3ZDRCxhQUFhVSxLQUFLLENBQUMsQUFBQyxvQkFBbUMsT0FBaEJSLGlCQUFnQix3Q0FBc0NMO0lBQy9G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
|
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.917",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.28",
|
|
14
14
|
"necessary": "^14.0.1",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
15
|
+
"occam-custom-grammars": "^5.0.820",
|
|
16
16
|
"occam-entities": "^1.0.147",
|
|
17
17
|
"occam-file-system": "^6.0.188",
|
|
18
18
|
"occam-grammar-utilities": "^8.0.207",
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default class JudgementAssignment {
|
|
4
|
+
constructor(judgement) {
|
|
5
|
+
this.judgement = judgement;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
getJudgement() {
|
|
9
|
+
return this.judgement;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
assign(localContext) {
|
|
13
|
+
const judgementAdded = localContext.addJudgement(this.judgement),
|
|
14
|
+
judgementNode = this.judgement.getNode(),
|
|
15
|
+
judgementString = localContext.nodeAsString(judgementNode),
|
|
16
|
+
judgementAssigned = judgementAdded; ///
|
|
17
|
+
|
|
18
|
+
judgementAssigned ?
|
|
19
|
+
localContext.trace(`Assigned the '${judgementString}' judgement.`, judgementNode) :
|
|
20
|
+
localContext.debug(`Unable to assign the '${judgementString}' judgement.`, judgementNode);
|
|
21
|
+
|
|
22
|
+
return judgementAssigned;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static fromJudgement(judgement) {
|
|
26
|
+
const judgementAssignment = new JudgementAssignment(judgement);
|
|
27
|
+
|
|
28
|
+
return judgementAssignment;
|
|
29
|
+
}
|
|
30
|
+
}
|
package/src/constants.js
CHANGED
package/src/context/file.js
CHANGED
|
@@ -82,10 +82,10 @@ export default class FileContext {
|
|
|
82
82
|
return metaproofSteps;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
const
|
|
85
|
+
getJudgements() {
|
|
86
|
+
const judgements = [];
|
|
87
87
|
|
|
88
|
-
return
|
|
88
|
+
return judgements;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
getLabels(includeRelease = true) {
|
|
@@ -5,12 +5,23 @@ import IntrinsicLevelLocalContext from "../../context/local/intrinsicLevel";
|
|
|
5
5
|
import { last, reverse } from "../../utilities/array";
|
|
6
6
|
|
|
7
7
|
class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
8
|
-
constructor(context, variables, proofSteps, equivalences, metavariables, metaproofSteps
|
|
8
|
+
constructor(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps) {
|
|
9
9
|
super(context, variables, proofSteps, equivalences);
|
|
10
10
|
|
|
11
|
+
this.judgements = judgements;
|
|
11
12
|
this.metavariables = metavariables;
|
|
12
13
|
this.metaproofSteps = metaproofSteps;
|
|
13
|
-
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
getJudgements() {
|
|
17
|
+
let judgements = this.context.getJudgements();
|
|
18
|
+
|
|
19
|
+
judgements = [ ///
|
|
20
|
+
...this.judgements,
|
|
21
|
+
...judgements
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
return judgements;
|
|
14
25
|
}
|
|
15
26
|
|
|
16
27
|
getMetavariables() {
|
|
@@ -35,17 +46,6 @@ class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
|
35
46
|
return metaproofSteps;
|
|
36
47
|
}
|
|
37
48
|
|
|
38
|
-
getFrameAssertions() {
|
|
39
|
-
let frameAssertions = this.context.getFrameAssertions();
|
|
40
|
-
|
|
41
|
-
frameAssertions = [ ///
|
|
42
|
-
...this.frameAssertions,
|
|
43
|
-
...frameAssertions
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
return frameAssertions;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
49
|
isIntrinsicLevel() {
|
|
50
50
|
const intrinsicLevel = false;
|
|
51
51
|
|
|
@@ -64,19 +64,19 @@ class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
|
64
64
|
return lastMetaproofStep;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
let
|
|
67
|
+
addJudgement(judgement) {
|
|
68
|
+
let judgementAdded = false;
|
|
69
69
|
|
|
70
|
-
const metavariableNode =
|
|
71
|
-
|
|
70
|
+
const metavariableNode = judgement.getMetavariableNode(),
|
|
71
|
+
judgementPresent = this.isJudgementPresentByMetavariableNode(metavariableNode);
|
|
72
72
|
|
|
73
|
-
if (!
|
|
74
|
-
this.
|
|
73
|
+
if (!judgementPresent) {
|
|
74
|
+
this.judgements.push(judgement);
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
judgementAdded = true;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
return
|
|
79
|
+
return judgementAdded;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
addMetavariable(metavariable) {
|
|
@@ -134,17 +134,17 @@ class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
|
134
134
|
return metavariable;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
const
|
|
137
|
+
findJudgementByMetavariableNode(metavariableNode) {
|
|
138
|
+
const judgements = this.getJudgements(),
|
|
139
|
+
judgement = judgements.find((judgement) => {
|
|
140
|
+
const judgementMatchesMetavariableNode = judgement.matchMetavariableNode(metavariableNode);
|
|
141
141
|
|
|
142
|
-
if (
|
|
142
|
+
if (judgementMatchesMetavariableNode) {
|
|
143
143
|
return true;
|
|
144
144
|
}
|
|
145
145
|
}) || null;
|
|
146
146
|
|
|
147
|
-
return
|
|
147
|
+
return judgement;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
isMetavariablePresentByMetavariableNode(metavariableNode, metaLevelLocalContext) {
|
|
@@ -154,11 +154,11 @@ class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
|
154
154
|
return metavariablePresent;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
|
|
157
|
+
isJudgementPresentByMetavariableNode(metavariableNode) {
|
|
158
|
+
const judgement = this.findJudgementByMetavariableNode(metavariableNode),
|
|
159
|
+
judgementPresent = (judgement !== null);
|
|
160
160
|
|
|
161
|
-
return
|
|
161
|
+
return judgementPresent;
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
static fromFileContext(fileContext) {
|
|
@@ -166,10 +166,10 @@ class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
|
166
166
|
variables = [],
|
|
167
167
|
proofSteps = [],
|
|
168
168
|
equivalences = [],
|
|
169
|
+
judgements = [],
|
|
169
170
|
metavariables = [],
|
|
170
171
|
metaproofSteps = [],
|
|
171
|
-
|
|
172
|
-
metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions);
|
|
172
|
+
metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps);
|
|
173
173
|
|
|
174
174
|
return metaLevelLocalContext;
|
|
175
175
|
}
|
|
@@ -179,10 +179,10 @@ class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
|
179
179
|
variables = [],
|
|
180
180
|
proofSteps = [],
|
|
181
181
|
equivalences = [],
|
|
182
|
+
judgements = [],
|
|
182
183
|
metavariables = [],
|
|
183
184
|
metaproofSteps = [],
|
|
184
|
-
|
|
185
|
-
metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions); ///
|
|
185
|
+
metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps); ///
|
|
186
186
|
|
|
187
187
|
return metaLevelLocalContext;
|
|
188
188
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
export default class
|
|
3
|
+
export default class Judgement {
|
|
4
4
|
constructor(node, frame, metavariableNode) {
|
|
5
5
|
this.node = node;
|
|
6
6
|
this.frame = frame;
|
|
@@ -29,10 +29,10 @@ export default class FrameAssertion {
|
|
|
29
29
|
|
|
30
30
|
matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem) { return this.frame.matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem); }
|
|
31
31
|
|
|
32
|
-
static
|
|
33
|
-
const node =
|
|
34
|
-
|
|
32
|
+
static fromJudgementNodeFrameAndMetavariableNode(judgementNode, frame, metavariableNode) {
|
|
33
|
+
const node = judgementNode,
|
|
34
|
+
judgement = new Judgement(node, frame, metavariableNode);
|
|
35
35
|
|
|
36
|
-
return
|
|
36
|
+
return judgement;
|
|
37
37
|
}
|
|
38
38
|
}
|
package/src/utilities/verify.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import { NOT } from "../constants";
|
|
4
4
|
import { nodeQuery } from "../utilities/query";
|
|
5
5
|
|
|
6
|
-
const secondOperatorTerminalNodeQuery = nodeQuery("
|
|
6
|
+
const secondOperatorTerminalNodeQuery = nodeQuery("/statement/@operator[1]");
|
|
7
7
|
|
|
8
|
-
export function
|
|
9
|
-
const secondOperatorTerminalNode = secondOperatorTerminalNodeQuery(
|
|
8
|
+
export function isStatementNegated(statementNode) {
|
|
9
|
+
const secondOperatorTerminalNode = secondOperatorTerminalNodeQuery(statementNode),
|
|
10
10
|
content = secondOperatorTerminalNode.getContent(),
|
|
11
|
-
|
|
11
|
+
statementNegated = (content === NOT);
|
|
12
12
|
|
|
13
|
-
return
|
|
13
|
+
return statementNegated;
|
|
14
14
|
}
|
package/src/verify/frame.js
CHANGED
|
@@ -62,16 +62,16 @@ function verifyMetavariable(metavariableNode, declarations, localContext) {
|
|
|
62
62
|
const metaType = metavariable.getMetaType();
|
|
63
63
|
|
|
64
64
|
if (metaType === frameMetaType) {
|
|
65
|
-
const
|
|
65
|
+
const judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
|
|
66
66
|
|
|
67
|
-
if (
|
|
68
|
-
const
|
|
67
|
+
if (judgement !== null) {
|
|
68
|
+
const judgementDeclarations = judgement.getDeclarations();
|
|
69
69
|
|
|
70
|
-
push(declarations,
|
|
70
|
+
push(declarations, judgementDeclarations);
|
|
71
71
|
|
|
72
72
|
metavariableVerified = true;
|
|
73
73
|
} else {
|
|
74
|
-
localContext.debug(`There is no
|
|
74
|
+
localContext.debug(`There is no judgement for the '${metavariableString}' metavariable.`, metavariableNode);
|
|
75
75
|
}
|
|
76
76
|
} else {
|
|
77
77
|
const frameMetaTypeName = frameMetaType.getName(),
|
|
@@ -1,60 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Judgement from "../judgement";
|
|
3
4
|
import verifyFrame from "../verify/frame";
|
|
4
5
|
import frameMetaType from "../metaType/frame";
|
|
5
|
-
import
|
|
6
|
-
import FrameAssertionAssignment from "../assignment/frameAssertion";
|
|
6
|
+
import JudgementAssignment from "../assignment/judgement";
|
|
7
7
|
|
|
8
8
|
import { first } from "../utilities/array";
|
|
9
9
|
import { nodeQuery } from "../utilities/query";
|
|
10
10
|
|
|
11
|
-
const frameNodeQuery = nodeQuery("/
|
|
12
|
-
metavariableNodeQuery = nodeQuery("/
|
|
11
|
+
const frameNodeQuery = nodeQuery("/judgement/frame!"),
|
|
12
|
+
metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
|
|
13
13
|
|
|
14
|
-
export default function
|
|
15
|
-
let
|
|
14
|
+
export default function verifyJudgement(judgementNode, assignments, derived, localContext) {
|
|
15
|
+
let judgementVerified;
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const judgementString = localContext.nodeAsString(judgementNode);
|
|
18
18
|
|
|
19
|
-
localContext.trace(`Verifying the '${
|
|
19
|
+
localContext.trace(`Verifying the '${judgementString}' judgement...`, judgementNode);
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const verifyJudgementFunctions = [
|
|
22
|
+
verifyDerivedJudgement,
|
|
23
|
+
verifyStatedJudgement
|
|
24
24
|
];
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
const
|
|
26
|
+
judgementVerified = verifyJudgementFunctions.some((verifyJudgementFunction) => {
|
|
27
|
+
const judgementVerified = verifyJudgementFunction(judgementNode, assignments, derived, localContext);
|
|
28
28
|
|
|
29
|
-
if (
|
|
29
|
+
if (judgementVerified) {
|
|
30
30
|
return true;
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
if (
|
|
35
|
-
localContext.debug(`...verified the '${
|
|
34
|
+
if (judgementVerified) {
|
|
35
|
+
localContext.debug(`...verified the '${judgementString}' judgement.`, judgementNode);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
return
|
|
38
|
+
return judgementVerified;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function
|
|
42
|
-
let
|
|
41
|
+
function verifyDerivedJudgement(judgementNode, assignments, derived, localContext) {
|
|
42
|
+
let derivedJudgementVerified = false;
|
|
43
43
|
|
|
44
44
|
if (derived) {
|
|
45
|
-
const
|
|
45
|
+
const judgementString = localContext.nodeAsString(judgementNode);
|
|
46
46
|
|
|
47
|
-
localContext.trace(`Verifying the '${
|
|
47
|
+
localContext.trace(`Verifying the '${judgementString}' derived judgement...`, judgementNode);
|
|
48
48
|
|
|
49
|
-
const metavariableNode = metavariableNodeQuery(
|
|
49
|
+
const metavariableNode = metavariableNodeQuery(judgementNode),
|
|
50
50
|
metavariableVerified = verifyMetavariable(metavariableNode, localContext);
|
|
51
51
|
|
|
52
52
|
if (metavariableVerified) {
|
|
53
|
-
const
|
|
53
|
+
const judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
|
|
54
54
|
|
|
55
|
-
if (
|
|
55
|
+
if (judgement !== null) {
|
|
56
56
|
const frames = [],
|
|
57
|
-
frameNode = frameNodeQuery(
|
|
57
|
+
frameNode = frameNodeQuery(judgementNode),
|
|
58
58
|
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
|
|
59
59
|
|
|
60
60
|
if (frameVerified) {
|
|
@@ -71,70 +71,70 @@ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, l
|
|
|
71
71
|
|
|
72
72
|
if (metaLemmaMetatheorem !== null) {
|
|
73
73
|
const declarationMatchesMetaLemmaMetatheorem = declaration.matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem),
|
|
74
|
-
|
|
74
|
+
judgementMatchesMetaLemmaMetatheorem = judgement.matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem);
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
derivedJudgementVerified = (declarationMatchesMetaLemmaMetatheorem && judgementMatchesMetaLemmaMetatheorem);
|
|
77
77
|
} else {
|
|
78
78
|
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
79
79
|
|
|
80
|
-
localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`,
|
|
80
|
+
localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, judgementNode);
|
|
81
81
|
}
|
|
82
82
|
} else {
|
|
83
83
|
const frameString = localContext.nodeAsString(frameNode);
|
|
84
84
|
|
|
85
|
-
localContext.debug(`The '${frameString}' is not singular.`,
|
|
85
|
+
localContext.debug(`The '${frameString}' is not singular.`, judgementNode);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
} else {
|
|
89
89
|
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
90
90
|
|
|
91
|
-
localContext.debug(`There is no
|
|
91
|
+
localContext.debug(`There is no judgement present for the '${metavariableString}' metavariable.`, judgementNode);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
if (
|
|
96
|
-
localContext.debug(`...verified the '${
|
|
95
|
+
if (derivedJudgementVerified) {
|
|
96
|
+
localContext.debug(`...verified the '${judgementString}' derived judgement.`, judgementNode);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
return
|
|
100
|
+
return derivedJudgementVerified;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
function
|
|
104
|
-
let
|
|
103
|
+
function verifyStatedJudgement(judgementNode, assignments, derived, localContext) {
|
|
104
|
+
let statedJudgementVerified = false;
|
|
105
105
|
|
|
106
106
|
if (!derived) {
|
|
107
|
-
const
|
|
107
|
+
const judgementString = localContext.nodeAsString(judgementNode);
|
|
108
108
|
|
|
109
|
-
localContext.trace(`Verifying the '${
|
|
109
|
+
localContext.trace(`Verifying the '${judgementString}' stated judgement...`, judgementNode);
|
|
110
110
|
|
|
111
|
-
const metavariableNode = metavariableNodeQuery(
|
|
111
|
+
const metavariableNode = metavariableNodeQuery(judgementNode),
|
|
112
112
|
metavariableVerified = verifyMetavariable(metavariableNode, localContext);
|
|
113
113
|
|
|
114
114
|
if (metavariableVerified) {
|
|
115
115
|
const frames = [],
|
|
116
|
-
frameNode = frameNodeQuery(
|
|
116
|
+
frameNode = frameNodeQuery(judgementNode),
|
|
117
117
|
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
|
|
118
118
|
|
|
119
119
|
if (frameVerified) {
|
|
120
120
|
const firstFrame = first(frames),
|
|
121
121
|
frame = firstFrame, ///
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
assignment =
|
|
122
|
+
judgement = Judgement.fromJudgementNodeFrameAndMetavariableNode(judgementNode, frame, metavariableNode),
|
|
123
|
+
judgementAssignment = JudgementAssignment.fromJudgement(judgement),
|
|
124
|
+
assignment = judgementAssignment;
|
|
125
125
|
|
|
126
126
|
assignments.push(assignment);
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
statedJudgementVerified = true;
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
if (
|
|
133
|
-
localContext.debug(`...verified the '${
|
|
132
|
+
if (statedJudgementVerified) {
|
|
133
|
+
localContext.debug(`...verified the '${judgementString}' stated judgement.`, judgementNode);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
return
|
|
137
|
+
return statedJudgementVerified;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
function verifyMetavariable(metavariableNode, localContext) {
|