occam-verify-cli 0.0.960 → 0.0.961
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/context/local.js +3 -9
- package/lib/proofStep.js +8 -5
- package/lib/substitution/termForVariable.js +24 -25
- package/lib/unifier/statementWithCombinator.js +6 -6
- package/lib/unify/statementAtainstStatement.js +16 -16
- package/lib/unify/statementWithBracketedCombinator.js +30 -0
- package/lib/unify/statementWithCombinators.js +40 -0
- package/lib/unify/statementWithMetaType.js +6 -30
- package/lib/unify/termWithBracketedConstructor.js +37 -0
- package/lib/unify/termWithConstructors.js +53 -0
- package/lib/unify/termWithType.js +4 -12
- package/lib/utilities/assignments.js +9 -12
- package/lib/verifier/intrinsicLevel.js +140 -0
- package/lib/verifier/metaLevel.js +11 -20
- package/lib/verifier/statementAsCombinator.js +9 -9
- package/lib/verifier/termAsConstructor.js +5 -5
- package/lib/verify/assertion/contained.js +2 -3
- package/lib/verify/assertion/defined.js +2 -4
- package/lib/verify/assertion/subproof.js +20 -18
- package/lib/verify/assertion/type.js +1 -2
- package/lib/verify/declaration.js +27 -9
- package/lib/verify/frame.js +25 -6
- package/lib/verify/premise.js +3 -3
- package/lib/verify/proofStep.js +23 -30
- package/lib/verify/statement/qualified.js +93 -137
- package/lib/verify/statement/unqualified.js +18 -104
- package/lib/verify/statement.js +95 -76
- package/lib/verify/statementAsCombinator.js +2 -2
- package/lib/verify/statementGivenMetaType.js +41 -0
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/term.js +36 -64
- package/lib/verify/termAsConstructor.js +2 -2
- package/lib/verify/termGivenType.js +34 -0
- package/package.json +1 -1
- package/src/context/local.js +4 -13
- package/src/proofStep.js +10 -5
- package/src/substitution/termForVariable.js +33 -30
- package/src/unifier/statementWithCombinator.js +5 -5
- package/src/unify/statementAtainstStatement.js +13 -13
- package/src/unify/statementWithBracketedCombinator.js +22 -0
- package/src/unify/statementWithCombinators.js +38 -0
- package/src/unify/statementWithMetaType.js +6 -42
- package/src/unify/termWithBracketedConstructor.js +36 -0
- package/src/unify/termWithConstructors.js +63 -0
- package/src/unify/termWithType.js +4 -20
- package/src/utilities/assignments.js +6 -13
- package/src/verifier/intrinsicLevel.js +42 -0
- package/src/verifier/metaLevel.js +13 -21
- package/src/verifier/statementAsCombinator.js +11 -7
- package/src/verifier/termAsConstructor.js +4 -3
- package/src/verify/assertion/contained.js +1 -3
- package/src/verify/assertion/defined.js +1 -4
- package/src/verify/assertion/subproof.js +22 -18
- package/src/verify/assertion/type.js +0 -1
- package/src/verify/declaration.js +34 -11
- package/src/verify/frame.js +32 -5
- package/src/verify/premise.js +3 -3
- package/src/verify/proofStep.js +26 -38
- package/src/verify/statement/qualified.js +104 -184
- package/src/verify/statement/unqualified.js +19 -149
- package/src/verify/statement.js +126 -72
- package/src/verify/statementAsCombinator.js +1 -1
- package/src/verify/statementGivenMetaType.js +37 -0
- package/src/verify/supposition.js +3 -3
- package/src/verify/term.js +38 -93
- package/src/verify/termAsConstructor.js +1 -1
- package/src/verify/termGivenType.js +32 -0
package/lib/verify/term.js
CHANGED
|
@@ -10,30 +10,36 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
|
|
12
12
|
var _term = /*#__PURE__*/ _interop_require_default(require("../term"));
|
|
13
|
-
var
|
|
14
|
-
var
|
|
13
|
+
var _termWithConstructors = /*#__PURE__*/ _interop_require_default(require("../unify/termWithConstructors"));
|
|
14
|
+
var _termWithBracketedConstructor = /*#__PURE__*/ _interop_require_default(require("../unify/termWithBracketedConstructor"));
|
|
15
15
|
var _query = require("../utilities/query");
|
|
16
16
|
function _interop_require_default(obj) {
|
|
17
17
|
return obj && obj.__esModule ? obj : {
|
|
18
18
|
default: obj
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
var
|
|
21
|
+
var variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
|
|
22
|
+
var unifyTermFunctions = [
|
|
23
|
+
_termWithBracketedConstructor.default,
|
|
24
|
+
_termWithConstructors.default
|
|
25
|
+
];
|
|
22
26
|
function verifyTerm(termNode, terms, localContext, verifyAhead) {
|
|
23
|
-
var termVerified;
|
|
27
|
+
var termVerified = false;
|
|
24
28
|
var termString = localContext.nodeAsString(termNode);
|
|
25
29
|
localContext.trace("Verifying the '".concat(termString, "' term..."), termNode);
|
|
26
|
-
|
|
27
|
-
verifyTermAsVariable,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
if (!termVerified) {
|
|
31
|
+
var termVerifiedAsVariable = verifyTermAsVariable(termNode, terms, localContext, verifyAhead);
|
|
32
|
+
termVerified = termVerifiedAsVariable; ///
|
|
33
|
+
}
|
|
34
|
+
if (!termVerified) {
|
|
35
|
+
var termUnified = unifyTermFunctions.some(function(unifyTermFunction) {
|
|
36
|
+
var termUnified = unifyTermFunction(termNode, terms, localContext, verifyAhead);
|
|
37
|
+
if (termUnified) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
termVerified = termUnified; ///
|
|
42
|
+
}
|
|
37
43
|
if (termVerified) {
|
|
38
44
|
localContext.debug("...verified the '".concat(termString, "' term."), termNode);
|
|
39
45
|
}
|
|
@@ -49,8 +55,8 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
|
|
|
49
55
|
if (variableNode !== null) {
|
|
50
56
|
var termString = localContext.nodeAsString(termNode);
|
|
51
57
|
localContext.trace("Verifying the '".concat(termString, "' term as a variable..."), termNode);
|
|
52
|
-
var
|
|
53
|
-
if (
|
|
58
|
+
var variableVerified = verifyVariable(variableNode, localContext);
|
|
59
|
+
if (variableVerified) {
|
|
54
60
|
var verifiedAhead;
|
|
55
61
|
var type = variable.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
|
|
56
62
|
terms.push(term);
|
|
@@ -64,54 +70,20 @@ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
|
|
|
64
70
|
}
|
|
65
71
|
return termVerifiedAsVariable;
|
|
66
72
|
}
|
|
67
|
-
function
|
|
68
|
-
var
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
return termUnifiedWithConstructors;
|
|
80
|
-
}
|
|
81
|
-
function unifyTermWithBracketedConstructor(termNode, terms, localContext, verifyAhead) {
|
|
82
|
-
var termUnifiedWithBracketedConstructor;
|
|
83
|
-
var termString = localContext.nodeAsString(termNode), bracketedTerms = [];
|
|
84
|
-
localContext.trace("Unifying the '".concat(termString, "' term with the bracketed constructor..."), termNode);
|
|
85
|
-
termUnifiedWithBracketedConstructor = unifyTermWithConstructor(termNode, bracketedTerms, _bracketed.default, localContext, function() {
|
|
86
|
-
var verifiedAhead;
|
|
87
|
-
var bracketedTermNode = termNode; ///
|
|
88
|
-
termNode = termNodeQuery(bracketedTermNode); ///
|
|
89
|
-
var termVVerified = verifyTerm(termNode, terms, localContext, verifyAhead);
|
|
90
|
-
verifiedAhead = termVVerified; ///
|
|
91
|
-
return verifiedAhead;
|
|
92
|
-
});
|
|
93
|
-
if (termUnifiedWithBracketedConstructor) {
|
|
94
|
-
localContext.debug("...unified the '".concat(termString, "' term with the bracketed constructor."), termNode);
|
|
95
|
-
}
|
|
96
|
-
return termUnifiedWithBracketedConstructor;
|
|
97
|
-
}
|
|
98
|
-
function unifyTermWithConstructor(termNode, terms, constructor, localContext, verifyAhead) {
|
|
99
|
-
var termUnifiedWithConstructor = false;
|
|
100
|
-
var termString = localContext.nodeAsString(termNode), constructorString = constructor.getString(), constructorTermNode = constructor.getTermNode();
|
|
101
|
-
localContext.trace("Unifying the '".concat(termString, "' term with the '").concat(constructorString, "' constructor..."), termNode);
|
|
102
|
-
var termNodeA = termNode, constructorTermNodeB = constructorTermNode, unified = _termWithConstructor.default.unify(termNodeA, constructorTermNodeB, localContext);
|
|
103
|
-
if (unified) {
|
|
104
|
-
var verifiedAhead;
|
|
105
|
-
var type = constructor.getType(), term = _term.default.fromTermNodeAndType(termNode, type);
|
|
106
|
-
terms.push(term);
|
|
107
|
-
verifiedAhead = verifyAhead();
|
|
108
|
-
terms.pop();
|
|
109
|
-
termUnifiedWithConstructor = verifiedAhead; ///
|
|
73
|
+
function verifyVariable(variableNode, localContext) {
|
|
74
|
+
var variableVerified = false;
|
|
75
|
+
var variableString = localContext.nodeAsString(variableNode);
|
|
76
|
+
localContext.trace("Verifying the '".concat(variableString, "' variable..."), variableNode);
|
|
77
|
+
var variablePresent = localContext.isVariablePresentByVariableNode(variableNode);
|
|
78
|
+
if (!variablePresent) {
|
|
79
|
+
localContext.trace("The '".concat(variableString, "' variable is not present."), variableNode);
|
|
80
|
+
} else {
|
|
81
|
+
variableVerified = true;
|
|
110
82
|
}
|
|
111
|
-
if (
|
|
112
|
-
localContext.debug("...
|
|
83
|
+
if (variableVerified) {
|
|
84
|
+
localContext.debug("...verified the '".concat(variableString, "' variable."), variableNode);
|
|
113
85
|
}
|
|
114
|
-
return
|
|
86
|
+
return variableVerified;
|
|
115
87
|
}
|
|
116
88
|
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgYnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL2NvbnN0cnVjdG9yL2JyYWNrZXRlZFwiO1xuaW1wb3J0IHRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3Rlcm1XaXRoQ29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VGVybUZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlUZXJtQXNWYXJpYWJsZSxcbiAgICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICAgIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvclxuICBdO1xuXG4gIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1GdW5jdGlvbnMuc29tZSgodmVyaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgdmVyaWZpZWRBaGVhZDtcblxuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgdGVybXMucG9wKCk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZmllZEFoZWFkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gLCB0ZXJtTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnModGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTtcblxuICAgIHRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgICAgY29uc3QgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgYnJhY2tldGVkVGVybXMgPSBbXTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgdGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIGJyYWNrZXRlZFRlcm1zLCBicmFja2V0ZWRDb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShicmFja2V0ZWRUZXJtTm9kZSk7IC8vL1xuXG4gICAgY29uc3QgdGVybVZWZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHRlcm1zLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB0ZXJtVlZlcmlmaWVkOyAgLy8vXG5cbiAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgfSk7XG5cbiAgaWYgKHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVkV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybU5vZGUsIHRlcm1zLCBjb25zdHJ1Y3RvciwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSksXG4gICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gY29uc3RydWN0b3IuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdGVybU5vZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZUIgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSB0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllci51bmlmeSh0ZXJtTm9kZUEsIGNvbnN0cnVjdG9yVGVybU5vZGVCLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgbGV0IHZlcmlmaWVkQWhlYWQ7XG5cbiAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZUFuZFR5cGUodGVybU5vZGUsIHR5cGUpO1xuXG4gICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgdGVybXMucG9wKCk7XG5cbiAgICB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvciA9IHZlcmlmaWVkQWhlYWQ7ICAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3Rvcikge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVVuaWZpZWRXaXRoQ29uc3RydWN0b3I7XG59XG5cbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ2ZXJpZnlUZXJtIiwidGVybU5vZGUiLCJ0ZXJtcyIsImxvY2FsQ29udGV4dCIsInZlcmlmeUFoZWFkIiwidGVybVZlcmlmaWVkIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VGVybUZ1bmN0aW9ucyIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyIsInVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInNvbWUiLCJ2ZXJpZnlUZXJtRnVuY3Rpb24iLCJkZWJ1ZyIsIk9iamVjdCIsImFzc2lnbiIsInNoaW0iLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0eXBlIiwiZ2V0VHlwZSIsInRlcm0iLCJUZXJtIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsInB1c2giLCJwb3AiLCJ0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9yIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwidGVybVVuaWZpZWRXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRUZXJtcyIsImJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkVGVybU5vZGUiLCJ0ZXJtVlZlcmlmaWVkIiwiY29uc3RydWN0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJjb25zdHJ1Y3RvclRlcm1Ob2RlQiIsInVuaWZpZWQiLCJ0ZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllciIsInVuaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0Q0E7OztlQUFBOzs7MkRBMUNpQjsyREFDQTtnRUFDZ0I7MEVBQ007cUJBRWI7Ozs7OztBQUUxQixJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsU0FBU0UsV0FBV0MsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUM1RCxJQUFJQztJQUVKLElBQU1DLGFBQWFILGFBQWFJLFlBQVksQ0FBQ047SUFFN0NFLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlMO0lBRTVELElBQU1RLHNCQUFzQjtRQUMxQkM7UUFDQUM7UUFDQUM7S0FDRDtJQUVEUCxlQUFlSSxvQkFBb0JJLElBQUksQ0FBQyxTQUFDQztRQUN2QyxJQUFNVCxlQUFlUyxtQkFBbUJiLFVBQVVDLE9BQU9DLGNBQWNDO1FBRXZFLElBQUlDLGNBQWM7WUFDaEIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSxjQUFjO1FBQ2hCRixhQUFhWSxLQUFLLENBQUMsQUFB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
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcbmltcG9ydCBUZXJtIGZyb20gXCIuLi90ZXJtXCI7XG5pbXBvcnQgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyBmcm9tIFwiLi4vdW5pZnkvdGVybVdpdGhDb25zdHJ1Y3RvcnNcIjtcbmltcG9ydCB1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgZnJvbSBcIi4uL3VuaWZ5L3Rlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuY29uc3QgdW5pZnlUZXJtRnVuY3Rpb25zID0gW1xuICAgICAgICB1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3IsXG4gICAgICAgIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnMsXG4gICAgICBdO1xuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmAsIHRlcm1Ob2RlKTtcblxuICBpZiAoIXRlcm1WZXJpZmllZCkge1xuICAgIGNvbnN0IHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZnlUZXJtQXNWYXJpYWJsZSh0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgdGVybVZlcmlmaWVkID0gdGVybVZlcmlmaWVkQXNWYXJpYWJsZTsgLy8vXG4gIH1cblxuICBpZiAoIXRlcm1WZXJpZmllZCkge1xuICAgIGNvbnN0IHRlcm1VbmlmaWVkID0gdW5pZnlUZXJtRnVuY3Rpb25zLnNvbWUoKHVuaWZ5VGVybUZ1bmN0aW9uKSA9PiB7XG4gICAgICBjb25zdCB0ZXJtVW5pZmllZCA9IHVuaWZ5VGVybUZ1bmN0aW9uKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRlcm1WZXJpZmllZCA9IHRlcm1VbmlmaWVkOyAvLy9cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgdmVyaWZ5VGVybVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHZlcmlmeVRlcm07XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZVZlcmlmaWVkID0gdmVyaWZ5VmFyaWFibGUodmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICAgIGxldCB2ZXJpZmllZEFoZWFkO1xuXG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlQW5kVHlwZSh0ZXJtTm9kZSwgdHlwZSk7XG5cbiAgICAgIHRlcm1zLnB1c2godGVybSk7XG5cbiAgICAgIHZlcmlmaWVkQWhlYWQgPSB2ZXJpZnlBaGVhZCgpO1xuXG4gICAgICB0ZXJtcy5wb3AoKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICAgIH1cblxuICAgIGlmICh0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIHZhcmlhYmxlLmAsIHRlcm1Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQXNWYXJpYWJsZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGUodmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodmFyaWFibGVOb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmAsIHZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgdmFyaWFibGVQcmVzZW50ID0gbG9jYWxDb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICBpZiAoIXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgaXMgbm90IHByZXNlbnQuYCwgdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICh2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gLCB2YXJpYWJsZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmFyaWFibGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bmlmeVRlcm1GdW5jdGlvbnMiLCJ1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzIiwidmVyaWZ5VGVybSIsInRlcm1Ob2RlIiwidGVybXMiLCJsb2NhbENvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInRlcm1WZXJpZmllZCIsInRlcm1TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJ2ZXJpZnlUZXJtQXNWYXJpYWJsZSIsInRlcm1VbmlmaWVkIiwic29tZSIsInVuaWZ5VGVybUZ1bmN0aW9uIiwiZGVidWciLCJPYmplY3QiLCJhc3NpZ24iLCJzaGltIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVWZXJpZmllZCIsInZlcmlmeVZhcmlhYmxlIiwidmVyaWZpZWRBaGVhZCIsInR5cGUiLCJ2YXJpYWJsZSIsImdldFR5cGUiLCJ0ZXJtIiwiVGVybSIsImZyb21UZXJtTm9kZUFuZFR5cGUiLCJwdXNoIiwicG9wIiwidmFyaWFibGVTdHJpbmciLCJ2YXJpYWJsZVBy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
|
|
@@ -25,7 +25,7 @@ function verifyTermAsConstructor(termNode, typeNode, fileContext) {
|
|
|
25
25
|
if (typeVerified) {
|
|
26
26
|
var firstType = (0, _array.first)(types);
|
|
27
27
|
type = firstType; ///
|
|
28
|
-
termVerifiedAsConstructor = _termAsConstructor.default.
|
|
28
|
+
termVerifiedAsConstructor = _termAsConstructor.default.verifyTerm(termNode, fileContext);
|
|
29
29
|
}
|
|
30
30
|
if (termVerifiedAsConstructor) {
|
|
31
31
|
var tokens = fileContext.getTokens(), constructor = _constructor.default.fromTermNodeTypeAndTokens(termNode, type, tokens);
|
|
@@ -55,4 +55,4 @@ function verifyType(typeNode, types, fileContext) {
|
|
|
55
55
|
return typeVerified;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBDb25zdHJ1Y3RvciBmcm9tIFwiLi4vY29uc3RydWN0b3JcIjtcbmltcG9ydCB0ZXJtQXNDb25zdHJ1Y3RvclZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci90ZXJtQXNDb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzQ29uc3RydWN0b3IodGVybU5vZGUsIHR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gIGZpbGVDb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgY29uc3RydWN0b3IuLi5gLCB0ZXJtTm9kZSk7XG5cbiAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgdHlwZVZlcmlmaWVkID0gdmVyaWZ5VHlwZSh0eXBlTm9kZSwgdHlwZXMsIGZpbGVDb250ZXh0KTtcblxuICBsZXQgdHlwZTtcblxuICBpZiAodHlwZVZlcmlmaWVkKSB7XG4gICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpO1xuXG4gICAgdHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yID0gdGVybUFzQ29uc3RydWN0b3JWZXJpZmllci52ZXJpZnlUZXJtKHRlcm1Ob2RlLCBmaWxlQ29udGV4dCk7XG4gIH1cblxuICBpZiAodGVybVZlcmlmaWVkQXNDb25zdHJ1Y3Rvcikge1xuICAgIGNvbnN0IHRva2VucyA9IGZpbGVDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbVRlcm1Ob2RlVHlwZUFuZFRva2Vucyh0ZXJtTm9kZSwgdHlwZSwgdG9rZW5zKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIGNvbnN0cnVjdG9yLmAsIHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUeXBlKHR5cGVOb2RlLCB0eXBlcywgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHR5cGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHR5cGUgPSBudWxsO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcblxuICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgdHlwZXMucHVzaCh0eXBlKTtcblxuICAgICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCwgdHlwZU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VGVybUFzQ29uc3RydWN0b3IiLCJ0ZXJtTm9kZSIsInR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yIiwidGVybVN0cmluZyIsIm5vZGVBc1N0cmluZyIsImRlYnVnIiwidHlwZXMiLCJ0eXBlVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlIiwidHlwZSIsImZpcnN0VHlwZSIsImZpcnN0IiwidGVybUFzQ29uc3RydWN0b3JWZXJpZmllciIsInZlcmlmeVRlcm0iLCJ0b2tlbnMiLCJnZXRUb2tlbnMiLCJjb25zdHJ1Y3RvciIsIkNvbnN0cnVjdG9yIiwiZnJvbVRlcm1Ob2RlVHlwZUFuZFRva2VucyIsImFkZENvbnN0cnVjdG9yIiwicHVzaCIsImZpbmRUeXBlQnlUeXBlTm9kZSIsInR5cGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBd0JBOzs7a0VBTEE7d0VBQ2M7cUJBRWhCOzs7Ozs7QUFFUCxTQUFTQSx3QkFBd0JDLFFBQVEsRUFBRUMsUUFBUSxFQUFFQyxXQUFXO0lBQzdFLElBQUlDLDRCQUE0QjtJQUVoQyxJQUFNQyxhQUFhRixZQUFZRyxZQUFZLENBQUNMO0lBRTVDRSxZQUFZSSxLQUFLLENBQUMsQUFBQyxrQkFBNEIsT0FBWEYsWUFBVywrQkFBNkJKO0lBRTVFLElBQU1PLFFBQVEsRUFBRSxFQUNWQyxlQUFlQyxXQUFXUixVQUFVTSxPQUFPTDtJQUVqRCxJQUFJUTtJQUVKLElBQUlGLGNBQWM7UUFDaEIsSUFBTUcsWUFBWUMsSUFBQUEsWUFBSyxFQUFDTDtRQUV4QkcsT0FBT0MsV0FBVyxHQUFHO1FBRXJCUiw0QkFBNEJVLDBCQUF5QixDQUFDQyxVQUFVLENBQUNkLFVBQVVFO0lBQzdFO0lBRUEsSUFBSUMsMkJBQTJCO1FBQzdCLElBQU1ZLFNBQVNiLFlBQVljLFNBQVMsSUFDOUJDLGNBQWNDLG9CQUFXLENBQUNDLHlCQUF5QixDQUFDbkIsVUFBVVUsTUFBTUs7UUFFMUViLFlBQVlrQixjQUFjLENBQUNIO0lBQzdCO0lBRUEsSUFBSWQsMkJBQTJCO1FBQzdCRCxZQUFZSSxLQUFLLENBQUMsQUFBQyxvQkFBOEIsT0FBWEYsWUFBVyw2QkFBMkJKO0lBQzlFO0lBRUEsT0FBT0c7QUFDVDtBQUVBLFNBQVNNLFdBQVdSLFFBQVEsRUFBRU0sS0FBSyxFQUFFTCxXQUFXO0lBQzlDLElBQUlNLGVBQWU7SUFFbkIsSUFBSVAsYUFBYSxNQUFNO1FBQ3JCLElBQU1TLE9BQU87UUFFYkgsTUFBTWMsSUFBSSxDQUFDWDtRQUVYRixlQUFlO0lBQ2pCLE9BQU87UUFDTCxJQUFNRSxRQUFPUixZQUFZb0Isa0JBQWtCLENBQUNyQjtRQUU1QyxJQUFJUyxVQUFTLE1BQU07WUFDakJILE1BQU1jLElBQUksQ0FBQ1g7WUFFWEYsZUFBZTtRQUNqQixPQUFPO1lBQ0wsSUFBTWUsYUFBYXJCLFlBQVlHLFlBQVksQ0FBQ0o7WUFFNUNDLFlBQVlJLEtBQUssQ0FBQyxBQUFDLFFBQWtCLE9BQVhpQixZQUFXLDJCQUF5QnRCO1FBQ2hFO0lBQ0Y7SUFFQSxPQUFPTztBQUNUIn0=
|
|
@@ -0,0 +1,34 @@
|
|
|
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 verifyTermGivenType;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
|
|
12
|
+
var _array = require("../utilities/array");
|
|
13
|
+
function _interop_require_default(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function verifyTermGivenType(termNode, type, localContext) {
|
|
19
|
+
var termVerifiedGivenType = false;
|
|
20
|
+
if (type !== null) {
|
|
21
|
+
var verifyTerm = _shim.default.verifyTerm, terms = [], termVerified = verifyTerm(termNode, terms, localContext, function() {
|
|
22
|
+
var verifiedAhead = false;
|
|
23
|
+
var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = term.getType(), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
24
|
+
if (termTypeEqualToOrSubTypeOfType) {
|
|
25
|
+
verifiedAhead = true;
|
|
26
|
+
}
|
|
27
|
+
return verifiedAhead;
|
|
28
|
+
});
|
|
29
|
+
termVerifiedGivenType = termVerified; ///
|
|
30
|
+
}
|
|
31
|
+
return termVerifiedGivenType;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUdpdmVuVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVRlcm1HaXZlblR5cGUodGVybU5vZGUsIHR5cGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkR2l2ZW5UeXBlID0gZmFsc2U7XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IHZlcmlmeVRlcm0gfSA9IHNoaW0sXG4gICAgICAgICAgdGVybXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdFRlcm0gPSBmaXJzdCh0ZXJtcyksXG4gICAgICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtLCAvLy9cbiAgICAgICAgICAgICAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICB0ZXJtVmVyaWZpZWRHaXZlblR5cGUgPSB0ZXJtVmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEdpdmVuVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtR2l2ZW5UeXBlIiwidGVybU5vZGUiLCJ0eXBlIiwibG9jYWxDb250ZXh0IiwidGVybVZlcmlmaWVkR2l2ZW5UeXBlIiwidmVyaWZ5VGVybSIsInNoaW0iLCJ0ZXJtcyIsInRlcm1WZXJpZmllZCIsInZlcmlmaWVkQWhlYWQiLCJmaXJzdFRlcm0iLCJmaXJzdCIsInRlcm0iLCJ0ZXJtVHlwZSIsImdldFR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUF3QkE7OzsyREFKUDtxQkFFSzs7Ozs7O0FBRVAsU0FBU0Esb0JBQW9CQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsWUFBWTtJQUN0RSxJQUFJQyx3QkFBd0I7SUFFNUIsSUFBSUYsU0FBUyxNQUFNO1FBQ2pCLElBQU0sQUFBRUcsYUFBZUMsYUFBSSxDQUFuQkQsWUFDRkUsUUFBUSxFQUFFLEVBQ1ZDLGVBQWVILFdBQVdKLFVBQVVNLE9BQU9KLGNBQWM7WUFDdkQsSUFBSU0sZ0JBQWdCO1lBRXBCLElBQU1DLFlBQVlDLElBQUFBLFlBQUssRUFBQ0osUUFDbEJLLE9BQU9GLFdBQ1BHLFdBQVdELEtBQUtFLE9BQU8sSUFDdkJDLGlDQUFpQ0YsU0FBU0csb0JBQW9CLENBQUNkO1lBRXJFLElBQUlhLGdDQUFnQztnQkFDbENOLGdCQUFnQjtZQUNsQjtZQUVBLE9BQU9BO1FBQ1Q7UUFFTkwsd0JBQXdCSSxjQUFjLEdBQUc7SUFDM0M7SUFFQSxPQUFPSjtBQUNUIn0=
|
package/package.json
CHANGED
package/src/context/local.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import Variable from "../variable";
|
|
4
3
|
import Equivalence from "../equivalence";
|
|
5
4
|
|
|
6
5
|
import { last, reverse } from "../utilities/array";
|
|
@@ -235,26 +234,18 @@ class LocalContext {
|
|
|
235
234
|
|
|
236
235
|
proofSteps = reverse(proofSteps); ///
|
|
237
236
|
|
|
238
|
-
const localContextA = this, ///
|
|
239
|
-
localContextB = localContext, ///
|
|
240
|
-
statementNodeAB = statementNode, ///
|
|
241
|
-
statementStringB = localContextA.nodeAsString(statementNodeAB);
|
|
242
|
-
|
|
243
|
-
localContextB.trace(`Unifying the '${statementStringB}' statement...`, statementNodeAB);
|
|
244
|
-
|
|
245
237
|
const equivalences = this.getEquivalences(),
|
|
238
|
+
localContextA = this, ///
|
|
239
|
+
localContextB = localContext, ///
|
|
240
|
+
statementNodeB = statementNode, ///
|
|
246
241
|
statementUnified = proofSteps.some((proofStep) => {
|
|
247
|
-
const statementUnified = proofStep.unifyStatement(
|
|
242
|
+
const statementUnified = proofStep.unifyStatement(statementNodeB, equivalences, localContextA, localContextB);
|
|
248
243
|
|
|
249
244
|
if (statementUnified) {
|
|
250
245
|
return true;
|
|
251
246
|
}
|
|
252
247
|
});
|
|
253
248
|
|
|
254
|
-
if (statementUnified) {
|
|
255
|
-
localContextB.debug(`...unified the '${statementStringB}' statement.`, statementNodeAB);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
249
|
return statementUnified;
|
|
259
250
|
}
|
|
260
251
|
|
package/src/proofStep.js
CHANGED
|
@@ -17,22 +17,27 @@ export default class ProofStep {
|
|
|
17
17
|
return this.statementNode;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
unifyStatement(
|
|
20
|
+
unifyStatement(statementNodeB, equivalences, localContextA, localContextB) {
|
|
21
21
|
let statementUnified = false;
|
|
22
22
|
|
|
23
23
|
if (this.statementNode !== null) {
|
|
24
24
|
let statementUnifiedWithStatement = false;
|
|
25
25
|
|
|
26
26
|
if (!statementUnifiedWithStatement) {
|
|
27
|
-
const statementNodeA = statementNode
|
|
28
|
-
statementNodeB = this.statementNode; ///
|
|
27
|
+
const statementNodeA = this.statementNode; ///
|
|
29
28
|
|
|
30
29
|
statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
if (!statementUnifiedWithStatement) {
|
|
34
|
-
const statementNodeA =
|
|
35
|
-
|
|
33
|
+
const statementNodeA = statementNodeB, ///
|
|
34
|
+
localContext = localContextA; ///
|
|
35
|
+
|
|
36
|
+
statementNodeB = this.statementNode; ///
|
|
37
|
+
|
|
38
|
+
localContextA = localContextB; ///
|
|
39
|
+
|
|
40
|
+
localContextB = localContext; ///
|
|
36
41
|
|
|
37
42
|
statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
|
|
38
43
|
}
|
|
@@ -29,14 +29,21 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
29
29
|
return node;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
transformed(substitutions) {
|
|
33
|
+
let transformedSubstitution = null;
|
|
34
|
+
|
|
35
|
+
const transformedTermNode = transformTermNode(this.termNode, substitutions),
|
|
36
|
+
transformedVariableNode = transformVariableNode(this.variableNode, substitutions);
|
|
37
|
+
|
|
38
|
+
if ((transformedTermNode !== null) && (transformedVariableNode !== null)) {
|
|
39
|
+
const termNode = transformedTermNode, ///
|
|
40
|
+
variableNode = transformedVariableNode,
|
|
41
|
+
termForVariableSubstitution = new TermForVariableSubstitution(termNode, variableNode);
|
|
42
|
+
|
|
43
|
+
transformedSubstitution = termForVariableSubstitution; ///
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return transformedSubstitution;
|
|
40
47
|
}
|
|
41
48
|
|
|
42
49
|
matchTermNode(termNode) {
|
|
@@ -95,22 +102,12 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
95
102
|
let termNode = substitution.getTermNode(),
|
|
96
103
|
variableNode = substitution.getVariableNode();
|
|
97
104
|
|
|
98
|
-
|
|
105
|
+
const transformedTermNode = transformTermNode(termNode, substitutions),
|
|
106
|
+
transformedVariableNode = transformVariableNode(variableNode, substitutions); ///
|
|
99
107
|
|
|
100
|
-
|
|
108
|
+
termNode = transformedTermNode; ///
|
|
101
109
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return termForVariableSubstitution;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
static fromSubstitutionNodeAndSubstitutions(substitutionNode, substitutions) {
|
|
108
|
-
let termNode = termNodeQuery(substitutionNode),
|
|
109
|
-
variableNode = variableNodeQuery(substitutionNode);
|
|
110
|
-
|
|
111
|
-
termNode = substituteTermNode(termNode, substitutions); ///
|
|
112
|
-
|
|
113
|
-
variableNode = substituteVariableNode(variableNode, substitutions); ///
|
|
110
|
+
variableNode = transformedVariableNode; ///
|
|
114
111
|
|
|
115
112
|
const termForVariableSubstitution = new TermForVariableSubstitution(variableNode, termNode);
|
|
116
113
|
|
|
@@ -118,7 +115,9 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
117
|
|
|
121
|
-
function
|
|
118
|
+
function transformTermNode(termNode, substitutions) {
|
|
119
|
+
let transformedTermNode = null;
|
|
120
|
+
|
|
122
121
|
const termVariableNode = variableNodeQuery(termNode);
|
|
123
122
|
|
|
124
123
|
if (termVariableNode !== null) {
|
|
@@ -126,31 +125,35 @@ function substituteTermNode(termNode, substitutions) {
|
|
|
126
125
|
const substitutionMatchesVariableNode = substitution.matchVariableNode(termVariableNode);
|
|
127
126
|
|
|
128
127
|
if (substitutionMatchesVariableNode) {
|
|
129
|
-
termNode = substitution.getTermNode();
|
|
128
|
+
const termNode = substitution.getTermNode();
|
|
129
|
+
|
|
130
|
+
transformedTermNode = termNode; ////
|
|
130
131
|
|
|
131
132
|
return true;
|
|
132
133
|
}
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
|
|
136
|
-
return
|
|
137
|
+
return transformedTermNode;
|
|
137
138
|
}
|
|
138
139
|
|
|
139
|
-
function
|
|
140
|
+
function transformVariableNode(variableNode, substitutions) {
|
|
141
|
+
let transformedVariableNode = null;
|
|
142
|
+
|
|
140
143
|
substitutions.someSubstitution((substitution) => {
|
|
141
144
|
const substitutionMatchesVariableNode = substitution.matchVariableNode(variableNode);
|
|
142
145
|
|
|
143
146
|
if (substitutionMatchesVariableNode) {
|
|
144
147
|
const termNode = substitution.getTermNode(),
|
|
145
|
-
|
|
148
|
+
variableNode = variableNodeQuery(termNode);
|
|
146
149
|
|
|
147
|
-
if (
|
|
148
|
-
|
|
150
|
+
if (variableNode !== null) {
|
|
151
|
+
transformedVariableNode = variableNode; ///
|
|
149
152
|
|
|
150
153
|
return true;
|
|
151
154
|
}
|
|
152
155
|
}
|
|
153
156
|
});
|
|
154
157
|
|
|
155
|
-
return
|
|
158
|
+
return transformedVariableNode;
|
|
156
159
|
}
|
|
@@ -12,12 +12,12 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
12
12
|
statementNodeQuery = nodeQuery("/statement!");
|
|
13
13
|
|
|
14
14
|
class StatementWithCombinatorUnifier extends Unifier {
|
|
15
|
-
unify(statementNode, combinatorStatementNode, localContext) {
|
|
15
|
+
unify(statementNode, combinatorStatementNode, assignments, derived, localContext) {
|
|
16
16
|
let statementUnifiedWithCombinator;
|
|
17
17
|
|
|
18
18
|
const nonTerminalNodeA = statementNode, ///
|
|
19
19
|
nonTerminalNodeB = combinatorStatementNode, ///
|
|
20
|
-
nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
|
|
20
|
+
nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, assignments, derived, localContext);
|
|
21
21
|
|
|
22
22
|
statementUnifiedWithCombinator = nonTerminalNodeUnified; ///
|
|
23
23
|
|
|
@@ -28,10 +28,10 @@ class StatementWithCombinatorUnifier extends Unifier {
|
|
|
28
28
|
{
|
|
29
29
|
nodeQueryA: statementNodeQuery,
|
|
30
30
|
nodeQueryB: metaTypeNodeQuery,
|
|
31
|
-
unify: (statementNodeA, metaTypeNodeB, localContext) => {
|
|
31
|
+
unify: (statementNodeA, metaTypeNodeB, assignments, derived, localContext) => {
|
|
32
32
|
const metaTypeNode = metaTypeNodeB, ///
|
|
33
33
|
statementNode = statementNodeA, ///
|
|
34
|
-
statementUnifiedWithMetaType = unifyStatementWithMetaType(statementNode, metaTypeNode, localContext);
|
|
34
|
+
statementUnifiedWithMetaType = unifyStatementWithMetaType(statementNode, metaTypeNode, assignments, derived, localContext);
|
|
35
35
|
|
|
36
36
|
return statementUnifiedWithMetaType;
|
|
37
37
|
}
|
|
@@ -39,7 +39,7 @@ class StatementWithCombinatorUnifier extends Unifier {
|
|
|
39
39
|
{
|
|
40
40
|
nodeQueryA: termNodeQuery,
|
|
41
41
|
nodeQueryB: typeNodeQuery,
|
|
42
|
-
unify: (termNodeA, typeNodeB, localContext) => {
|
|
42
|
+
unify: (termNodeA, typeNodeB, assignments, derived, localContext) => {
|
|
43
43
|
const termNode = termNodeA, ///
|
|
44
44
|
typeNode = typeNodeB, ///
|
|
45
45
|
termUnifiedWithType = unifyTermWithType(termNode, typeNode, localContext);
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Substitutions from "../substitutions";
|
|
3
4
|
import metaLevelUnifier from "../unifier/metaLevel";
|
|
4
5
|
import TermForVariableSubstitution from "../substitution/termForVariable";
|
|
5
6
|
|
|
6
7
|
import { push } from "../utilities/array";
|
|
7
8
|
|
|
8
9
|
export default function unifyStatementWithStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB) {
|
|
9
|
-
let
|
|
10
|
+
let statementUnifiedWithStatement = false;
|
|
10
11
|
|
|
11
|
-
const
|
|
12
|
-
|
|
12
|
+
const transformedSubstitutions = Substitutions.fromNothing(),
|
|
13
|
+
transformedSubstitution = substitution.transformed(substitutions);
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (transformed) {
|
|
17
|
-
const substitutionA = termForVariableSubstitution; ///
|
|
18
|
-
|
|
19
|
-
substitutionsA.push(substitutionA);
|
|
15
|
+
if (transformedSubstitution !== null) {
|
|
16
|
+
transformedSubstitutions.addSubstitution(transformedSubstitution, localContextA, localContextB);
|
|
20
17
|
}
|
|
21
18
|
|
|
22
19
|
const nodeA = statementNodeA, ///
|
|
23
20
|
nodeB = statementNodeB, ///
|
|
24
|
-
unified = metaLevelUnifier.unify(nodeA, nodeB,
|
|
21
|
+
unified = metaLevelUnifier.unify(nodeA, nodeB, transformedSubstitutions, localContextA, localContextB);
|
|
25
22
|
|
|
26
23
|
if (unified) {
|
|
27
|
-
if (
|
|
24
|
+
if (transformedSubstitution === null) {
|
|
25
|
+
|
|
26
|
+
debugger
|
|
27
|
+
|
|
28
28
|
const substitutionB = termForVariableSubstitution, ///
|
|
29
29
|
substitutionsB = [
|
|
30
30
|
substitutionB
|
|
@@ -35,10 +35,10 @@ export default function unifyStatementWithStatement(statementNodeA, statementNod
|
|
|
35
35
|
push(substitutions, substitutionsA);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
statementUnifiedWithStatement = true;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
return
|
|
41
|
+
return statementUnifiedWithStatement;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
function transformSubstitutions(substitutionsA, substitutionsB) {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import bracketedCombinator from "../ocmbinator/bracketed";
|
|
4
|
+
import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
|
|
5
|
+
|
|
6
|
+
export default function unifyStatementWithBracketedCombinator(statementNode, assignments, derived, localContext) {
|
|
7
|
+
let statementUnifiedWithBracketedCombinator;
|
|
8
|
+
|
|
9
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
10
|
+
|
|
11
|
+
localContext.trace(`Unifying the '${statementString}' statement with the bracketed combinator...`, statementNode);
|
|
12
|
+
|
|
13
|
+
const bracketedCombinatorStatementNode = bracketedCombinator.getStatementNode();
|
|
14
|
+
|
|
15
|
+
statementUnifiedWithBracketedCombinator = statementWithCombinatorUnifier.unify(statementNode, bracketedCombinatorStatementNode, assignments, derived, localContext);
|
|
16
|
+
|
|
17
|
+
if (statementUnifiedWithBracketedCombinator) {
|
|
18
|
+
localContext.debug(`...unified the '${statementString}' statement with the bracketed combinator.`, statementNode);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return statementUnifiedWithBracketedCombinator;
|
|
22
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
|
|
4
|
+
|
|
5
|
+
export default function unifyStatementWithCombinators(statementNode, assignments, derived, localContext) {
|
|
6
|
+
let statementUnifiedWithCombinators;
|
|
7
|
+
|
|
8
|
+
const combinators = localContext.getCombinators();
|
|
9
|
+
|
|
10
|
+
statementUnifiedWithCombinators = combinators.some((combinator) => {
|
|
11
|
+
const statementUnifiedWithCombinator = unifyStatementWithCombinator(statementNode, combinator, assignments, derived, localContext);
|
|
12
|
+
|
|
13
|
+
if (statementUnifiedWithCombinator) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
return statementUnifiedWithCombinators;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function unifyStatementWithCombinator(statementNode, combinator, assignments, derived, localContext) {
|
|
22
|
+
let statementUnifiedWithCombinator;
|
|
23
|
+
|
|
24
|
+
const statementString = localContext.nodeAsString(statementNode),
|
|
25
|
+
combinatorString = combinator.getString();
|
|
26
|
+
|
|
27
|
+
localContext.trace(`Unifying the '${statementString}' statement with the '${combinatorString}' combinator...`, statementNode);
|
|
28
|
+
|
|
29
|
+
const combinatorStatementNode = combinator.getStatementNode();
|
|
30
|
+
|
|
31
|
+
statementUnifiedWithCombinator = statementWithCombinatorUnifier.unify(statementNode, combinatorStatementNode, assignments, derived, localContext);
|
|
32
|
+
|
|
33
|
+
if (statementUnifiedWithCombinator) {
|
|
34
|
+
localContext.debug(`...unified the '${statementString}' statement with the '${combinatorString}' combinator.`, statementNode);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return statementUnifiedWithCombinator;
|
|
38
|
+
}
|
|
@@ -1,50 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import verifyStatementGivenMetaType from "../verify/statementGivenMetaType";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
export default function unifyStatementWithMetaType(statementNode, metaTypeNode, assignments, derived, localContext) {
|
|
6
|
+
let statementUnifiedWithMetaType;
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const metaType = localContext.findMetaTypeByMetaTypeNode(metaTypeNode),
|
|
9
|
+
statementVerifiedGivenMetaType = verifyStatementGivenMetaType(statementNode, metaType, assignments, derived, localContext);
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
let statementUnifiedWithMetaType = false;
|
|
13
|
-
|
|
14
|
-
const metaTypeTerminalNode = metaTypeTerminalNodeQuery(metaTypeNode),
|
|
15
|
-
metaTypeTerminalNodeContent = metaTypeTerminalNode.getContent(),
|
|
16
|
-
metaTypeName = metaTypeTerminalNodeContent; ///
|
|
17
|
-
|
|
18
|
-
switch (metaTypeName) {
|
|
19
|
-
case FRAME_META_TYPE_NAME: {
|
|
20
|
-
const metavariableNode = metavariableNodeQuery(statementNode);
|
|
21
|
-
|
|
22
|
-
if (metavariableNode !== null) {
|
|
23
|
-
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
|
|
24
|
-
|
|
25
|
-
if (metavariable !== null) {
|
|
26
|
-
const metavariableMetaTypeName = metavariable.getMetaTypeName();
|
|
27
|
-
|
|
28
|
-
if (metavariableMetaTypeName === metaTypeName) {
|
|
29
|
-
statementUnifiedWithMetaType = true;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
case STATEMENT_META_TYPE_NAME: {
|
|
38
|
-
const { verifyStatement } = shim,
|
|
39
|
-
derived = false,
|
|
40
|
-
assignments = [],
|
|
41
|
-
statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
|
|
42
|
-
|
|
43
|
-
statementUnifiedWithMetaType = statementVerified;
|
|
44
|
-
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
11
|
+
statementUnifiedWithMetaType = statementVerifiedGivenMetaType; ///
|
|
48
12
|
|
|
49
13
|
return statementUnifiedWithMetaType;
|
|
50
14
|
}
|