occam-verify-cli 0.0.549 → 0.0.550

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.
@@ -0,0 +1,129 @@
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 verifyTypeInference;
9
+ }
10
+ });
11
+ var _term = /*#__PURE__*/ _interopRequireWildcard(require("./term"));
12
+ var _equality = /*#__PURE__*/ _interopRequireDefault(require("../ocmbinator/equality"));
13
+ var _query = require("../utilities/query");
14
+ var _array = require("../utilities/array");
15
+ var _type = require("./assertion/type");
16
+ var _statement = require("../verify/statement");
17
+ var _proof = require("../utilities/proof");
18
+ function _interopRequireDefault(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
23
+ function _getRequireWildcardCache(nodeInterop) {
24
+ if (typeof WeakMap !== "function") return null;
25
+ var cacheBabelInterop = new WeakMap();
26
+ var cacheNodeInterop = new WeakMap();
27
+ return (_getRequireWildcardCache = function(nodeInterop) {
28
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
29
+ })(nodeInterop);
30
+ }
31
+ function _interopRequireWildcard(obj, nodeInterop) {
32
+ if (!nodeInterop && obj && obj.__esModule) {
33
+ return obj;
34
+ }
35
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
36
+ return {
37
+ default: obj
38
+ };
39
+ }
40
+ var cache = _getRequireWildcardCache(nodeInterop);
41
+ if (cache && cache.has(obj)) {
42
+ return cache.get(obj);
43
+ }
44
+ var newObj = {};
45
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
46
+ for(var key in obj){
47
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
48
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
49
+ if (desc && (desc.get || desc.set)) {
50
+ Object.defineProperty(newObj, key, desc);
51
+ } else {
52
+ newObj[key] = obj[key];
53
+ }
54
+ }
55
+ }
56
+ newObj.default = obj;
57
+ if (cache) {
58
+ cache.set(obj, newObj);
59
+ }
60
+ return newObj;
61
+ }
62
+ var leftTermNodeQuery = (0, _query.nodeQuery)("/statement/argument[0]/term!"), rightTermNodeQuery = (0, _query.nodeQuery)("/statement/argument[1]/term!"), statementNodeQuery = (0, _query.nodeQuery)("/typeInference/statement!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/typeInference/typeAssertion!");
63
+ function verifyTypeInference(typeInferenceNode, context) {
64
+ var typeInferenceVerified = false;
65
+ var typeInferenceString = context.nodeAsString(typeInferenceNode);
66
+ context.debug("Verifying the '".concat(typeInferenceString, "' type inference..."), typeInferenceNode);
67
+ var statementNode = statementNodeQuery(typeInferenceNode);
68
+ var bracketedStatementChildNode = (0, _proof.bracketedStatementChildNodeFromStatementNode)(statementNode);
69
+ if (bracketedStatementChildNode !== null) {
70
+ statementNode = bracketedStatementChildNode; ///
71
+ }
72
+ var statementString = context.nodeAsString(statementNode), statementMatches = context.matchStatement(statementNode);
73
+ if (!statementMatches) {
74
+ context.error("The '".concat(statementString, "' statement is not present in the context."), typeInferenceNode);
75
+ } else {
76
+ var combinator = _equality.default, statementVerifiedAgainstCombinator = (0, _statement.verifyStatementAgainstCombinator)(statementNode, combinator, context);
77
+ if (!statementVerifiedAgainstCombinator) {
78
+ context.error("The '".concat(statementString, "' statement is not an equality."), typeInferenceNode);
79
+ } else {
80
+ var derived = false, assignments = [], typeAssertionNode = typeAssertionNodeQuery(typeInferenceNode), variableTypeAssertionVerified = (0, _type.verifyVariableTypeAssertion)(typeAssertionNode, assignments, derived, context);
81
+ if (variableTypeAssertionVerified) {
82
+ var firstAssignment = (0, _array.first)(assignments), assignment = firstAssignment, variables = [], leftTermNode = leftTermNodeQuery(statementNode), rightTermNode = rightTermNodeQuery(statementNode), leftTermVerifiedAsVariable = (0, _term.verifyTermAsVariable)(leftTermNode, variables, context), rightTermVerifiedAsVariable = (0, _term.verifyTermAsVariable)(rightTermNode, variables, context);
83
+ if (leftTermVerifiedAsVariable && rightTermVerifiedAsVariable) {
84
+ var firstVariable = (0, _array.first)(variables), secondVariable = (0, _array.second)(variables), leftVariable = firstVariable, rightVariable = secondVariable, leftVariableName = leftVariable.getName(), leftVariableType = leftVariable.getType(), rightVariableName = rightVariable.getName(), rightVariableType = rightVariable.getType(), leftVariableTypeEqualToOrSubTypeOfOfSuperTypeOfRightVariableType = leftVariableType.isEqualToOrSubTypeOfOfSuperTypeOf(rightVariableType);
85
+ if (leftVariableTypeEqualToOrSubTypeOfOfSuperTypeOfRightVariableType) {
86
+ var leftVariableTypeSuperTypeOfRightVariableType = leftVariableType.isSuperTypeOf(rightVariableType), rightVariableTypeSuperTypeOfLeftVariableType = rightVariableType.isSuperTypeOf(leftVariableType);
87
+ if (leftVariableTypeSuperTypeOfRightVariableType) {
88
+ var name = leftVariableName, type = rightVariableType; ///
89
+ assignAssignment(name, type, assignment, context);
90
+ }
91
+ if (rightVariableTypeSuperTypeOfLeftVariableType) {
92
+ var name1 = rightVariableName, type1 = leftVariableType; ///
93
+ assignAssignment(name1, type1, assignment, context);
94
+ }
95
+ }
96
+ } else if (leftTermVerifiedAsVariable) {
97
+ var types = [];
98
+ (0, _term.default)(rightTermNode, types, context);
99
+ var firstType = (0, _array.first)(types), firstVariable1 = (0, _array.first)(variables), leftVariable1 = firstVariable1, rightTermType = firstType, leftVariableName1 = leftVariable1.getName(), leftVariableType1 = leftVariable1.getType(), leftVariableTypeEqualToOrSuperTypeOfRightTermType = leftVariableType1.isEqualToOrSuperTypeOf(rightTermType);
100
+ if (leftVariableTypeEqualToOrSuperTypeOfRightTermType) {
101
+ var name2 = leftVariableName1, type2 = rightTermType; ///
102
+ assignAssignment(name2, type2, assignment, context);
103
+ }
104
+ } else if (rightTermVerifiedAsVariable) {
105
+ var types1 = [];
106
+ (0, _term.default)(leftTermNode, types1, context);
107
+ var firstType1 = (0, _array.first)(types1), firstVariable2 = (0, _array.first)(variables), leftTermType = firstType1, rightVariable1 = firstVariable2, rightVariableName1 = rightVariable1.getName(), rightVariableType1 = rightVariable1.getType(), rightVariableTypeEqualToOrSuperTypeOfRightTermType = rightVariableType1.isEqualToOrSuperTypeOf(leftTermType);
108
+ if (rightVariableTypeEqualToOrSuperTypeOfRightTermType) {
109
+ var name3 = rightVariableName1, type3 = leftTermType; ///
110
+ assignAssignment(name3, type3, assignment, context);
111
+ }
112
+ }
113
+ typeInferenceVerified = true;
114
+ }
115
+ }
116
+ }
117
+ if (typeInferenceVerified) {
118
+ context.info("Verified the '".concat(typeInferenceString, "' type inference."), typeInferenceNode);
119
+ }
120
+ return typeInferenceVerified;
121
+ }
122
+ function assignAssignment(name, type, assignment, context) {
123
+ var assignmentMatchesNameAndType = assignment.matchNameAndType(name, type);
124
+ if (assignmentMatchesNameAndType) {
125
+ assignment.assign(context);
126
+ }
127
+ }
128
+
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdHlwZUluZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4vdGVybVwiO1xuaW1wb3J0IGVxdWFsaXR5Q29tYmluYXRvciBmcm9tIFwiLi4vb2NtYmluYXRvci9lcXVhbGl0eVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgdmVyaWZ5VGVybUFzVmFyaWFibGUgfSBmcm9tIFwiLi90ZXJtXCI7XG5pbXBvcnQgeyB2ZXJpZnlWYXJpYWJsZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi9hc3NlcnRpb24vdHlwZVwiO1xuaW1wb3J0IHsgdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IgfSBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuaW1wb3J0IHsgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Byb29mXCI7XG5cbmNvbnN0IGxlZnRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9hcmd1bWVudFswXS90ZXJtIVwiKSxcbiAgICAgIHJpZ2h0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvYXJndW1lbnRbMV0vdGVybSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZUluZmVyZW5jZS9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlSW5mZXJlbmNlL3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUeXBlSW5mZXJlbmNlKHR5cGVJbmZlcmVuY2VOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlSW5mZXJlbmNlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlSW5mZXJlbmNlU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodHlwZUluZmVyZW5jZU5vZGUpO1xuXG4gIGNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUluZmVyZW5jZVN0cmluZ30nIHR5cGUgaW5mZXJlbmNlLi4uYCwgdHlwZUluZmVyZW5jZU5vZGUpO1xuXG4gIGxldCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHR5cGVJbmZlcmVuY2VOb2RlKTtcblxuICBjb25zdCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgLy8vXG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50TWF0Y2hlcyA9IGNvbnRleHQubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKCFzdGF0ZW1lbnRNYXRjaGVzKSB7XG4gICAgY29udGV4dC5lcnJvcihgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29udGV4dC5gLCB0eXBlSW5mZXJlbmNlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29tYmluYXRvciA9IGVxdWFsaXR5Q29tYmluYXRvciwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IgPSB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0KTtcblxuICAgIGlmICghc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcikge1xuICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3QgYW4gZXF1YWxpdHkuYCwgdHlwZUluZmVyZW5jZU5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZmFsc2UsICAvLy9cbiAgICAgICAgICAgIGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkodHlwZUluZmVyZW5jZU5vZGUpLFxuICAgICAgICAgICAgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlWYXJpYWJsZVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KVxuXG4gICAgICBpZiAodmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBc3NpZ25tZW50ID0gZmlyc3QoYXNzaWdubWVudHMpLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gZmlyc3RBc3NpZ25tZW50LCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgICAgIGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICBsZWZ0VGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKGxlZnRUZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gdmVyaWZ5VGVybUFzVmFyaWFibGUocmlnaHRUZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAobGVmdFRlcm1WZXJpZmllZEFzVmFyaWFibGUgJiYgcmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgc2Vjb25kVmFyaWFibGUgPSBzZWNvbmQodmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBsZWZ0VmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlLCAvLy9cbiAgICAgICAgICAgICAgICByaWdodFZhcmlhYmxlID0gc2Vjb25kVmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZU5hbWUgPSBsZWZ0VmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZVR5cGUgPSBsZWZ0VmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVOYW1lID0gcmlnaHRWYXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmlnaHRWYXJpYWJsZVR5cGUgPSByaWdodFZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICBsZWZ0VmFyaWFibGVUeXBlRXF1YWxUb09yU3ViVHlwZU9mT2ZTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlID0gbGVmdFZhcmlhYmxlVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZk9mU3VwZXJUeXBlT2YocmlnaHRWYXJpYWJsZVR5cGUpO1xuXG4gICAgICAgICAgaWYgKGxlZnRWYXJpYWJsZVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZPZlN1cGVyVHlwZU9mUmlnaHRWYXJpYWJsZVR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYXJpYWJsZVR5cGVTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlID0gbGVmdFZhcmlhYmxlVHlwZS5pc1N1cGVyVHlwZU9mKHJpZ2h0VmFyaWFibGVUeXBlKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVUeXBlU3VwZXJUeXBlT2ZMZWZ0VmFyaWFibGVUeXBlID0gcmlnaHRWYXJpYWJsZVR5cGUuaXNTdXBlclR5cGVPZihsZWZ0VmFyaWFibGVUeXBlKTtcblxuICAgICAgICAgICAgaWYgKGxlZnRWYXJpYWJsZVR5cGVTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBsZWZ0VmFyaWFibGVOYW1lLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHJpZ2h0VmFyaWFibGVUeXBlOyAgLy8vXG5cbiAgICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJpZ2h0VmFyaWFibGVUeXBlU3VwZXJUeXBlT2ZMZWZ0VmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSByaWdodFZhcmlhYmxlTmFtZSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBsZWZ0VmFyaWFibGVUeXBlOyAgLy8vXG5cbiAgICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGVmdFRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICAgICAgICBjb25zdCB0eXBlcyA9IFtdO1xuXG4gICAgICAgICAgdmVyaWZ5VGVybShyaWdodFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgbGVmdFZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZSwgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHRUZXJtVHlwZSA9IGZpcnN0VHlwZSwgIC8vL1xuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZU5hbWUgPSBsZWZ0VmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZVR5cGUgPSBsZWZ0VmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZVR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlJpZ2h0VGVybVR5cGUgPSBsZWZ0VmFyaWFibGVUeXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgICAgICBpZiAobGVmdFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGxlZnRWYXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgICAgIHR5cGUgPSByaWdodFRlcm1UeXBlOyAvLy9cblxuICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgICAgICAgY29uc3QgdHlwZXMgPSBbXTtcblxuICAgICAgICAgIHZlcmlmeVRlcm0obGVmdFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlID0gZmlyc3RUeXBlLCAgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHRWYXJpYWJsZSA9IGZpcnN0VmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVOYW1lID0gcmlnaHRWYXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmlnaHRWYXJpYWJsZVR5cGUgPSByaWdodFZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICByaWdodFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSA9IHJpZ2h0VmFyaWFibGVUeXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YobGVmdFRlcm1UeXBlKTtcblxuICAgICAgICAgIGlmIChyaWdodFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHJpZ2h0VmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICAgICAgICB0eXBlID0gbGVmdFRlcm1UeXBlOyAvLy9cblxuICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlSW5mZXJlbmNlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlSW5mZXJlbmNlVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt0eXBlSW5mZXJlbmNlU3RyaW5nfScgdHlwZSBpbmZlcmVuY2UuYCwgdHlwZUluZmVyZW5jZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVJbmZlcmVuY2VWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IGFzc2lnbm1lbnRNYXRjaGVzTmFtZUFuZFR5cGUgPSBhc3NpZ25tZW50Lm1hdGNoTmFtZUFuZFR5cGUobmFtZSwgdHlwZSk7XG5cbiAgaWYgKGFzc2lnbm1lbnRNYXRjaGVzTmFtZUFuZFR5cGUpIHtcbiAgICBhc3NpZ25tZW50LmFzc2lnbihjb250ZXh0KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGVJbmZlcmVuY2UiLCJsZWZ0VGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJpZ2h0VGVybU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJ0eXBlSW5mZXJlbmNlTm9kZSIsImNvbnRleHQiLCJ0eXBlSW5mZXJlbmNlVmVyaWZpZWQiLCJ0eXBlSW5mZXJlbmNlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJzdGF0ZW1lbnROb2RlIiwiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlIiwiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRTdHJpbmciLCJzdGF0ZW1lbnRNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnQiLCJlcnJvciIsImNvbWJpbmF0b3IiLCJlcXVhbGl0eUNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yIiwidmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IiLCJkZXJpdmVkIiwiYXNzaWdubWVudHMiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uIiwiZmlyc3RBc3NpZ25tZW50IiwiZmlyc3QiLCJhc3NpZ25tZW50IiwidmFyaWFibGVzIiwibGVmdFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImxlZnRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJyaWdodFRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJmaXJzdFZhcmlhYmxlIiwic2Vjb25kVmFyaWFibGUiLCJzZWNvbmQiLCJsZWZ0VmFyaWFibGUiLCJyaWdodFZhcmlhYmxlIiwibGVmdFZhcmlhYmxlTmFtZSIsImdldE5hbWUiLCJsZWZ0VmFyaWFibGVUeXBlIiwiZ2V0VHlwZSIsInJpZ2h0VmFyaWFibGVOYW1lIiwicmlnaHRWYXJpYWJsZVR5cGUiLCJsZWZ0VmFyaWFibGVUeXBlRXF1YWxUb09yU3ViVHlwZU9mT2ZTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2ZPZlN1cGVyVHlwZU9mIiwibGVmdFZhcmlhYmxlVHlwZVN1cGVyVHlwZU9mUmlnaHRWYXJpYWJsZVR5cGUiLCJpc1N1cGVyVHlwZU9mIiwicmlnaHRWYXJpYWJsZVR5cGVTdXBlclR5cGVPZkxlZnRWYXJpYWJsZVR5cGUiLCJuYW1lIiwidHlwZSIsImFzc2lnbkFzc2lnbm1lbnQiLCJ0eXBlcyIsInZlcmlmeVRlcm0iLCJmaXJzdFR5cGUiLCJyaWdodFRlcm1UeXBlIiwibGVmdFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJsZWZ0VGVybVR5cGUiLCJyaWdodFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSIsImluZm8iLCJhc3NpZ25tZW50TWF0Y2hlc05hbWVBbmRUeXBlIiwibWF0Y2hOYW1lQW5kVHlwZSIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJBOzs7ZUFBd0JBOzs7MERBZkQ7NkRBQ1E7cUJBRUw7cUJBQ0k7b0JBRWM7eUJBQ0s7cUJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU3RCxJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUMsaUNBQzlCQyxxQkFBcUJELElBQUFBLGdCQUFTLEVBQUMsaUNB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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.549",
4
+ "version": "0.0.550",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
package/src/assignment.js CHANGED
@@ -13,6 +13,21 @@ export default class Assignment {
13
13
  proofContext.addVariable(this.variable);
14
14
  }
