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.
- package/lib/assignment.js +15 -1
- package/lib/axiomLemmaTheoremConjecture.js +3 -3
- package/lib/metaType.js +5 -5
- package/lib/metavariable.js +3 -3
- package/lib/rule.js +3 -3
- package/lib/step/metaproof.js +11 -11
- package/lib/step/proof.js +6 -6
- package/lib/substitution/metastatementForMetavariable.js +6 -6
- package/lib/substitution/statementForMetavariable.js +6 -6
- package/lib/substitution/termForVariable.js +4 -4
- package/lib/type.js +6 -6
- package/lib/variable.js +24 -3
- package/lib/verify/assertion/type.js +13 -5
- package/lib/verify/proof.js +3 -1
- package/lib/verify/ruleProof.js +3 -1
- package/lib/verify/statement.js +37 -22
- package/lib/verify/typeInference.js +129 -0
- package/package.json +1 -1
- package/src/assignment.js +15 -0
- package/src/axiomLemmaTheoremConjecture.js +2 -2
- package/src/metaType.js +4 -4
- package/src/metavariable.js +2 -2
- package/src/rule.js +2 -2
- package/src/step/metaproof.js +10 -10
- package/src/step/proof.js +5 -5
- package/src/substitution/metastatementForMetavariable.js +5 -5
- package/src/substitution/statementForMetavariable.js +5 -5
- package/src/substitution/termForVariable.js +3 -3
- package/src/type.js +5 -8
- package/src/variable.js +26 -2
- package/src/verify/assertion/type.js +3 -3
- package/src/verify/proof.js +3 -0
- package/src/verify/ruleProof.js +3 -0
- package/src/verify/statement.js +32 -41
- package/src/verify/typeInference.js +146 -0
|
@@ -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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdHlwZUluZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4vdGVybVwiO1xuaW1wb3J0IGVxdWFsaXR5Q29tYmluYXRvciBmcm9tIFwiLi4vb2NtYmluYXRvci9lcXVhbGl0eVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgdmVyaWZ5VGVybUFzVmFyaWFibGUgfSBmcm9tIFwiLi90ZXJtXCI7XG5pbXBvcnQgeyB2ZXJpZnlWYXJpYWJsZVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi9hc3NlcnRpb24vdHlwZVwiO1xuaW1wb3J0IHsgdmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IgfSBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuaW1wb3J0IHsgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3Byb29mXCI7XG5cbmNvbnN0IGxlZnRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9hcmd1bWVudFswXS90ZXJtIVwiKSxcbiAgICAgIHJpZ2h0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvYXJndW1lbnRbMV0vdGVybSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZUluZmVyZW5jZS9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlSW5mZXJlbmNlL3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUeXBlSW5mZXJlbmNlKHR5cGVJbmZlcmVuY2VOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlSW5mZXJlbmNlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlSW5mZXJlbmNlU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodHlwZUluZmVyZW5jZU5vZGUpO1xuXG4gIGNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUluZmVyZW5jZVN0cmluZ30nIHR5cGUgaW5mZXJlbmNlLi4uYCwgdHlwZUluZmVyZW5jZU5vZGUpO1xuXG4gIGxldCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHR5cGVJbmZlcmVuY2VOb2RlKTtcblxuICBjb25zdCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgLy8vXG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50TWF0Y2hlcyA9IGNvbnRleHQubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKCFzdGF0ZW1lbnRNYXRjaGVzKSB7XG4gICAgY29udGV4dC5lcnJvcihgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29udGV4dC5gLCB0eXBlSW5mZXJlbmNlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29tYmluYXRvciA9IGVxdWFsaXR5Q29tYmluYXRvciwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbWJpbmF0b3IgPSB2ZXJpZnlTdGF0ZW1lbnRBZ2FpbnN0Q29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBjb250ZXh0KTtcblxuICAgIGlmICghc3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29tYmluYXRvcikge1xuICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3QgYW4gZXF1YWxpdHkuYCwgdHlwZUluZmVyZW5jZU5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZXJpdmVkID0gZmFsc2UsICAvLy9cbiAgICAgICAgICAgIGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgICB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkodHlwZUluZmVyZW5jZU5vZGUpLFxuICAgICAgICAgICAgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlWYXJpYWJsZVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0KVxuXG4gICAgICBpZiAodmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBc3NpZ25tZW50ID0gZmlyc3QoYXNzaWdubWVudHMpLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gZmlyc3RBc3NpZ25tZW50LCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgICAgIGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHRUZXJtTm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICBsZWZ0VGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKGxlZnRUZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gdmVyaWZ5VGVybUFzVmFyaWFibGUocmlnaHRUZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAobGVmdFRlcm1WZXJpZmllZEFzVmFyaWFibGUgJiYgcmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgc2Vjb25kVmFyaWFibGUgPSBzZWNvbmQodmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBsZWZ0VmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlLCAvLy9cbiAgICAgICAgICAgICAgICByaWdodFZhcmlhYmxlID0gc2Vjb25kVmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZU5hbWUgPSBsZWZ0VmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZVR5cGUgPSBsZWZ0VmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVOYW1lID0gcmlnaHRWYXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmlnaHRWYXJpYWJsZVR5cGUgPSByaWdodFZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICBsZWZ0VmFyaWFibGVUeXBlRXF1YWxUb09yU3ViVHlwZU9mT2ZTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlID0gbGVmdFZhcmlhYmxlVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZk9mU3VwZXJUeXBlT2YocmlnaHRWYXJpYWJsZVR5cGUpO1xuXG4gICAgICAgICAgaWYgKGxlZnRWYXJpYWJsZVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZPZlN1cGVyVHlwZU9mUmlnaHRWYXJpYWJsZVR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYXJpYWJsZVR5cGVTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlID0gbGVmdFZhcmlhYmxlVHlwZS5pc1N1cGVyVHlwZU9mKHJpZ2h0VmFyaWFibGVUeXBlKSxcbiAgICAgICAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVUeXBlU3VwZXJUeXBlT2ZMZWZ0VmFyaWFibGVUeXBlID0gcmlnaHRWYXJpYWJsZVR5cGUuaXNTdXBlclR5cGVPZihsZWZ0VmFyaWFibGVUeXBlKTtcblxuICAgICAgICAgICAgaWYgKGxlZnRWYXJpYWJsZVR5cGVTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBsZWZ0VmFyaWFibGVOYW1lLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHJpZ2h0VmFyaWFibGVUeXBlOyAgLy8vXG5cbiAgICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJpZ2h0VmFyaWFibGVUeXBlU3VwZXJUeXBlT2ZMZWZ0VmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSByaWdodFZhcmlhYmxlTmFtZSwgLy8vXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBsZWZ0VmFyaWFibGVUeXBlOyAgLy8vXG5cbiAgICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGVmdFRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICAgICAgICBjb25zdCB0eXBlcyA9IFtdO1xuXG4gICAgICAgICAgdmVyaWZ5VGVybShyaWdodFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgbGVmdFZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZSwgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHRUZXJtVHlwZSA9IGZpcnN0VHlwZSwgIC8vL1xuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZU5hbWUgPSBsZWZ0VmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZVR5cGUgPSBsZWZ0VmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgIGxlZnRWYXJpYWJsZVR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlJpZ2h0VGVybVR5cGUgPSBsZWZ0VmFyaWFibGVUeXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YocmlnaHRUZXJtVHlwZSk7XG5cbiAgICAgICAgICBpZiAobGVmdFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGxlZnRWYXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgICAgIHR5cGUgPSByaWdodFRlcm1UeXBlOyAvLy9cblxuICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocmlnaHRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgICAgICAgY29uc3QgdHlwZXMgPSBbXTtcblxuICAgICAgICAgIHZlcmlmeVRlcm0obGVmdFRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgbGVmdFRlcm1UeXBlID0gZmlyc3RUeXBlLCAgLy8vXG4gICAgICAgICAgICAgICAgcmlnaHRWYXJpYWJsZSA9IGZpcnN0VmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgICAgIHJpZ2h0VmFyaWFibGVOYW1lID0gcmlnaHRWYXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmlnaHRWYXJpYWJsZVR5cGUgPSByaWdodFZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICByaWdodFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSA9IHJpZ2h0VmFyaWFibGVUeXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YobGVmdFRlcm1UeXBlKTtcblxuICAgICAgICAgIGlmIChyaWdodFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHJpZ2h0VmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICAgICAgICB0eXBlID0gbGVmdFRlcm1UeXBlOyAvLy9cblxuICAgICAgICAgICAgYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlSW5mZXJlbmNlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlSW5mZXJlbmNlVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt0eXBlSW5mZXJlbmNlU3RyaW5nfScgdHlwZSBpbmZlcmVuY2UuYCwgdHlwZUluZmVyZW5jZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVJbmZlcmVuY2VWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gYXNzaWduQXNzaWdubWVudChuYW1lLCB0eXBlLCBhc3NpZ25tZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IGFzc2lnbm1lbnRNYXRjaGVzTmFtZUFuZFR5cGUgPSBhc3NpZ25tZW50Lm1hdGNoTmFtZUFuZFR5cGUobmFtZSwgdHlwZSk7XG5cbiAgaWYgKGFzc2lnbm1lbnRNYXRjaGVzTmFtZUFuZFR5cGUpIHtcbiAgICBhc3NpZ25tZW50LmFzc2lnbihjb250ZXh0KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGVJbmZlcmVuY2UiLCJsZWZ0VGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJpZ2h0VGVybU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJ0eXBlSW5mZXJlbmNlTm9kZSIsImNvbnRleHQiLCJ0eXBlSW5mZXJlbmNlVmVyaWZpZWQiLCJ0eXBlSW5mZXJlbmNlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJzdGF0ZW1lbnROb2RlIiwiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlIiwiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRTdHJpbmciLCJzdGF0ZW1lbnRNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnQiLCJlcnJvciIsImNvbWJpbmF0b3IiLCJlcXVhbGl0eUNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb21iaW5hdG9yIiwidmVyaWZ5U3RhdGVtZW50QWdhaW5zdENvbWJpbmF0b3IiLCJkZXJpdmVkIiwiYXNzaWdubWVudHMiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uIiwiZmlyc3RBc3NpZ25tZW50IiwiZmlyc3QiLCJhc3NpZ25tZW50IiwidmFyaWFibGVzIiwibGVmdFRlcm1Ob2RlIiwicmlnaHRUZXJtTm9kZSIsImxlZnRUZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJyaWdodFRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJmaXJzdFZhcmlhYmxlIiwic2Vjb25kVmFyaWFibGUiLCJzZWNvbmQiLCJsZWZ0VmFyaWFibGUiLCJyaWdodFZhcmlhYmxlIiwibGVmdFZhcmlhYmxlTmFtZSIsImdldE5hbWUiLCJsZWZ0VmFyaWFibGVUeXBlIiwiZ2V0VHlwZSIsInJpZ2h0VmFyaWFibGVOYW1lIiwicmlnaHRWYXJpYWJsZVR5cGUiLCJsZWZ0VmFyaWFibGVUeXBlRXF1YWxUb09yU3ViVHlwZU9mT2ZTdXBlclR5cGVPZlJpZ2h0VmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2ZPZlN1cGVyVHlwZU9mIiwibGVmdFZhcmlhYmxlVHlwZVN1cGVyVHlwZU9mUmlnaHRWYXJpYWJsZVR5cGUiLCJpc1N1cGVyVHlwZU9mIiwicmlnaHRWYXJpYWJsZVR5cGVTdXBlclR5cGVPZkxlZnRWYXJpYWJsZVR5cGUiLCJuYW1lIiwidHlwZSIsImFzc2lnbkFzc2lnbm1lbnQiLCJ0eXBlcyIsInZlcmlmeVRlcm0iLCJmaXJzdFR5cGUiLCJyaWdodFRlcm1UeXBlIiwibGVmdFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJsZWZ0VGVybVR5cGUiLCJyaWdodFZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mUmlnaHRUZXJtVHlwZSIsImluZm8iLCJhc3NpZ25tZW50TWF0Y2hlc05hbWVBbmRUeXBlIiwibWF0Y2hOYW1lQW5kVHlwZSIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJBOzs7ZUFBd0JBOzs7MERBZkQ7NkRBQ1E7cUJBRUw7cUJBQ0k7b0JBRWM7eUJBQ0s7cUJBQ1k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU3RCxJQUFNQyxvQkFBb0JDLElBQUFBLGdCQUFTLEVBQUMsaUNBQzlCQyxxQkFBcUJELElBQUFBLGdCQUFTLEVBQUMsaUNBQy9CRSxxQkFBcUJGLElBQUFBLGdCQUFTLEVBQUMsOEJBQy9CRyx5QkFBeUJILElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0Ysb0JBQW9CTSxpQkFBaUIsRUFBRUMsT0FBTyxFQUFFO0lBQ3RFLElBQUlDLHdCQUF3QixLQUFLO0lBRWpDLElBQU1DLHNCQUFzQkYsUUFBUUcsWUFBWSxDQUFDSjtJQUVqREMsUUFBUUksS0FBSyxDQUFDLEFBQUMsa0JBQXFDLE9BQXBCRixxQkFBb0Isd0JBQXNCSDtJQUUxRSxJQUFJTSxnQkFBZ0JSLG1CQUFtQkU7SUFFdkMsSUFBTU8sOEJBQThCQyxJQUFBQSxtREFBNEMsRUFBQ0Y7SUFFakYsSUFBSUMsZ0NBQWdDLElBQUksRUFBRTtRQUN4Q0QsZ0JBQWdCQyw2QkFBNkIsR0FBRztJQUNsRCxDQUFDO0lBRUQsSUFBTUUsa0JBQWtCUixRQUFRRyxZQUFZLENBQUNFLGdCQUN2Q0ksbUJBQW1CVCxRQUFRVSxjQUFjLENBQUNMO0lBRWhELElBQUksQ0FBQ0ksa0JBQWtCO1FBQ3JCVCxRQUFRVyxLQUFLLENBQUMsQUFBQyxRQUF1QixPQUFoQkgsaUJBQWdCLCtDQUE2Q1Q7SUFDckYsT0FBTztRQUNMLElBQU1hLGFBQWFDLGlCQUFrQixFQUMvQkMscUNBQXFDQyxJQUFBQSwyQ0FBZ0MsRUFBQ1YsZUFBZU8sWUFBWVo7UUFFdkcsSUFBSSxDQUFDYyxvQ0FBb0M7WUFDdkNkLFFBQVFXLEtBQUssQ0FBQyxBQUFDLFFBQXVCLE9BQWhCSCxpQkFBZ0Isb0NBQWtDVDtRQUMxRSxPQUFPO1lBQ0wsSUFBTWlCLFVBQVUsS0FBSyxFQUNmQyxjQUFjLEVBQUUsRUFDaEJDLG9CQUFvQnBCLHVCQUF1QkMsb0JBQzNDb0IsZ0NBQWdDQyxJQUFBQSxpQ0FBMkIsRUFBQ0YsbUJBQW1CRCxhQUFhRCxTQUFTaEI7WUFFM0csSUFBSW1CLCtCQUErQjtnQkFDakMsSUFBTUUsa0JBQWtCQyxJQUFBQSxZQUFLLEVBQUNMLGNBQ3hCTSxhQUFhRixpQkFDYkcsWUFBWSxFQUFFLEVBQ2RDLGVBQWUvQixrQkFBa0JXLGdCQUNqQ3FCLGdCQUFnQjlCLG1CQUFtQlMsZ0JBQ25Dc0IsNkJBQTZCQyxJQUFBQSwwQkFBb0IsRUFBQ0gsY0FBY0QsV0FBV3hCLFVBQzNFNkIsOEJBQThCRCxJQUFBQSwwQkFBb0IsRUFBQ0YsZUFBZUYsV0FBV3hCO2dCQUVuRixJQUFJMkIsOEJBQThCRSw2QkFBNkI7b0JBQzdELElBQU1DLGdCQUFnQlIsSUFBQUEsWUFBSyxFQUFDRSxZQUN0Qk8saUJBQWlCQyxJQUFBQSxhQUFNLEVBQUNSLFlBQ3hCUyxlQUFlSCxlQUNmSSxnQkFBZ0JILGdCQUNoQkksbUJBQW1CRixhQUFhRyxPQUFPLElBQ3ZDQyxtQkFBbUJKLGFBQWFLLE9BQU8sSUFDdkNDLG9CQUFvQkwsY0FBY0UsT0FBTyxJQUN6Q0ksb0JBQW9CTixjQUFjSSxPQUFPLElBQ3pDRyxtRUFBbUVKLGlCQUFpQkssaUNBQWlDLENBQUNGO29CQUU1SCxJQUFJQyxrRUFBa0U7d0JBQ3BFLElBQU1FLCtDQUErQ04saUJBQWlCTyxhQUFhLENBQUNKLG9CQUM5RUssK0NBQStDTCxrQkFBa0JJLGFBQWEsQ0FBQ1A7d0JBRXJGLElBQUlNLDhDQUE4Qzs0QkFDaEQsSUFBTUcsT0FBT1gsa0JBQ1BZLE9BQU9QLG1CQUFvQixHQUFHOzRCQUVwQ1EsaUJBQWlCRixNQUFNQyxNQUFNeEIsWUFBWXZCO3dCQUMzQyxDQUFDO3dCQUVELElBQUk2Qyw4Q0FBOEM7NEJBQ2hELElBQU1DLFFBQU9QLG1CQUNQUSxRQUFPVixrQkFBbUIsR0FBRzs0QkFFbkNXLGlCQUFpQkYsT0FBTUMsT0FBTXhCLFlBQVl2Qjt3QkFDM0MsQ0FBQztvQkFDSCxDQUFDO2dCQUNILE9BQU8sSUFBSTJCLDRCQUE0QjtvQkFDckMsSUFBTXNCLFFBQVEsRUFBRTtvQkFFaEJDLElBQUFBLGFBQVUsRUFBQ3hCLGVBQWV1QixPQUFPakQ7b0JBRWpDLElBQU1tRCxZQUFZN0IsSUFBQUEsWUFBSyxFQUFDMkIsUUFDbEJuQixpQkFBZ0JSLElBQUFBLFlBQUssRUFBQ0UsWUFDdEJTLGdCQUFlSCxnQkFDZnNCLGdCQUFnQkQsV0FDaEJoQixvQkFBbUJGLGNBQWFHLE9BQU8sSUFDdkNDLG9CQUFtQkosY0FBYUssT0FBTyxJQUN2Q2Usb0RBQW9EaEIsa0JBQWlCaUIsc0JBQXNCLENBQUNGO29CQUVsRyxJQUFJQyxtREFBbUQ7d0JBQ3JELElBQU1QLFFBQU9YLG1CQUNQWSxRQUFPSyxlQUFlLEdBQUc7d0JBRS9CSixpQkFBaUJGLE9BQU1DLE9BQU14QixZQUFZdkI7b0JBQzNDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJNkIsNkJBQTZCO29CQUN0QyxJQUFNb0IsU0FBUSxFQUFFO29CQUVoQkMsSUFBQUEsYUFBVSxFQUFDekIsY0FBY3dCLFFBQU9qRDtvQkFFaEMsSUFBTW1ELGFBQVk3QixJQUFBQSxZQUFLLEVBQUMyQixTQUNsQm5CLGlCQUFnQlIsSUFBQUEsWUFBSyxFQUFDRSxZQUN0QitCLGVBQWVKLFlBQ2ZqQixpQkFBZ0JKLGdCQUNoQlMscUJBQW9CTCxlQUFjRSxPQUFPLElBQ3pDSSxxQkFBb0JOLGVBQWNJLE9BQU8sSUFDekNrQixxREFBcURoQixtQkFBa0JjLHNCQUFzQixDQUFDQztvQkFFcEcsSUFBSUMsb0RBQW9EO3dCQUN0RCxJQUFNVixRQUFPUCxvQkFDUFEsUUFBT1EsY0FBYyxHQUFHO3dCQUU5QlAsaUJBQWlCRixPQUFNQyxPQUFNeEIsWUFBWXZCO29CQUMzQyxDQUFDO2dCQUNILENBQUM7Z0JBRURDLHdCQUF3QixJQUFJO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLHVCQUF1QjtRQUN6QkQsUUFBUXlELElBQUksQ0FBQyxBQUFDLGlCQUFvQyxPQUFwQnZELHFCQUFvQixzQkFBb0JIO0lBQ3hFLENBQUM7SUFFRCxPQUFPRTtBQUNUO0FBRUEsU0FBUytDLGlCQUFpQkYsSUFBSSxFQUFFQyxJQUFJLEVBQUV4QixVQUFVLEVBQUV2QixPQUFPLEVBQUU7SUFDekQsSUFBTTBELCtCQUErQm5DLFdBQVdvQyxnQkFBZ0IsQ0FBQ2IsTUFBTUM7SUFFdkUsSUFBSVcsOEJBQThCO1FBQ2hDbkMsV0FBV3FDLE1BQU0sQ0FBQzVEO0lBQ3BCLENBQUM7QUFDSCJ9
|
package/package.json
CHANGED
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
|
|
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
|
|
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
|
|
28
|
+
const nameMatches = (this.name === name);
|
|
29
29
|
|
|
30
|
-
return
|
|
30
|
+
return nameMatches;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
matchMetaTypeName(metaTypeName) {
|
|
34
|
-
const
|
|
34
|
+
const metaTypeNameMatches = (this.name === metaTypeName);
|
|
35
35
|
|
|
36
|
-
return
|
|
36
|
+
return metaTypeNameMatches;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
asString(tokens) {
|
package/src/metavariable.js
CHANGED
package/src/rule.js
CHANGED
|
@@ -32,7 +32,7 @@ export default class Rule {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
matchLabelName(labelName) {
|
|
35
|
-
const
|
|
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
|
|
44
|
+
return labelNameMatches;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
matchStatement(statementNode, statementProofContext) {
|
package/src/step/metaproof.js
CHANGED
|
@@ -29,37 +29,37 @@ export default class MetaproofStep {
|
|
|
29
29
|
const ruleSubproofAssertionNode = ruleSubproofAssertionNodeQuery(metastatementNode);
|
|
30
30
|
|
|
31
31
|
if (ruleSubproofAssertionNode !== null) {
|
|
32
|
-
const
|
|
32
|
+
const ruleSubproofAssertionMatches = this.matchRuleSubproofAssertion(ruleSubproofAssertionNode);
|
|
33
33
|
|
|
34
|
-
matches =
|
|
34
|
+
matches = ruleSubproofAssertionMatches; ///
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
if (!matches) {
|
|
39
|
-
const
|
|
39
|
+
const metastatementMatches = this.matchMetastatement(metastatementNode);
|
|
40
40
|
|
|
41
|
-
matches =
|
|
41
|
+
matches = metastatementMatches; ///
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
return matches;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
matchMetastatement(metastatementNode) {
|
|
48
|
-
let
|
|
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
|
-
|
|
55
|
+
metastatementMatches = metastatementMatchesModuloBrackets; ///
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
return
|
|
58
|
+
return metastatementMatches;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
matchRuleSubproofAssertion(ruleSubproofAssertionNode) {
|
|
62
|
-
let
|
|
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
|
-
|
|
82
|
+
ruleSubproofAssertionMatches = metastatementMatchesModuloBrackets; ///
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
return
|
|
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
|
|
23
|
+
const statementMatches = this.matchStatement(statementNode);
|
|
24
24
|
|
|
25
|
-
matches =
|
|
25
|
+
matches = statementMatches; //
|
|
26
26
|
|
|
27
27
|
return matches;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
matchStatement(statementNode) {
|
|
31
|
-
let
|
|
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
|
-
|
|
39
|
+
statementMatches = statementMatchesModuloBrackets; ///
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
return
|
|
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
|
|
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
|
-
|
|
28
|
+
metastatementNodeMatches = nodeMatches; ///
|
|
29
29
|
|
|
30
|
-
if (!
|
|
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
|
-
|
|
39
|
+
metastatementNodeMatches = nodeMatches; ///
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
return
|
|
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
|
|
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
|
-
|
|
28
|
+
statementNodeMatches = nodeMatches; ///
|
|
29
29
|
|
|
30
|
-
if (!
|
|
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
|
-
|
|
39
|
+
statementNodeMatches = nodeMatches; ///
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
return
|
|
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
|
|
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
|
-
|
|
26
|
+
termNodeMatches = nodeMatches; ///
|
|
27
27
|
|
|
28
|
-
return
|
|
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
|
|
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
|
|
93
|
+
const nameMatches = (this.name === name);
|
|
97
94
|
|
|
98
|
-
return
|
|
95
|
+
return nameMatches;
|
|
99
96
|
}
|
|
100
97
|
|
|
101
98
|
matchTypeName(typeName) {
|
|
102
|
-
const
|
|
99
|
+
const typeNameMatches = (this.name === typeName);
|
|
103
100
|
|
|
104
|
-
return
|
|
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
|
|
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
|
|
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 = [],
|
package/src/verify/proof.js
CHANGED
|
@@ -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
|
|
package/src/verify/ruleProof.js
CHANGED
|
@@ -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
|
|