occam-verify-cli 0.0.479 → 0.0.481

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.
@@ -1,79 +0,0 @@
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 verifyTypeAssertion;
9
- }
10
- });
11
- var _array = require("../../utilities/array");
12
- var _string = require("../../utilities/string");
13
- var _query = require("../../utilities/query");
14
- var _term = require("../../verify/term");
15
- var _variable = /*#__PURE__*/ _interopRequireDefault(require("../../variable"));
16
- function _interopRequireDefault(obj) {
17
- return obj && obj.__esModule ? obj : {
18
- default: obj
19
- };
20
- }
21
- var termNodeQuery = (0, _query.nodeQuery)("/typeAssertion/term"), typeNodeQuery = (0, _query.nodeQuery)("/typeAssertion/type");
22
- function verifyTypeAssertion(typeAssertionNode, proofContext) {
23
- var typeAssertionVerified = false;
24
- proofContext.begin(typeAssertionNode);
25
- var typeAssertionString = (0, _string.nodeAsString)(typeAssertionNode);
26
- proofContext.debug("Verifying the '".concat(typeAssertionString, "' type assertion..."));
27
- var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = proofContext.isTypePresentByTypeName(typeName);
28
- if (!typePresent) {
29
- proofContext.error("The ".concat(typeName, " type is not present."));
30
- } else {
31
- var context = proofContext, termNode = termNodeQuery(typeAssertionNode), variables = [], termVerifiedAsVariable = (0, _term.verifyTermAsVariable)(termNode, variables, context);
32
- if (termVerifiedAsVariable) {
33
- var variableTypeAssertionVerified = verifyVariableTypeAssertion(typeAssertionNode, proofContext);
34
- typeAssertionVerified = variableTypeAssertionVerified; ///
35
- } else {
36
- var termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, proofContext);
37
- typeAssertionVerified = termTypeAssertionVerified; ///
38
- }
39
- }
40
- if (typeAssertionVerified) {
41
- proofContext.info("Verified the '".concat(typeAssertionString, "' type assertion."));
42
- }
43
- typeAssertionVerified ? proofContext.complete(typeAssertionNode) : proofContext.halt(typeAssertionNode);
44
- return typeAssertionVerified;
45
- }
46
- function verifyTermTypeAssertion(typeAssertionNode, proofContext) {
47
- var termTypeAssertionVerified = false;
48
- var types = [], context = proofContext, termNode = termNodeQuery(typeAssertionNode), termVerifiedAgainstConstructors = (0, _term.verifyTermAgainstConstructors)(termNode, types, context);
49
- if (termVerifiedAgainstConstructors) {
50
- var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), assertedTypeName = typeName, assertedType = proofContext.findTypeByTypeName(assertedTypeName), firstType = (0, _array.first)(types), termType = firstType, assertedTypeEqualToOrSubTypeOfTermType = assertedType.isEqualToOrSubTypeOf(termType);
51
- if (!assertedTypeEqualToOrSubTypeOfTermType) {
52
- var termString = (0, _string.nodeAsString)(termNode);
53
- proofContext.error("The asserted type is not equal to or a sub-type of the '".concat(termString, "' term type."));
54
- } else {
55
- termTypeAssertionVerified = true;
56
- }
57
- }
58
- return termTypeAssertionVerified;
59
- }
60
- function verifyVariableTypeAssertion(typeAssertionNode, proofContext) {
61
- var variableTypeAssertionVerified = false;
62
- var context = proofContext, variables = [], termNode = termNodeQuery(typeAssertionNode);
63
- (0, _term.verifyTermAsVariable)(termNode, variables, context);
64
- var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), assertedTypeName = typeName, assertedType = proofContext.findTypeByTypeName(assertedTypeName), firstVariable = (0, _array.first)(variables), variable = firstVariable, variableName = variable.getName(), variableType = variable.getType();
65
- var assertedTypeEqualToOrSubTypeOfVariableType = variableType === null ? true : assertedType.isEqualToOrSubTypeOf(variableType);
66
- if (!assertedTypeEqualToOrSubTypeOfVariableType) {
67
- proofContext.error("The asserted type is not equal to or a sub-type of the '".concat(variableName, "' variable type."));
68
- } else {
69
- var derived = proofContext.isDerived();
70
- if (!derived) {
71
- var type = assertedType, name = variableName, variable1 = _variable.default.fromTypeAndName(type, name);
72
- proofContext.addVariable(variable1);
73
- }
74
- variableTypeAssertionVerified = true;
75
- }
76
- return variableTypeAssertionVerified;
77
- }
78
-
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNWYXJpYWJsZSwgdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMgfSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1cIjtcbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4odHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHByb29mQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgdHlwZVByZXNlbnQgPSBwcm9vZkNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnRleHQgPSBwcm9vZkNvbnRleHQsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZDsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VGVybVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7ICAvLy9cbiAgICB9XG4gIH1cblxuICBpZiAodHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgcHJvb2ZDb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCk7XG4gIH1cblxuICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgP1xuICAgIHByb29mQ29udGV4dC5jb21wbGV0ZSh0eXBlQXNzZXJ0aW9uTm9kZSkgOlxuICAgICAgcHJvb2ZDb250ZXh0LmhhbHQodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICBjb250ZXh0ID0gcHJvb2ZDb250ZXh0LCAvLy9cbiAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMpIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIGFzc2VydGVkVHlwZSA9IHByb29mQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoYXNzZXJ0ZWRUeXBlTmFtZSksXG4gICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgIHRlcm1UeXBlID0gZmlyc3RUeXBlLFxuICAgICAgICAgIGFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlID0gYXNzZXJ0ZWRUeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHRlcm1UeXBlKTtcblxuICAgIGlmICghYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1Yi10eXBlIG9mIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB0eXBlLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGV4dCA9IHByb29mQ29udGV4dCwgLy8vXG4gICAgICAgIHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICBhc3NlcnRlZFR5cGVOYW1lID0gdHlwZU5hbWUsICAvLy9cbiAgICAgICAgYXNzZXJ0ZWRUeXBlID0gcHJvb2ZDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShhc3NlcnRlZFR5cGVOYW1lKSxcbiAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgIHZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZSwgLy8vXG4gICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gIGNvbnN0IGFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9ICh2YXJpYWJsZVR5cGUgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSA6ICAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRlZFR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodmFyaWFibGVUeXBlKTtcblxuICBpZiAoIWFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgIHByb29mQ29udGV4dC5lcnJvcihgVGhlIGFzc2VydGVkIHR5cGUgaXMgbm90IGVxdWFsIHRvIG9yIGEgc3ViLXR5cGUgb2YgdGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlIHR5cGUuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IHByb29mQ29udGV4dC5pc0Rlcml2ZWQoKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgY29uc3QgdHlwZSA9IGFzc2VydGVkVHlwZSwgIC8vL1xuICAgICAgICAgICAgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG5cbiAgICAgIHByb29mQ29udGV4dC5hZGRWYXJpYWJsZSh2YXJpYWJsZSk7XG4gICAgfVxuXG4gICAgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGVBc3NlcnRpb24iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlIiwicHJvb2ZDb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwiYmVnaW4iLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwiZXJyb3IiLCJjb250ZXh0IiwidGVybU5vZGUiLCJ2YXJpYWJsZXMiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVZhcmlhYmxlVHlwZUFzc2VydGlvbiIsInRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtVHlwZUFzc2VydGlvbiIsImluZm8iLCJjb21wbGV0ZSIsImhhbHQiLCJ0eXBlcyIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsImFzc2VydGVkVHlwZU5hbWUiLCJhc3NlcnRlZFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJmaXJzdFR5cGUiLCJmaXJzdCIsInRlcm1UeXBlIiwiYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInRlcm1TdHJpbmciLCJmaXJzdFZhcmlhYmxlIiwidmFyaWFibGUiLCJ2YXJpYWJsZU5hbWUiLCJnZXROYW1lIiwidmFyaWFibGVUeXBlIiwiZ2V0VHlwZSIsImFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ0eXBlIiwibmFtZSIsIlZhcmlhYmxlIiwiZnJvbVR5cGVBbmROYW1lIiwiYWRkVmFyaWFibGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBd0JBOzs7cUJBVEY7c0JBQ087cUJBQ21CO29CQUNvQjs2REFDL0M7Ozs7OztBQUVyQixJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysb0JBQW9CSSxpQkFBaUIsRUFBRUMsWUFBWSxFQUFFO0lBQzNFLElBQUlDLHdCQUF3QixLQUFLO0lBRWpDRCxhQUFhRSxLQUFLLENBQUNIO0lBRW5CLElBQU1JLHNCQUFzQkMsSUFBQUEsb0JBQVksRUFBQ0w7SUFFekNDLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUFxQyxPQUFwQkYscUJBQW9CO0lBRXpELElBQU1HLFdBQVdSLGNBQWNDLG9CQUN6QlEsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDRyxjQUFjVCxhQUFhVSx1QkFBdUIsQ0FBQ0g7SUFFekQsSUFBSSxDQUFDRSxhQUFhO1FBQ2hCVCxhQUFhVyxLQUFLLENBQUMsQUFBQyxPQUFlLE9BQVRKLFVBQVM7SUFDckMsT0FBTztRQUNMLElBQU1LLFVBQVVaLGNBQ1ZhLFdBQVdqQixjQUFjRyxvQkFDekJlLFlBQVksRUFBRSxFQUNkQyx5QkFBeUJDLElBQUFBLDBCQUFvQixFQUFDSCxVQUFVQyxXQUFXRjtRQUV6RSxJQUFJRyx3QkFBd0I7WUFDMUIsSUFBTUUsZ0NBQWdDQyw0QkFBNEJuQixtQkFBbUJDO1lBRXJGQyx3QkFBd0JnQiwrQkFBZ0MsR0FBRztRQUM3RCxPQUFPO1lBQ0wsSUFBTUUsNEJBQTRCQyx3QkFBd0JyQixtQkFBbUJDO1lBRTdFQyx3QkFBd0JrQiwyQkFBNEIsR0FBRztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlsQix1QkFBdUI7UUFDekJELGFBQWFxQixJQUFJLENBQUMsQUFBQyxpQkFBb0MsT0FBcEJsQixxQkFBb0I7SUFDekQsQ0FBQztJQUVERix3QkFDRUQsYUFBYXNCLFFBQVEsQ0FBQ3ZCLHFCQUNwQkMsYUFBYXVCLElBQUksQ0FBQ3hCLGtCQUFrQjtJQUV4QyxPQUFPRTtBQUNUO0FBRUEsU0FBU21CLHdCQUF3QnJCLGlCQUFpQixFQUFFQyxZQUFZLEVBQUU7SUFDaEUsSUFBSW1CLDRCQUE0QixLQUFLO0lBRXJDLElBQU1LLFFBQVEsRUFBRSxFQUNWWixVQUFVWixjQUNWYSxXQUFXakIsY0FBY0csb0JBQ3pCMEIsa0NBQWtDQyxJQUFBQSxtQ0FBNkIsRUFBQ2IsVUFBVVcsT0FBT1o7SUFFdkYsSUFBSWEsaUNBQWlDO1FBQ25DLElBQU1uQixXQUFXUixjQUFjQyxvQkFDekJRLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDRixXQUNoQ3FCLG1CQUFtQnBCLFVBQ25CcUIsZUFBZTVCLGFBQWE2QixrQkFBa0IsQ0FBQ0YsbUJBQy9DRyxZQUFZQyxJQUFBQSxZQUFLLEVBQUNQLFFBQ2xCUSxXQUFXRixXQUNYRyx5Q0FBeUNMLGFBQWFNLG9CQUFvQixDQUFDRjtRQUVqRixJQUFJLENBQUNDLHdDQUF3QztZQUMzQyxJQUFNRSxhQUFhL0IsSUFBQUEsb0JBQVksRUFBQ1M7WUFFaENiLGFBQWFXLEtBQUssQ0FBQyxBQUFDLDJEQUFxRSxPQUFYd0IsWUFBVztRQUMzRixPQUFPO1lBQ0xoQiw0QkFBNEIsSUFBSTtRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9BO0FBQ1Q7QUFFQSxTQUFTRCw0QkFBNEJuQixpQkFBaUIsRUFBRUMsWUFBWSxFQUFFO0lBQ3BFLElBQUlpQixnQ0FBZ0MsS0FBSztJQUV6QyxJQUFNTCxVQUFVWixjQUNWYyxZQUFZLEVBQUUsRUFDZEQsV0FBV2pCLGNBQWNHO0lBRS9CaUIsSUFBQUEsMEJBQW9CLEVBQUNILFVBQVVDLFdBQVdGO0lBRTFDLElBQU1OLFdBQVdSLGNBQWNDLG9CQUN6QlEsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDcUIsbUJBQW1CcEIsVUFDbkJxQixlQUFlNUIsYUFBYTZCLGtCQUFrQixDQUFDRixtQkFDL0NTLGdCQUFnQkwsSUFBQUEsWUFBSyxFQUFDakIsWUFDdEJ1QixXQUFXRCxlQUNYRSxlQUFlRCxTQUFTRSxPQUFPLElBQy9CQyxlQUFlSCxTQUFTSSxPQUFPO0lBRXJDLElBQU1DLDZDQUE2QyxBQUFDRixpQkFBaUIsSUFBSSxHQUNuQixJQUFJLEdBQ0ZaLGFBQWFNLG9CQUFvQixDQUFDTSxhQUFhO0lBRXZHLElBQUksQ0FBQ0UsNENBQTRDO1FBQy9DMUMsYUFBYVcsS0FBSyxDQUFDLEFBQUMsMkRBQXVFLE9BQWIyQixjQUFhO0lBQzdGLE9BQU87UUFDTCxJQUFNSyxVQUFVM0MsYUFBYTRDLFNBQVM7UUFFdEMsSUFBSSxDQUFDRCxTQUFTO1lBQ1osSUFBTUUsT0FBT2pCLGNBQ1BrQixPQUFPUixjQUNQRCxZQUFXVSxpQkFBUSxDQUFDQyxlQUFlLENBQUNILE1BQU1DO1lBRWhEOUMsYUFBYWlELFdBQVcsQ0FBQ1o7UUFDM0IsQ0FBQztRQUVEcEIsZ0NBQWdDLElBQUk7SUFDdEMsQ0FBQztJQUVELE9BQU9BO0FBQ1QifQ==
@@ -1,133 +0,0 @@
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 verifyEquality;
9
- }
10
- });
11
- var _equality = /*#__PURE__*/ _interopRequireDefault(require("../equality"));
12
- var _variable = /*#__PURE__*/ _interopRequireDefault(require("../variable"));
13
- var _term = /*#__PURE__*/ _interopRequireWildcard(require("../verify/term"));
14
- var _query = require("../utilities/query");
15
- var _string = require("../utilities/string");
16
- var _array = require("../utilities/array");
17
- var _constants = require("../constants");
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)("/equality/term[0]"), rightTermNodeQuery = (0, _query.nodeQuery)("/equality/term[1]");
63
- function verifyEquality(equalityNode, proofContext) {
64
- var equalityVerified = false;
65
- proofContext.begin(equalityNode);
66
- var equalityString = (0, _string.nodeAsString)(equalityNode);
67
- proofContext.debug("Verifying the '".concat(equalityString, "' equality..."));
68
- var types = [], context = proofContext, leftTermNode = leftTermNodeQuery(equalityNode), rightTermNode = rightTermNodeQuery(equalityNode), leftTermVerified = (0, _term.default)(leftTermNode, types, context), rightTermVerified = (0, _term.default)(rightTermNode, types, context);
69
- if (leftTermVerified && rightTermVerified) {
70
- var firstType = (0, _array.first)(types), secondType = (0, _array.second)(types), leftType = firstType, rightType = secondType, leftTermString = (0, _string.nodeAsString)(leftTermNode), rightTermString = (0, _string.nodeAsString)(rightTermNode);
71
- if (leftType === null && rightType === null) {
72
- proofContext.error("The types of the '".concat(leftTermString, "' and '").concat(rightTermString, "' terms are both undefined and therefore the terms cannot be equated."));
73
- } else if (rightType === null) {
74
- var type = leftType, termNode = rightTermNode, variable = addVariable(type, termNode, proofContext);
75
- if (variable !== null) {
76
- var leftTypeName = leftType.getName();
77
- proofContext.info("The '".concat(rightTermString, "' variable has been given the '").concat(leftTypeName, "' type."));
78
- equalityVerified = true;
79
- }
80
- } else if (leftType === null) {
81
- var type1 = rightType, termNode1 = leftType, variable1 = addVariable(type1, termNode1, proofContext);
82
- if (variable1 !== null) {
83
- var rightTypeName = rightType.getName();
84
- proofContext.info("The '".concat(rightTermString, "' variable has been given the '").concat(rightTypeName, "' type."));
85
- equalityVerified = true;
86
- }
87
- } else {
88
- var leftTypeMatchesRightType = leftType.match(rightType);
89
- if (!leftTypeMatchesRightType) {
90
- proofContext.error("The types of the '".concat(leftTermString, "' and '").concat(rightTermString, "' terms do not match and therefore the terms cannot be equated."));
91
- } else {
92
- var derived = proofContext.isDerived();
93
- if (!derived) {
94
- equalityVerified = true;
95
- } else {
96
- var equality = _equality.default.fromEqualityNode(equalityNode), proofSteps = proofContext.getProofSteps(), equalities = equalitiesFromProofSteps(proofSteps), equalityEquates = equality.equate(equalities, proofContext);
97
- equalityVerified = equalityEquates; ///
98
- }
99
- }
100
- }
101
- }
102
- if (equalityVerified) {
103
- proofContext.info("Verified the '".concat(equalityString, "' equality."));
104
- }
105
- equalityVerified ? proofContext.complete(equalityNode) : proofContext.halt(equalityNode);
106
- return equalityVerified;
107
- }
108
- function equalitiesFromProofSteps(proofSteps) {
109
- var start = -_constants.MAXIMUM_INDEXES_LENGTH; ///
110
- proofSteps = proofSteps.slice(start); ///
111
- var equalities = proofSteps.reduce(function(equalities, proofStep, index) {
112
- var equality = _equality.default.fromProofStep(proofStep);
113
- if (equality !== null) {
114
- equalities.push(equality);
115
- }
116
- return equalities;
117
- }, []);
118
- return equalities;
119
- }
120
- function addVariable(type, termNode, proofContext) {
121
- var variable = null;
122
- var variables = [], termVerifiedAsVariable = (0, _term.verifyTermAsVariable)(termNode, variables, proofContext);
123
- if (termVerifiedAsVariable) {
124
- var firstVariable = (0, _array.first)(variables);
125
- variable = firstVariable; ///
126
- var name = variable.getName();
127
- variable = _variable.default.fromTypeAndName(type, name); ///
128
- proofContext.addVariable(variable);
129
- }
130
- return variable;
131
- }
132
-
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZXF1YWxpdHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBFcXVhbGl0eSBmcm9tIFwiLi4vZXF1YWxpdHlcIjtcbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlIH0gZnJvbSBcIi4uL3ZlcmlmeS90ZXJtXCI7XG5pbXBvcnQgeyBNQVhJTVVNX0lOREVYRVNfTEVOR1RIIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBsZWZ0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9lcXVhbGl0eS90ZXJtWzBdXCIpLFxuICAgICAgcmlnaHRUZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2VxdWFsaXR5L3Rlcm1bMV1cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBlcXVhbGl0eVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgcHJvb2ZDb250ZXh0LmJlZ2luKGVxdWFsaXR5Tm9kZSk7XG5cbiAgY29uc3QgZXF1YWxpdHlTdHJpbmcgPSBub2RlQXNTdHJpbmcoZXF1YWxpdHlOb2RlKTtcblxuICBwcm9vZkNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS4uLmApO1xuXG4gIGNvbnN0IHR5cGVzID0gW10sXG4gICAgICAgIGNvbnRleHQgPSBwcm9vZkNvbnRleHQsICAvLy9cbiAgICAgICAgbGVmdFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlUXVlcnkoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGVRdWVyeShlcXVhbGl0eU5vZGUpLFxuICAgICAgICBsZWZ0VGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybShsZWZ0VGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KSxcbiAgICAgICAgcmlnaHRUZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHJpZ2h0VGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KTtcblxuICBpZiAobGVmdFRlcm1WZXJpZmllZCAmJiByaWdodFRlcm1WZXJpZmllZCkge1xuICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICBzZWNvbmRUeXBlID0gc2Vjb25kKHR5cGVzKSxcbiAgICAgICAgICBsZWZ0VHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgcmlnaHRUeXBlID0gc2Vjb25kVHlwZSwgLy8vXG4gICAgICAgICAgbGVmdFRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcobGVmdFRlcm1Ob2RlKSxcbiAgICAgICAgICByaWdodFRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcocmlnaHRUZXJtTm9kZSk7XG5cbiAgICBpZiAoKGxlZnRUeXBlID09PSBudWxsKSAmJiAocmlnaHRUeXBlID09PSBudWxsKSkge1xuICAgICAgcHJvb2ZDb250ZXh0LmVycm9yKGBUaGUgdHlwZXMgb2YgdGhlICcke2xlZnRUZXJtU3RyaW5nfScgYW5kICcke3JpZ2h0VGVybVN0cmluZ30nIHRlcm1zIGFyZSBib3RoIHVuZGVmaW5lZCBhbmQgdGhlcmVmb3JlIHRoZSB0ZXJtcyBjYW5ub3QgYmUgZXF1YXRlZC5gKTtcbiAgICB9IGVsc2UgaWYgKHJpZ2h0VHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IGxlZnRUeXBlLCAgLy8vXG4gICAgICAgICAgICB0ZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGUgPSBhZGRWYXJpYWJsZSh0eXBlLCB0ZXJtTm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGxlZnRUeXBlTmFtZSA9IGxlZnRUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICBwcm9vZkNvbnRleHQuaW5mbyhgVGhlICcke3JpZ2h0VGVybVN0cmluZ30nIHZhcmlhYmxlIGhhcyBiZWVuIGdpdmVuIHRoZSAnJHtsZWZ0VHlwZU5hbWV9JyB0eXBlLmApO1xuXG4gICAgICAgIGVxdWFsaXR5VmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVmdFR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSByaWdodFR5cGUsICAvLy9cbiAgICAgICAgICAgIHRlcm1Ob2RlID0gbGVmdFR5cGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGUgPSBhZGRWYXJpYWJsZSh0eXBlLCB0ZXJtTm9kZSwgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHJpZ2h0VHlwZU5hbWUgPSByaWdodFR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICAgIHByb29mQ29udGV4dC5pbmZvKGBUaGUgJyR7cmlnaHRUZXJtU3RyaW5nfScgdmFyaWFibGUgaGFzIGJlZW4gZ2l2ZW4gdGhlICcke3JpZ2h0VHlwZU5hbWV9JyB0eXBlLmApO1xuXG4gICAgICAgIGVxdWFsaXR5VmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsZWZ0VHlwZU1hdGNoZXNSaWdodFR5cGUgPSBsZWZ0VHlwZS5tYXRjaChyaWdodFR5cGUpO1xuXG4gICAgICBpZiAoIWxlZnRUeXBlTWF0Y2hlc1JpZ2h0VHlwZSkge1xuICAgICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSB0eXBlcyBvZiB0aGUgJyR7bGVmdFRlcm1TdHJpbmd9JyBhbmQgJyR7cmlnaHRUZXJtU3RyaW5nfScgdGVybXMgZG8gbm90IG1hdGNoIGFuZCB0aGVyZWZvcmUgdGhlIHRlcm1zIGNhbm5vdCBiZSBlcXVhdGVkLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGVyaXZlZCA9IHByb29mQ29udGV4dC5pc0Rlcml2ZWQoKTtcblxuICAgICAgICBpZiAoIWRlcml2ZWQpIHtcbiAgICAgICAgICBlcXVhbGl0eVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21FcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSxcbiAgICAgICAgICAgICAgICBwcm9vZlN0ZXBzID0gcHJvb2ZDb250ZXh0LmdldFByb29mU3RlcHMoKSxcbiAgICAgICAgICAgICAgICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0Zyb21Qcm9vZlN0ZXBzKHByb29mU3RlcHMpLFxuICAgICAgICAgICAgICAgIGVxdWFsaXR5RXF1YXRlcyA9IGVxdWFsaXR5LmVxdWF0ZShlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgZXF1YWxpdHlWZXJpZmllZCA9IGVxdWFsaXR5RXF1YXRlczsgIC8vL1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVxdWFsaXR5VmVyaWZpZWQpIHtcbiAgICBwcm9vZkNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCk7XG4gIH1cblxuICBlcXVhbGl0eVZlcmlmaWVkID9cbiAgICBwcm9vZkNvbnRleHQuY29tcGxldGUoZXF1YWxpdHlOb2RlKSA6XG4gICAgICBwcm9vZkNvbnRleHQuaGFsdChlcXVhbGl0eU5vZGUpO1xuXG4gIHJldHVybiBlcXVhbGl0eVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiBlcXVhbGl0aWVzRnJvbVByb29mU3RlcHMocHJvb2ZTdGVwcykge1xuICBjb25zdCBzdGFydCA9IC1NQVhJTVVNX0lOREVYRVNfTEVOR1RIOyAgLy8vXG5cbiAgcHJvb2ZTdGVwcyA9IHByb29mU3RlcHMuc2xpY2Uoc3RhcnQpOyAvLy9cblxuICBjb25zdCBlcXVhbGl0aWVzID0gcHJvb2ZTdGVwcy5yZWR1Y2UoKGVxdWFsaXRpZXMsIHByb29mU3RlcCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21Qcm9vZlN0ZXAocHJvb2ZTdGVwKTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgZXF1YWxpdGllcy5wdXNoKGVxdWFsaXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfSwgW10pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzO1xufVxuXG5mdW5jdGlvbiBhZGRWYXJpYWJsZSh0eXBlLCB0ZXJtTm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgY29uc3QgdmFyaWFibGVzID0gW10sXG4gICAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZnlUZXJtQXNWYXJpYWJsZSh0ZXJtTm9kZSwgdmFyaWFibGVzLCBwcm9vZkNvbnRleHQpO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyk7XG5cbiAgICB2YXJpYWJsZSA9IGZpcnN0VmFyaWFibGU7ICAvLy9cblxuICAgIGNvbnN0IG5hbWUgPSB2YXJpYWJsZS5nZXROYW1lKCk7XG5cbiAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21UeXBlQW5kTmFtZSh0eXBlLCBuYW1lKTsgIC8vL1xuXG4gICAgcHJvb2ZDb250ZXh0LmFkZFZhcmlhYmxlKHZhcmlhYmxlKTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZTtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlFcXVhbGl0eSIsImxlZnRUZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicmlnaHRUZXJtTm9kZVF1ZXJ5IiwiZXF1YWxpdHlOb2RlIiwicHJvb2ZDb250ZXh0IiwiZXF1YWxpdHlWZXJpZmllZCIsImJlZ2luIiwiZXF1YWxpdHlTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsInR5cGVzIiwiY29udGV4dCIsImxlZnRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJsZWZ0VGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsInJpZ2h0VGVybVZlcmlmaWVkIiwiZmlyc3RUeXBlIiwiZmlyc3QiLCJzZWNvbmRUeXBlIiwic2Vjb25kIiwibGVmdFR5cGUiLCJyaWdodFR5cGUiLCJsZWZ0VGVybVN0cmluZyIsInJpZ2h0VGVybVN0cmluZyIsImVycm9yIiwidHlwZSIsInRlcm1Ob2RlIiwidmFyaWFibGUiLCJhZGRWYXJpYWJsZSIsImxlZnRUeXBlTmFtZSIsImdldE5hbWUiLCJpbmZvIiwicmlnaHRUeXBlTmFtZSIsImxlZnRUeXBlTWF0Y2hlc1JpZ2h0VHlwZSIsIm1hdGNoIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImVxdWFsaXR5IiwiRXF1YWxpdHkiLCJmcm9tRXF1YWxpdHlOb2RlIiwicHJvb2ZTdGVwcyIsImdldFByb29mU3RlcHMiLCJlcXVhbGl0aWVzIiwiZXF1YWxpdGllc0Zyb21Qcm9vZlN0ZXBzIiwiZXF1YWxpdHlFcXVhdGVzIiwiZXF1YXRlIiwiY29tcGxldGUiLCJoYWx0Iiwic3RhcnQiLCJNQVhJTVVNX0lOREVYRVNfTEVOR1RIIiwic2xpY2UiLCJyZWR1Y2UiLCJwcm9vZlN0ZXAiLCJpbmRleCIsImZyb21Qcm9vZlN0ZXAiLCJwdXNoIiwidmFyaWFibGVzIiwidGVybVZlcmlmaWVkQXNWYXJpYWJsZSIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwiZmlyc3RWYXJpYWJsZSIsIm5hbWUiLCJWYXJp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
@@ -1,136 +0,0 @@
1
- "use strict";
2
-
3
- import Equality from "../equality";
4
- import Variable from "../variable";
5
- import verifyTerm from "../verify/term";
6
-
7
- import { nodeQuery } from "../utilities/query";
8
- import { nodeAsString } from "../utilities/string";
9
- import { first, second } from "../utilities/array";
10
- import { verifyTermAsVariable } from "../verify/term";
11
- import { MAXIMUM_INDEXES_LENGTH } from "../constants";
12
-
13
- const leftTermNodeQuery = nodeQuery("/equality/term[0]"),
14
- rightTermNodeQuery = nodeQuery("/equality/term[1]");
15
-
16
- export default function verifyEquality(equalityNode, proofContext) {
17
- let equalityVerified = false;
18
-
19
- proofContext.begin(equalityNode);
20
-
21
- const equalityString = nodeAsString(equalityNode);
22
-
23
- proofContext.debug(`Verifying the '${equalityString}' equality...`);
24
-
25
- const types = [],
26
- context = proofContext, ///
27
- leftTermNode = leftTermNodeQuery(equalityNode),
28
- rightTermNode = rightTermNodeQuery(equalityNode),
29
- leftTermVerified = verifyTerm(leftTermNode, types, context),
30
- rightTermVerified = verifyTerm(rightTermNode, types, context);
31
-
32
- if (leftTermVerified && rightTermVerified) {
33
- const firstType = first(types),
34
- secondType = second(types),
35
- leftType = firstType, ///
36
- rightType = secondType, ///
37
- leftTermString = nodeAsString(leftTermNode),
38
- rightTermString = nodeAsString(rightTermNode);
39
-
40
- if ((leftType === null) && (rightType === null)) {
41
- proofContext.error(`The types of the '${leftTermString}' and '${rightTermString}' terms are both undefined and therefore the terms cannot be equated.`);
42
- } else if (rightType === null) {
43
- const type = leftType, ///
44
- termNode = rightTermNode, ///
45
- variable = addVariable(type, termNode, proofContext);
46
-
47
- if (variable !== null) {
48
- const leftTypeName = leftType.getName();
49
-
50
- proofContext.info(`The '${rightTermString}' variable has been given the '${leftTypeName}' type.`);
51
-
52
- equalityVerified = true;
53
- }
54
- } else if (leftType === null) {
55
- const type = rightType, ///
56
- termNode = leftType, ///
57
- variable = addVariable(type, termNode, proofContext);
58
-
59
- if (variable !== null) {
60
- const rightTypeName = rightType.getName();
61
-
62
- proofContext.info(`The '${rightTermString}' variable has been given the '${rightTypeName}' type.`);
63
-
64
- equalityVerified = true;
65
- }
66
- } else {
67
- const leftTypeMatchesRightType = leftType.match(rightType);
68
-
69
- if (!leftTypeMatchesRightType) {
70
- proofContext.error(`The types of the '${leftTermString}' and '${rightTermString}' terms do not match and therefore the terms cannot be equated.`);
71
- } else {
72
- const derived = proofContext.isDerived();
73
-
74
- if (!derived) {
75
- equalityVerified = true;
76
- } else {
77
- const equality = Equality.fromEqualityNode(equalityNode),
78
- proofSteps = proofContext.getProofSteps(),
79
- equalities = equalitiesFromProofSteps(proofSteps),
80
- equalityEquates = equality.equate(equalities, proofContext);
81
-
82
- equalityVerified = equalityEquates; ///
83
- }
84
- }
85
- }
86
- }
87
-
88
- if (equalityVerified) {
89
- proofContext.info(`Verified the '${equalityString}' equality.`);
90
- }
91
-
92
- equalityVerified ?
93
- proofContext.complete(equalityNode) :
94
- proofContext.halt(equalityNode);
95
-
96
- return equalityVerified;
97
- }
98
-
99
- function equalitiesFromProofSteps(proofSteps) {
100
- const start = -MAXIMUM_INDEXES_LENGTH; ///
101
-
102
- proofSteps = proofSteps.slice(start); ///
103
-
104
- const equalities = proofSteps.reduce((equalities, proofStep, index) => {
105
- const equality = Equality.fromProofStep(proofStep);
106
-
107
- if (equality !== null) {
108
- equalities.push(equality);
109
- }
110
-
111
- return equalities;
112
- }, []);
113
-
114
- return equalities;
115
- }
116
-
117
- function addVariable(type, termNode, proofContext) {
118
- let variable = null;
119
-
120
- const variables = [],
121
- termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, proofContext);
122
-
123
- if (termVerifiedAsVariable) {
124
- const firstVariable = first(variables);
125
-
126
- variable = firstVariable; ///
127
-
128
- const name = variable.getName();
129
-
130
- variable = Variable.fromTypeAndName(type, name); ///
131
-
132
- proofContext.addVariable(variable);
133
- }
134
-
135
- return variable;
136
- }