15
15
 
16
+ match(assignment) {
17
+ const variable = assignment.getVariable(),
18
+ variableMatches = variable.match(this.variable),
19
+ matches = variableMatches; ///
20
+
21
+ return matches;
22
+ }
23
+
24
+ matchNameAndType(name, type) {
25
+ const variableMatchesNameAndType = this.variable.matchNameAndType(name, type),
26
+ nameAndTypeMatch = variableMatchesNameAndType; ///
27
+
28
+ return nameAndTypeMatch;
29
+ }
30
+
16
31
  static fromVariable(variable) {
17
32
  const assignment = new Assignment(variable);
18
33
 
@@ -33,7 +33,7 @@ export default class AxiomLemmaTheoremConjecture {
33
33
  }
34
34
 
35
35
  matchLabelName(labelName) {
36
- const matchesLabelName = this.labels.some((label) => {
36
+ const labelNameMatches = this.labels.some((label) => {
37
37
  const name = labelName, ///
38
38
  labelMatchesName = label.matchName(name);
39
39
 
@@ -42,7 +42,7 @@ export default class AxiomLemmaTheoremConjecture {
42
42
  }
43
43
  });
44
44
 
45
- return matchesLabelName;
45
+ return labelNameMatches;
46
46
  }
47
47
 
48
48
  matchStatement(statementNode, statementProofContext) {
package/src/metaType.js CHANGED
@@ -25,15 +25,15 @@ export default class MetaType {
25
25
  }
26
26
 
27
27
  matchName(name) {
28
- const matchesName = (this.name === name);
28
+ const nameMatches = (this.name === name);
29
29
 
30
- return matchesName;
30
+ return nameMatches;
31
31
  }
32
32
 
33
33
  matchMetaTypeName(metaTypeName) {
34
- const matchesMetaTypeName = (this.name === metaTypeName);
34
+ const metaTypeNameMatches = (this.name === metaTypeName);
35
35
 
36
- return matchesMetaTypeName;
36
+ return metaTypeNameMatches;
37
37
  }
38
38
 
39
39
  asString(tokens) {
@@ -17,9 +17,9 @@ export default class Metavariable {
17
17
  }
18
18
 
19
19
  matchName(name) {
20
- const matchesName = (this.name === name);
20
+ const nameMatches = (this.name === name);
21
21
 
22
- return matchesName;
22
+ return nameMatches;
23
23
  }
24
24
 
25
25
  toJSON(tokens) {
package/src/rule.js CHANGED
@@ -32,7 +32,7 @@ export default class Rule {
32
32
  }
33
33
 
34
34
  matchLabelName(labelName) {
35
- const matchesLabelName = this.labels.some((label) => {
35
+ const labelNameMatches = this.labels.some((label) => {
36
36
  const name = labelName, ///
37
37
  labelMatchesName = label.matchName(name);
38
38
 
@@ -41,7 +41,7 @@ export default class Rule {
41
41
  }
42
42
  });
43
43
 
44
- return matchesLabelName;
44
+ return labelNameMatches;
45
45
  }
46
46
 
47
47
  matchStatement(statementNode, statementProofContext) {
@@ -29,37 +29,37 @@ export default class MetaproofStep {
29
29
  const ruleSubproofAssertionNode = ruleSubproofAssertionNodeQuery(metastatementNode);
30
30
 
31
31
  if (ruleSubproofAssertionNode !== null) {
32
- const matchesRuleSubproofAssertion = this.matchRuleSubproofAssertion(ruleSubproofAssertionNode);
32
+ const ruleSubproofAssertionMatches = this.matchRuleSubproofAssertion(ruleSubproofAssertionNode);
33
33
 
34
- matches = matchesRuleSubproofAssertion; ///
34
+ matches = ruleSubproofAssertionMatches; ///
35
35
  }
36
36
  }
37
37
 
38
38
  if (!matches) {
39
- const matchesMetastatement = this.matchMetastatement(metastatementNode);
39
+ const metastatementMatches = this.matchMetastatement(metastatementNode);
40
40
 
41
- matches = matchesMetastatement; ///
41
+ matches = metastatementMatches; ///
42
42
  }
43
43
 
44
44
  return matches;
45
45
  }
46
46
 
47
47
  matchMetastatement(metastatementNode) {
48
- let matchesMetastatement = false;
48
+ let metastatementMatches = false;
49
49
 
50
50
  if (this.metastatementNode !== null) {
51
51
  const metastatementNodeA = metastatementNode, ///
52
52
  metastatementNodeB = this.metastatementNode, ///
53
53
  metastatementMatchesModuloBrackets = matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB);
54
54
 
55
- matchesMetastatement = metastatementMatchesModuloBrackets; ///
55
+ metastatementMatches = metastatementMatchesModuloBrackets; ///
56
56
  }
57
57
 
58
- return matchesMetastatement;
58
+ return metastatementMatches;
59
59
  }
60
60
 
61
61
  matchRuleSubproofAssertion(ruleSubproofAssertionNode) {
62
- let matchesRuleSubproofAssertion = false;
62
+ let ruleSubproofAssertionMatches = false;
63
63
 
64
64
  if (this.ruleSubproofNode !== null) {
65
65
  const ruleSubproofAssertionMetastatementNodes = metastatementNodesQuery(ruleSubproofAssertionNode),
@@ -79,11 +79,11 @@ export default class MetaproofStep {
79
79
  metastatementNodeB = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
80
80
  metastatementMatchesModuloBrackets = matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB);
81
81
 
82
- matchesRuleSubproofAssertion = metastatementMatchesModuloBrackets; ///
82
+ ruleSubproofAssertionMatches = metastatementMatchesModuloBrackets; ///
83
83
  }
84
84
  }
85
85
 
86
- return matchesRuleSubproofAssertion;
86
+ return ruleSubproofAssertionMatches;
87
87
  }
88
88
 
89
89
  static fromRuleSubproofNode(ruleSubproofNode) {
package/src/step/proof.js CHANGED
@@ -20,15 +20,15 @@ export default class ProofStep {
20
20
  match(statementNode) {
21
21
  let matches;
22
22
 
23
- const matchesStatement = this.matchStatement(statementNode);
23
+ const statementMatches = this.matchStatement(statementNode);
24
24
 
25
- matches = matchesStatement; //
25
+ matches = statementMatches; //
26
26
 
27
27
  return matches;
28
28
  }
29
29
 
30
30
  matchStatement(statementNode) {
31
- let matchesStatement = false;
31
+ let statementMatches = false;
32
32
 
33
33
  if (this.statementNode !== null) {
34
34
  const ruleName = META_ARGUMENT_RULE_NAME,
@@ -36,10 +36,10 @@ export default class ProofStep {
36
36
  statementNodeB = this.statementNode, ///
37
37
  statementMatchesModuloBrackets = matchStatementModuloBrackets(statementNodeA, statementNodeB, ruleName);
38
38
 
39
- matchesStatement = statementMatchesModuloBrackets; ///
39
+ statementMatches = statementMatchesModuloBrackets; ///
40
40
  }
41
41
 
42
- return matchesStatement;
42
+ return statementMatches;
43
43
  }
44
44
 
45
45
  static fromSubproofNode(subproofNode) {
@@ -19,15 +19,15 @@ export default class MetastatementForMetavariableSubstitution {
19
19
  }
20
20
 
21
21
  matchMetastatementNode(metastatementNode) {
22
- let matchesMetastatementNode;
22
+ let metastatementNodeMatches;
23
23
 
24
24
  const nodeA = this.metastatementNode, ///
25
25
  nodeB = metastatementNode,
26
26
  nodeMatches = matcher.matchNode(nodeA, nodeB);
27
27
 
28
- matchesMetastatementNode = nodeMatches; ///
28
+ metastatementNodeMatches = nodeMatches; ///
29
29
 
30
- if (!matchesMetastatementNode) {
30
+ if (!metastatementNodeMatches) {
31
31
  const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode);
32
32
 
33
33
  if (bracketedMetastatementChildNode !== null) {
@@ -36,11 +36,11 @@ export default class MetastatementForMetavariableSubstitution {
36
36
  nodeB = metastatementNode,
37
37
  nodeMatches = matcher.matchNode(nodeA, nodeB);
38
38
 
39
- matchesMetastatementNode = nodeMatches; ///
39
+ metastatementNodeMatches = nodeMatches; ///
40
40
  }
41
41
  }
42
42
 
43
- return matchesMetastatementNode;
43
+ return metastatementNodeMatches;
44
44
  }
45
45
 
46
46
  static fromMetavariableNameAndMetastatementNode(metavariableName, metastatementNode) {
@@ -19,15 +19,15 @@ export default class StatementForMetavariableSubstitution {
19
19
  }
20
20
 
21
21
  matchStatementNode(statementNode) {
22
- let matchesStatementNode;
22
+ let statementNodeMatches;
23
23
 
24
24
  const nodeA = this.statementNode, ///
25
25
  nodeB = statementNode,
26
26
  nodeMatches = matcher.matchNode(nodeA, nodeB);
27
27
 
28
- matchesStatementNode = nodeMatches; ///
28
+ statementNodeMatches = nodeMatches; ///
29
29
 
30
- if (!matchesStatementNode) {
30
+ if (!statementNodeMatches) {
31
31
  const bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
32
32
 
33
33
  if (bracketedStatementChildNode !== null) {
@@ -36,11 +36,11 @@ export default class StatementForMetavariableSubstitution {
36
36
  nodeB = statementNode,
37
37
  nodeMatches = matcher.matchNode(nodeA, nodeB);
38
38
 
39
- matchesStatementNode = nodeMatches; ///
39
+ statementNodeMatches = nodeMatches; ///
40
40
  }
41
41
  }
42
42
 
43
- return matchesStatementNode;
43
+ return statementNodeMatches;
44
44
  }
45
45
 
46
46
  static fromMetavariableNameAndStatementNode(metavariableName, statementNode) {
@@ -17,15 +17,15 @@ export default class TermForVariableSubstitution {
17
17
  }
18
18
 
19
19
  matchTermNode(termNode) {
20
- let matchesTermNode;
20
+ let termNodeMatches;
21
21
 
22
22
  const nodeA = this.termNode, ///
23
23
  nodeB = termNode,
24
24
  nodeMatches = matcher.matchNode(nodeA, nodeB);
25
25
 
26
- matchesTermNode = nodeMatches; ///
26
+ termNodeMatches = nodeMatches; ///
27
27
 
28
- return matchesTermNode;
28
+ return termNodeMatches;
29
29
  }
30
30
 
31
31
  static fromVariableNameAndTermNode(variableName, termNode) {
package/src/type.js CHANGED
@@ -84,24 +84,21 @@ export default class Type {
84
84
  }
85
85
 
86
86
  match(type) {
87
- const equalToType = this.isEqualTo(type),
88
- subTypeOfType = this.isSubTypeOf(type),
89
- superTypeOfType = this.isSuperTypeOf(type),
90
- matches = (equalToType || subTypeOfType || superTypeOfType);
87
+ const matches = (type === this); ///
91
88
 
92
89
  return matches;
93
90
  }
94
91
 
95
92
  matchName(name) {
96
- const matchesName = (this.name === name);
93
+ const nameMatches = (this.name === name);
97
94
 
98
- return matchesName;
95
+ return nameMatches;
99
96
  }
100
97
 
101
98
  matchTypeName(typeName) {
102
- const matchesTypeName = (this.name === typeName);
99
+ const typeNameMatches = (this.name === typeName);
103
100
 
104
- return matchesTypeName;
101
+ return typeNameMatches;
105
102
  }
106
103
 
107
104
  asString(tokens, noSuperType) {
package/src/variable.js CHANGED
@@ -16,10 +16,34 @@ export default class Variable {
16
16
  return this.type;
17
17
  }
18
18
 
19
+ match(variable) {
20
+ const name = variable.getName(),
21
+ type = variable.getType(),
22
+ nameMatches = this.matchName(name),
23
+ typeMatches = this.matchType(type),
24
+ matches = (nameMatches && typeMatches);
25
+
26
+ return matches;
27
+ }
28
+
19
29
  matchName(name) {
20
- const matchesName = (this.name === name);
30
+ const nameMatches = (this.name === name);
31
+
32
+ return nameMatches;
33
+ }
34
+
35
+ matchType(type) {
36
+ const typeMatches = this.type.match(type);
37
+
38
+ return typeMatches;
39
+ }
40
+
41
+ matchNameAndType(name, type) {
42
+ const nameMatches = this.matchName(name),
43
+ typeMatches = this.matchType(type),
44
+ nameAndTypeMatch = (nameMatches && typeMatches);
21
45
 
22
- return matchesName;
46
+ return nameAndTypeMatch;
23
47
  }
24
48
 
25
49
  asString(tokens) {
@@ -7,8 +7,8 @@ import { first } from "../../utilities/array";
7
7
  import { nodeQuery, typeNameFromTypeNode } from "../../utilities/query";
8
8
  import { verifyTermAsVariable, verifyTermAgainstConstructors } from "../../verify/term";
9
9
 
10
- const termNodeQuery = nodeQuery("/typeAssertion/term"),
11
- typeNodeQuery = nodeQuery("/typeAssertion/type");
10
+ const termNodeQuery = nodeQuery("/typeAssertion/term!"),
11
+ typeNodeQuery = nodeQuery("/typeAssertion/type!");
12
12
 
13
13
  export default function verifyTypeAssertion(typeAssertionNode, assignments, derived, context) {
14
14
  let typeAssertionVerified = false;
@@ -44,7 +44,7 @@ export default function verifyTypeAssertion(typeAssertionNode, assignments, deri
44
44
  return typeAssertionVerified;
45
45
  }
46
46
 
47
- function verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, context) {
47
+ export function verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, context) {
48
48
  let variableTypeAssertionVerified = false;
49
49
 
50
50
  const variables = [],
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import matcher from "../matcher";
4
+ import ProofContext from "../context/proof";
4
5
  import verifyDerivation from "../verify/derivation";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
@@ -10,6 +11,8 @@ const derivationNodeQuery = nodeQuery("/proof/derivation!");
10
11
  export default function verifyProof(proofNode, conclusion, proofContext) {
11
12
  let proofVerified = false;
12
13
 
14
+ proofContext = ProofContext.fromProofContext(proofContext); ///
15
+
13
16
  const derivationNode = derivationNodeQuery(proofNode),
14
17
  derivationVerified = verifyDerivation(derivationNode, proofContext);
15
18
 
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import matcher from "../matcher";
4
+ import MetaproofContext from "../context/metaproof";
4
5
  import verifyRuleDerivation from "../verify/ruleDerivation";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
@@ -10,6 +11,8 @@ const ruleDerivationNodeQuery = nodeQuery("/ruleProof/ruleDerivation!");
10
11
  export default function verifyRuleProof(ruleProofNode, conclusion, assignments, metaproofContext) {
11
12
  let ruleProofVerified = false;
12
13
 
14
+ metaproofContext = MetaproofContext.fromMetaproofContext(metaproofContext); ///
15
+
13
16
  const ruleDerivationNode = ruleDerivationNodeQuery(ruleProofNode),
14
17
  ruleDerivationVerified = verifyRuleDerivation(ruleDerivationNode, metaproofContext);
15
18