occam-verify-cli 0.0.1111 → 0.0.1114
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/combinator/bracketed.js +15 -65
- package/lib/combinator.js +4 -8
- package/lib/constructor/bracketed.js +24 -101
- package/lib/constructor.js +4 -8
- package/lib/context/file.js +41 -12
- package/lib/context/local.js +45 -25
- package/lib/context/release.js +2 -2
- package/lib/dom/assertion/contained.js +287 -0
- package/lib/dom/assertion/defined.js +266 -0
- package/lib/dom/assertion/subproof.js +210 -0
- package/lib/dom/assertion/type.js +240 -0
- package/lib/{axiom.js → dom/axiom.js} +18 -8
- package/lib/dom/conclusion.js +171 -0
- package/lib/{conjecture.js → dom/conjecture.js} +18 -8
- package/lib/dom/consequent.js +171 -0
- package/lib/dom/declaration/combinator.js +105 -0
- package/lib/dom/declaration/constructor.js +140 -0
- package/lib/dom/declaration/metavariable.js +154 -0
- package/lib/dom/declaration/type.js +140 -0
- package/lib/dom/declaration/variable.js +155 -0
- package/lib/{declaration.js → dom/declaration.js} +62 -18
- package/lib/dom/derivation.js +137 -0
- package/lib/dom/equality.js +260 -0
- package/lib/dom/error.js +85 -0
- package/lib/dom/frame.js +372 -0
- package/lib/dom/judgement.js +198 -0
- package/lib/dom/label.js +190 -0
- package/lib/{lemma.js → dom/lemma.js} +19 -9
- package/lib/{metaLemma.js → dom/metaLemma.js} +19 -9
- package/lib/dom/metaType.js +261 -0
- package/lib/dom/metatheorem.js +273 -0
- package/lib/dom/metavariable.js +463 -0
- package/lib/dom/premise.js +221 -0
- package/lib/dom/proof.js +154 -0
- package/lib/dom/proofStep.js +239 -0
- package/lib/dom/reference.js +218 -0
- package/lib/dom/rule.js +311 -0
- package/lib/dom/statement.js +379 -0
- package/lib/dom/subDerivation.js +137 -0
- package/lib/dom/subproof.js +211 -0
- package/lib/dom/supposition.js +221 -0
- package/lib/dom/term.js +354 -0
- package/lib/{theorem.js → dom/theorem.js} +18 -8
- package/lib/dom/topLevelAssertion.js +306 -0
- package/lib/dom/type.js +327 -0
- package/lib/dom/variable.js +328 -0
- package/lib/dom.js +27 -0
- package/lib/equivalences.js +307 -0
- package/lib/index.js +40 -35
- package/lib/mixins/proofStep/unify.js +86 -0
- package/lib/mixins/statement/verify.js +27 -2
- package/lib/mixins/term/verify.js +24 -4
- package/lib/substitution/frame.js +3 -3
- package/lib/substitution/statement.js +17 -16
- package/lib/substitution/term.js +10 -7
- package/lib/substitution.js +4 -31
- package/lib/substitutions.js +24 -56
- package/lib/unifier/equality.js +2 -3
- package/lib/unifier/label.js +3 -3
- package/lib/unifier/metaLevel.js +9 -8
- package/lib/unifier/metavariable.js +3 -3
- package/lib/unifier/statementWithCombinator.js +5 -5
- package/lib/unifier/termWithConstructor.js +3 -3
- package/lib/utilities/json.js +26 -40
- package/lib/utilities/string.js +6 -8
- package/lib/utilities/subproof.js +2 -2
- package/lib/utilities/substitutions.js +7 -6
- package/lib/utilities/verification.js +22 -14
- package/lib/verifier/combinator.js +4 -4
- package/lib/verifier/constructor.js +3 -3
- package/lib/verifier/topLevel.js +15 -21
- package/package.json +1 -1
- package/src/combinator/bracketed.js +11 -4
- package/src/combinator.js +3 -10
- package/src/constructor/bracketed.js +17 -5
- package/src/constructor.js +3 -9
- package/src/context/file.js +42 -11
- package/src/context/local.js +26 -34
- package/src/context/release.js +1 -1
- package/src/{assertion → dom/assertion}/contained.js +11 -8
- package/src/{assertion → dom/assertion}/defined.js +14 -11
- package/src/{assertion → dom/assertion}/subproof.js +11 -62
- package/src/{assertion → dom/assertion}/type.js +11 -8
- package/src/{axiom.js → dom/axiom.js} +6 -9
- package/src/dom/conclusion.js +95 -0
- package/src/{conjecture.js → dom/conjecture.js} +5 -8
- package/src/dom/consequent.js +95 -0
- package/src/{declaration → dom/declaration}/combinator.js +8 -5
- package/src/{declaration → dom/declaration}/constructor.js +8 -4
- package/src/{declaration → dom/declaration}/metavariable.js +8 -5
- package/src/{declaration → dom/declaration}/type.js +8 -4
- package/src/{declaration → dom/declaration}/variable.js +9 -6
- package/src/{declaration.js → dom/declaration.js} +11 -16
- package/src/{derivation.js → dom/derivation.js} +9 -12
- package/src/{equality.js → dom/equality.js} +11 -14
- package/src/{error.js → dom/error.js} +6 -3
- package/src/{frame.js → dom/frame.js} +14 -23
- package/src/{judgement.js → dom/judgement.js} +8 -11
- package/src/{label.js → dom/label.js} +9 -16
- package/src/{lemma.js → dom/lemma.js} +5 -9
- package/src/{metaLemma.js → dom/metaLemma.js} +6 -9
- package/src/{metaType.js → dom/metaType.js} +7 -10
- package/src/{metatheorem.js → dom/metatheorem.js} +6 -10
- package/src/{metavariable.js → dom/metavariable.js} +79 -77
- package/src/dom/premise.js +173 -0
- package/src/{proof.js → dom/proof.js} +8 -11
- package/src/dom/proofStep.js +173 -0
- package/src/{reference.js → dom/reference.js} +48 -20
- package/src/{rule.js → dom/rule.js} +13 -17
- package/src/{statement.js → dom/statement.js} +142 -71
- package/src/{subDerivation.js → dom/subDerivation.js} +9 -12
- package/src/{subproof.js → dom/subproof.js} +14 -47
- package/src/dom/supposition.js +173 -0
- package/src/{term.js → dom/term.js} +24 -45
- package/src/{theorem.js → dom/theorem.js} +5 -8
- package/src/{topLevelAssertion.js → dom/topLevelAssertion.js} +12 -14
- package/src/{type.js → dom/type.js} +9 -12
- package/src/{variable.js → dom/variable.js} +20 -28
- package/src/dom.js +13 -0
- package/src/equivalences.js +278 -0
- package/src/index.js +39 -34
- package/src/mixins/proofStep/unify.js +115 -0
- package/src/mixins/statement/verify.js +33 -1
- package/src/mixins/term/verify.js +33 -3
- package/src/substitution/frame.js +2 -2
- package/src/substitution/statement.js +20 -18
- package/src/substitution/term.js +12 -5
- package/src/substitution.js +4 -29
- package/src/substitutions.js +35 -73
- package/src/unifier/equality.js +1 -2
- package/src/unifier/label.js +2 -2
- package/src/unifier/metaLevel.js +9 -7
- package/src/unifier/metavariable.js +2 -2
- package/src/unifier/statementWithCombinator.js +4 -4
- package/src/unifier/termWithConstructor.js +2 -2
- package/src/utilities/json.js +23 -42
- package/src/utilities/string.js +8 -6
- package/src/utilities/subproof.js +2 -2
- package/src/utilities/substitutions.js +7 -5
- package/src/utilities/verification.js +29 -13
- package/src/verifier/combinator.js +3 -3
- package/src/verifier/constructor.js +3 -3
- package/src/verifier/topLevel.js +20 -21
- package/lib/assertion/contained.js +0 -232
- package/lib/assertion/defined.js +0 -211
- package/lib/assertion/subproof.js +0 -203
- package/lib/assertion/type.js +0 -185
- package/lib/conclusion.js +0 -130
- package/lib/consequent.js +0 -130
- package/lib/declaration/combinator.js +0 -90
- package/lib/declaration/constructor.js +0 -90
- package/lib/declaration/metavariable.js +0 -104
- package/lib/declaration/type.js +0 -90
- package/lib/declaration/variable.js +0 -105
- package/lib/derivation.js +0 -91
- package/lib/equality.js +0 -209
- package/lib/error.js +0 -70
- package/lib/frame.js +0 -331
- package/lib/judgement.js +0 -147
- package/lib/label.js +0 -141
- package/lib/metaType.js +0 -255
- package/lib/metatheorem.js +0 -263
- package/lib/metavariable.js +0 -399
- package/lib/mixins/statement/qualified/unify.js +0 -69
- package/lib/mixins/statement/unify.js +0 -42
- package/lib/mixins/statement/unifyIndependenntly.js +0 -46
- package/lib/mixins/term/unify.js +0 -40
- package/lib/premise.js +0 -184
- package/lib/proof.js +0 -103
- package/lib/proofStep.js +0 -179
- package/lib/reference.js +0 -145
- package/lib/rule.js +0 -259
- package/lib/shim.js +0 -14
- package/lib/statement/qualified.js +0 -152
- package/lib/statement/unqualified.js +0 -175
- package/lib/statement.js +0 -270
- package/lib/subDerivation.js +0 -91
- package/lib/subproof.js +0 -181
- package/lib/supposition.js +0 -184
- package/lib/term.js +0 -318
- package/lib/topLevelAssertion.js +0 -305
- package/lib/type.js +0 -321
- package/lib/utilities/equivalences.js +0 -178
- package/lib/variable.js +0 -281
- package/src/conclusion.js +0 -96
- package/src/consequent.js +0 -96
- package/src/mixins/statement/qualified/unify.js +0 -103
- package/src/mixins/statement/unify.js +0 -41
- package/src/mixins/statement/unifyIndependenntly.js +0 -58
- package/src/mixins/term/unify.js +0 -36
- package/src/premise.js +0 -183
- package/src/proofStep.js +0 -181
- package/src/shim.js +0 -5
- package/src/statement/qualified.js +0 -133
- package/src/statement/unqualified.js +0 -166
- package/src/supposition.js +0 -183
- package/src/utilities/equivalences.js +0 -183
package/lib/variable.js
DELETED
|
@@ -1,281 +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 _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _shim = /*#__PURE__*/ _interop_require_default(require("./shim"));
|
|
12
|
-
var _local = /*#__PURE__*/ _interop_require_default(require("./context/local"));
|
|
13
|
-
var _term = /*#__PURE__*/ _interop_require_default(require("./substitution/term"));
|
|
14
|
-
var _query = require("./utilities/query");
|
|
15
|
-
var _type = require("./type");
|
|
16
|
-
var _name = require("./utilities/name");
|
|
17
|
-
var _json = require("./utilities/json");
|
|
18
|
-
var _variable = require("./nodeAndTokens/variable");
|
|
19
|
-
function _class_call_check(instance, Constructor) {
|
|
20
|
-
if (!(instance instanceof Constructor)) {
|
|
21
|
-
throw new TypeError("Cannot call a class as a function");
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function _defineProperties(target, props) {
|
|
25
|
-
for(var i = 0; i < props.length; i++){
|
|
26
|
-
var descriptor = props[i];
|
|
27
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
28
|
-
descriptor.configurable = true;
|
|
29
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
30
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
34
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
35
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
36
|
-
return Constructor;
|
|
37
|
-
}
|
|
38
|
-
function _interop_require_default(obj) {
|
|
39
|
-
return obj && obj.__esModule ? obj : {
|
|
40
|
-
default: obj
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
var termVariableNodeQuery = (0, _query.nodeQuery)("/term/variable!"), variableDeclarationTypeNodeQuery = (0, _query.nodeQuery)("/variableDeclaration/type"), variableDeclarationVariableNodeQuery = (0, _query.nodeQuery)("/variableDeclaration/variable");
|
|
44
|
-
var Variable = /*#__PURE__*/ function() {
|
|
45
|
-
function Variable(string, node, name, type) {
|
|
46
|
-
_class_call_check(this, Variable);
|
|
47
|
-
this.string = string;
|
|
48
|
-
this.node = node;
|
|
49
|
-
this.name = name;
|
|
50
|
-
this.type = type;
|
|
51
|
-
}
|
|
52
|
-
_create_class(Variable, [
|
|
53
|
-
{
|
|
54
|
-
key: "getString",
|
|
55
|
-
value: function getString() {
|
|
56
|
-
return this.string;
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
key: "getNode",
|
|
61
|
-
value: function getNode() {
|
|
62
|
-
return this.node;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
key: "getName",
|
|
67
|
-
value: function getName() {
|
|
68
|
-
return this.name;
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
key: "getType",
|
|
73
|
-
value: function getType() {
|
|
74
|
-
return this.type;
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
key: "setType",
|
|
79
|
-
value: function setType(type) {
|
|
80
|
-
this.type = type;
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
key: "matchVariableName",
|
|
85
|
-
value: function matchVariableName(variableName) {
|
|
86
|
-
var nameMatches = variableName === this.name;
|
|
87
|
-
return nameMatches;
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
key: "isEqualTo",
|
|
92
|
-
value: function isEqualTo(variable) {
|
|
93
|
-
var equalTo = false;
|
|
94
|
-
if (variable !== null) {
|
|
95
|
-
var variableString = variable.getString();
|
|
96
|
-
equalTo = variableString === this.string;
|
|
97
|
-
}
|
|
98
|
-
return equalTo;
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
key: "isEssentiallyEqualToTerm",
|
|
103
|
-
value: function isEssentiallyEqualToTerm(term, generalContext, specificContext) {
|
|
104
|
-
var essentiallyEqualToTerm = false;
|
|
105
|
-
var generalContextFilePath = generalContext.getFilePath(), specificContextFilePath = specificContext.getFilePath();
|
|
106
|
-
if (generalContextFilePath === specificContextFilePath) {
|
|
107
|
-
var termString = term.getString();
|
|
108
|
-
if (termString === this.string) {
|
|
109
|
-
essentiallyEqualToTerm = true;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return essentiallyEqualToTerm;
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
key: "verify",
|
|
117
|
-
value: function verify(context) {
|
|
118
|
-
var verified;
|
|
119
|
-
var variableString = this.string; ///
|
|
120
|
-
context.trace("Verifying the '".concat(variableString, "' variable..."));
|
|
121
|
-
var variableName = this.name, variable = context.findVariableByVariableName(variableName);
|
|
122
|
-
if (variable !== null) {
|
|
123
|
-
var type = variable.getType();
|
|
124
|
-
this.type = type;
|
|
125
|
-
verified = true;
|
|
126
|
-
} else {
|
|
127
|
-
context.debug("The '".concat(variableString, "' variable is not present."));
|
|
128
|
-
}
|
|
129
|
-
if (verified) {
|
|
130
|
-
var typeName = this.type.getName();
|
|
131
|
-
context.debug("...verified the '".concat(variableString, ":").concat(typeName, "' variable."));
|
|
132
|
-
}
|
|
133
|
-
return verified;
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
key: "verifyType",
|
|
138
|
-
value: function verifyType(fileContext) {
|
|
139
|
-
var typeVerified;
|
|
140
|
-
if (this.type === _type.objectType) {
|
|
141
|
-
typeVerified = true;
|
|
142
|
-
} else {
|
|
143
|
-
var typeName = this.type.getName();
|
|
144
|
-
fileContext.trace("Verifying the '".concat(typeName, "' type..."));
|
|
145
|
-
var type = fileContext.findTypeByTypeName(typeName);
|
|
146
|
-
if (type === null) {
|
|
147
|
-
fileContext.debug("The '".concat(typeName, "' type is missing."));
|
|
148
|
-
} else {
|
|
149
|
-
this.type = type; ///
|
|
150
|
-
typeVerified = true;
|
|
151
|
-
}
|
|
152
|
-
if (typeVerified) {
|
|
153
|
-
fileContext.debug("...verified the '".concat(typeName, "' type."));
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
return typeVerified;
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
key: "verifyWhenDeclared",
|
|
161
|
-
value: function verifyWhenDeclared(fileContext) {
|
|
162
|
-
var verifiedWhenDeclared;
|
|
163
|
-
var variableString = this.string; ///
|
|
164
|
-
fileContext.trace("Verifying the '".concat(variableString, "' variable when declared..."));
|
|
165
|
-
var variableName = this.name, variablePresent = fileContext.isVariablePresentByVariableName(variableName);
|
|
166
|
-
if (variablePresent) {
|
|
167
|
-
fileContext.debug("The '".concat(variableName, "' variable is already present."));
|
|
168
|
-
} else {
|
|
169
|
-
var metavariableName = this.name, metavariablePresent = fileContext.isMetavariablePresentByMetavariableName(metavariableName);
|
|
170
|
-
if (metavariablePresent) {
|
|
171
|
-
fileContext.debug("A '".concat(metavariableName, "' variable is already present."));
|
|
172
|
-
} else {
|
|
173
|
-
var typeVerified = this.verifyType(fileContext);
|
|
174
|
-
verifiedWhenDeclared = typeVerified; ///
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (verifiedWhenDeclared) {
|
|
178
|
-
fileContext.debug("...verified the '".concat(variableString, "' variable when declared."));
|
|
179
|
-
}
|
|
180
|
-
return verifiedWhenDeclared;
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
key: "unifyTerm",
|
|
185
|
-
value: function unifyTerm(term, substitutions, generalContext, specificContext) {
|
|
186
|
-
var contextsReversed = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
|
|
187
|
-
var termUnified = false;
|
|
188
|
-
var termString = term.getString(), variableString = this.string; ///
|
|
189
|
-
specificContext.trace("Unifying the '".concat(termString, "' term with the '").concat(variableString, "' variable..."));
|
|
190
|
-
var essentiallyEqualToTerm = this.isEssentiallyEqualToTerm(term, generalContext, specificContext);
|
|
191
|
-
if (essentiallyEqualToTerm) {
|
|
192
|
-
termUnified = true;
|
|
193
|
-
} else {
|
|
194
|
-
var variable = this, substitutionPresent = substitutions.isSubstitutionPresentByVariable(variable);
|
|
195
|
-
if (substitutionPresent) {
|
|
196
|
-
var substitution = substitutions.findSubstitutionByVariable(variable), substitutionTermEqualToTerm = substitution.isTermEqualTo(term);
|
|
197
|
-
if (substitutionTermEqualToTerm) {
|
|
198
|
-
termUnified = true;
|
|
199
|
-
}
|
|
200
|
-
} else {
|
|
201
|
-
var context = contextsReversed ? generalContext : specificContext;
|
|
202
|
-
var variable1 = this, termSubstitution = _term.default.fromTernAndVariable(term, variable1, context), substitution1 = termSubstitution; ///
|
|
203
|
-
context = specificContext; ///
|
|
204
|
-
substitutions.addSubstitution(substitution1, context);
|
|
205
|
-
termUnified = true;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
if (termUnified) {
|
|
209
|
-
specificContext.debug("...unified the '".concat(termString, "' term with the '").concat(variableString, "' variable."));
|
|
210
|
-
}
|
|
211
|
-
return termUnified;
|
|
212
|
-
}
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
key: "toJSON",
|
|
216
|
-
value: function toJSON() {
|
|
217
|
-
var typeJSON = (0, _json.typeToTypeJSON)(this.type), string = this.string, type = typeJSON, json = {
|
|
218
|
-
type: type,
|
|
219
|
-
string: string
|
|
220
|
-
};
|
|
221
|
-
return json;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
], [
|
|
225
|
-
{
|
|
226
|
-
key: "fromJSON",
|
|
227
|
-
value: function fromJSON(json, fileContext) {
|
|
228
|
-
var string = json.string, localContext = _local.default.fromFileContext(fileContext), context = localContext, variableString = string, variableNode = (0, _variable.variableNodeFromVariableString)(variableString, context), variableName = (0, _name.variableNameFromVariableNode)(variableNode), node = variableNode, name = variableName, type = (0, _json.typeFromJSON)(json, fileContext), variable = new Variable(string, node, name, type);
|
|
229
|
-
return variable;
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
key: "fromTermNode",
|
|
234
|
-
value: function fromTermNode(termNode, context) {
|
|
235
|
-
var variable = null;
|
|
236
|
-
var termVariableNode = termVariableNodeQuery(termNode);
|
|
237
|
-
if (termVariableNode !== null) {
|
|
238
|
-
var variableNode = termVariableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), node = variableNode, string = context.nodeAsString(node), name = variableName, type = null;
|
|
239
|
-
variable = new Variable(string, node, name, type);
|
|
240
|
-
}
|
|
241
|
-
return variable;
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
key: "fromVariableNode",
|
|
246
|
-
value: function fromVariableNode(variableNode, context) {
|
|
247
|
-
var variable = null;
|
|
248
|
-
if (variableNode !== null) {
|
|
249
|
-
var node = variableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), string = context.nodeAsString(node), name = variableName, type = null;
|
|
250
|
-
variable = new Variable(string, node, name, type);
|
|
251
|
-
}
|
|
252
|
-
return variable;
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
key: "fromVariableNodeAndType",
|
|
257
|
-
value: function fromVariableNodeAndType(variableNode, type, context) {
|
|
258
|
-
var variable = null;
|
|
259
|
-
if (variableNode !== null) {
|
|
260
|
-
var node = variableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), string = context.nodeAsString(node), name = variableName; ///
|
|
261
|
-
variable = new Variable(string, node, name, type);
|
|
262
|
-
}
|
|
263
|
-
return variable;
|
|
264
|
-
}
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
key: "fromVariableDeclarationNode",
|
|
268
|
-
value: function fromVariableDeclarationNode(variableDeclarationNode, fileContext) {
|
|
269
|
-
var Type = _shim.default.Type, variableDeclarationTypeNode = variableDeclarationTypeNodeQuery(variableDeclarationNode), variableDeclarationVariableNode = variableDeclarationVariableNodeQuery(variableDeclarationNode), typeNode = variableDeclarationTypeNode, variableNode = variableDeclarationVariableNode, variableName = (0, _name.variableNameFromVariableNode)(variableNode), context = _local.default.fromFileContext(fileContext), variableString = fileContext.nodeAsString(variableNode), string = variableString, node = variableNode, name = variableName, type = Type.fromTypeNode(typeNode, context), variable = new Variable(string, node, name, type);
|
|
270
|
-
return variable;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
]);
|
|
274
|
-
return Variable;
|
|
275
|
-
}();
|
|
276
|
-
Object.assign(_shim.default, {
|
|
277
|
-
Variable: Variable
|
|
278
|
-
});
|
|
279
|
-
var _default = Variable;
|
|
280
|
-
|
|
281
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgVGVybVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vdGVybVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi90eXBlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlfSBmcm9tIFwiLi91dGlsaXRpZXMvbmFtZVwiO1xuaW1wb3J0IHsgdHlwZUZyb21KU09OLCB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuL3V0aWxpdGllcy9qc29uXCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmcgfSBmcm9tIFwiLi9ub2RlQW5kVG9rZW5zL3ZhcmlhYmxlXCI7XG5cbmNvbnN0IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKSxcbiAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25UeXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3ZhcmlhYmxlRGVjbGFyYXRpb24vdHlwZVwiKSxcbiAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YXJpYWJsZURlY2xhcmF0aW9uL3ZhcmlhYmxlXCIpO1xuXG5jbGFzcyBWYXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBtYXRjaFZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBuYW1lTWF0Y2hlcyA9ICh2YXJpYWJsZU5hbWUgPT09IHRoaXMubmFtZSk7XG5cbiAgICByZXR1cm4gbmFtZU1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8odmFyaWFibGUpIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgICBlcXVhbFRvID0gKHZhcmlhYmxlU3RyaW5nID09PSB0aGlzLnN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0Vzc2VudGlhbGx5RXF1YWxUb1Rlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBlc3NlbnRpYWxseUVxdWFsVG9UZXJtID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dEZpbGVQYXRoID0gZ2VuZXJhbENvbnRleHQuZ2V0RmlsZVBhdGgoKSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHRGaWxlUGF0aCA9IHNwZWNpZmljQ29udGV4dC5nZXRGaWxlUGF0aCgpO1xuXG4gICAgaWYgKGdlbmVyYWxDb250ZXh0RmlsZVBhdGggPT09IHNwZWNpZmljQ29udGV4dEZpbGVQYXRoKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgICAgaWYgKHRlcm1TdHJpbmcgPT09IHRoaXMuc3RyaW5nKSB7XG4gICAgICAgIGVzc2VudGlhbGx5RXF1YWxUb1Rlcm0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlc3NlbnRpYWxseUVxdWFsVG9UZXJtO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQ7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdGhpcy5uYW1lLFxuICAgICAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICB2ZXJpZmllZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9OiR7dHlwZU5hbWV9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlUeXBlKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHR5cGVWZXJpZmllZDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKTtcblxuICAgICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZU5hbWV9JyB0eXBlLi4uYCk7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVOYW1lfScgdHlwZSBpcyBtaXNzaW5nLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTsgLy8vXG5cbiAgICAgICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVWZXJpZmllZCkge1xuICAgICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVOYW1lfScgdHlwZS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5V2hlbkRlY2xhcmVkKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkV2hlbkRlY2xhcmVkO1xuXG4gICAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHRoaXMubmFtZSwgLy8vXG4gICAgICAgICAgdmFyaWFibGVQcmVzZW50ID0gZmlsZUNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZU5hbWV9JyB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm5hbWUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYEEgJyR7bWV0YXZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5VHlwZShmaWxlQ29udGV4dCk7XG5cbiAgICAgICAgdmVyaWZpZWRXaGVuRGVjbGFyZWQgPSB0eXBlVmVyaWZpZWQ7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRXaGVuRGVjbGFyZWQpIHtcbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSB3aGVuIGRlY2xhcmVkLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZFdoZW5EZWNsYXJlZDtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0c1JldmVyc2VkID0gZmFsc2UpIHtcbiAgICBsZXQgdGVybVVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgZXNzZW50aWFsbHlFcXVhbFRvVGVybSA9IHRoaXMuaXNFc3NlbnRpYWxseUVxdWFsVG9UZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGVzc2VudGlhbGx5RXF1YWxUb1Rlcm0pIHtcbiAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFyaWFibGUgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvblByZXNlbnQgPSBzdWJzdGl0dXRpb25zLmlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5VmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uUHJlc2VudCkge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlKHZhcmlhYmxlKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uVGVybUVxdWFsVG9UZXJtID0gc3Vic3RpdHV0aW9uLmlzVGVybUVxdWFsVG8odGVybSk7XG5cbiAgICAgICAgaWYgKHN1YnN0aXR1dGlvblRlcm1FcXVhbFRvVGVybSkge1xuICAgICAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbnRleHQgPSBjb250ZXh0c1JldmVyc2VkID9cbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tVGVybkFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gdGVybVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZWQpIHtcbiAgICAgIHNwZWNpZmljQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZWQ7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuc3RyaW5nLFxuICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgICAgY29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmcodmFyaWFibGVTdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLFxuICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBjb25zdCB0ZXJtVmFyaWFibGVOb2RlID0gdGVybVZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICAgIGlmICh0ZXJtVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0ZXJtVmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuXG4gICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuXG4gICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlQW5kVHlwZSh2YXJpYWJsZU5vZGUsIHR5cGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gICAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lOyAgLy8vXG5cbiAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IFR5cGUgfSA9IHNoaW0sXG4gICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvblR5cGVOb2RlID0gdmFyaWFibGVEZWNsYXJhdGlvblR5cGVOb2RlUXVlcnkodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGUgPSB2YXJpYWJsZURlY2xhcmF0aW9uVmFyaWFibGVOb2RlUXVlcnkodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOb2RlID0gdmFyaWFibGVEZWNsYXJhdGlvblR5cGVOb2RlLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZURlY2xhcmF0aW9uVmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgY29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgc3RyaW5nID0gdmFyaWFibGVTdHJpbmcsICAvLy9cbiAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21UeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUoc3RyaW5nLCBub2RlLCBuYW1lLCB0eXBlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgVmFyaWFibGVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBWYXJpYWJsZTtcbiJdLCJuYW1lcyI6WyJ0ZXJtVmFyaWFibGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZURlY2xhcmF0aW9uVHlwZU5vZGVRdWVyeSIsInZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGVRdWVyeSIsIlZhcmlhYmxlIiwic3RyaW5nIiwibm9kZSIsIm5hbWUiLCJ0eXBlIiwiZ2V0U3RyaW5nIiwiZ2V0Tm9kZSIsImdldE5hbWUiLCJnZXRUeXBlIiwic2V0VHlwZSIsIm1hdGNoVmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lIiwibmFtZU1hdGNoZXMiLCJpc0VxdWFsVG8iLCJ2YXJpYWJsZSIsImVxdWFsVG8iLCJ2YXJpYWJsZVN0cmluZyIsImlzRXNzZW50aWFsbHlFcXVhbFRvVGVybSIsInRlcm0iLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImVzc2VudGlhbGx5RXF1YWxUb1Rlcm0iLCJnZW5lcmFsQ29udGV4dEZpbGVQYXRoIiwiZ2V0RmlsZVBhdGgiLCJzcGVjaWZpY0NvbnRleHRGaWxlUGF0aCIsInRlcm1TdHJpbmciLCJ2ZXJpZnkiLCJjb250ZXh0IiwidmVyaWZpZWQiLCJ0cmFjZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwiZGVidWciLCJ0eXBlTmFtZSIsInZlcmlmeVR5cGUiLCJmaWxlQ29udGV4dCIsInR5cGVWZXJpZmllZCIsIm9iamVjdFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ2ZXJpZnlXaGVuRGVjbGFyZWQiLCJ2ZXJpZmllZFdoZW5EZWNsYXJlZCIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZSIsInVuaWZ5VGVybSIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0c1JldmVyc2VkIiwidGVybVVuaWZpZWQiLCJzdWJzdGl0dXRpb25QcmVzZW50IiwiaXNTdWJzdGl0dXRpb25QcmVzZW50QnlWYXJpYWJsZSIsInN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlIiwic3Vic3RpdHV0aW9uVGVybUVxdWFsVG9UZXJtIiwiaXNUZXJtRXF1YWxUbyIsInRlcm1TdWJzdGl0dXRpb24iLCJUZXJtU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm5BbmRWYXJpYWJsZSIsImFkZFN1YnN0aXR1dGlvbiIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJsb2NhbENvbnRleHQiLCJMb2NhbENvbnRleHQiLCJmcm9tRmlsZUNvbnRleHQiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmciLCJ2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIiwidHlwZUZyb21KU09OIiwiZnJvbVRlcm1Ob2RlIiwidGVybU5vZGUiLCJ0ZXJtVmFyaWFibGVOb2RlIiwibm9kZUFzU3RyaW5nIiwiZnJvbVZhcmlhYmxlTm9kZSIsImZyb21WYXJpYWJsZU5vZGVBbmRUeXBlIiwiZnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJUeXBlIiwic2hpbSIsInZhcmlhYmxlRGVjbGFyYXRpb25UeXBlTm9kZSIsInZhcmlhYmxlRGVjbGFyYXRpb25WYXJpYWJsZU5vZGUiLCJ0eXBlTm9kZSIsImZyb21UeXBlTm9kZSIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBMlRBOzs7ZUFBQTs7OzJEQXpUaUI7NERB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
|
package/src/conclusion.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import shim from "./shim";
|
|
4
|
-
|
|
5
|
-
import { nodeQuery } from "./utilities/query";
|
|
6
|
-
import { unqualifiedStatementFromJSON, unqualifiedStatementToUnqualifiedStatementJSON } from "./utilities/json";
|
|
7
|
-
|
|
8
|
-
const unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement");
|
|
9
|
-
|
|
10
|
-
class Conclusion {
|
|
11
|
-
constructor(unqualifiedStatement) {
|
|
12
|
-
this.unqualifiedStatement = unqualifiedStatement;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getUnqualifiedStatement() {
|
|
16
|
-
return this.unqualifiedStatement;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getString() { return this.unqualifiedStatement.getString(); }
|
|
20
|
-
|
|
21
|
-
getStatement() { return this.unqualifiedStatement.getStatement(); }
|
|
22
|
-
|
|
23
|
-
matchStatementNode(statementNode) { return this.unqualifiedStatement.matchStatementNode(statementNode); }
|
|
24
|
-
|
|
25
|
-
unifyStatement(statement, substitutions, generalContext, specificContext) {
|
|
26
|
-
let statementUnified;
|
|
27
|
-
|
|
28
|
-
const conclusion = this, ///
|
|
29
|
-
statementString = statement.getString(),
|
|
30
|
-
conclusionString = conclusion.getString();
|
|
31
|
-
|
|
32
|
-
specificContext.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
|
|
33
|
-
|
|
34
|
-
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
35
|
-
|
|
36
|
-
if (statementUnified) {
|
|
37
|
-
specificContext.debug(`...unified the '${statementString}' statement with the '${conclusionString}' conclusion.`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return statementUnified;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
verify(context) {
|
|
44
|
-
let verified = false;
|
|
45
|
-
|
|
46
|
-
const conclusionString = this.getString(); ///
|
|
47
|
-
|
|
48
|
-
context.trace(`Verifying the '${conclusionString}' conclusion...`);
|
|
49
|
-
|
|
50
|
-
const stated = true,
|
|
51
|
-
assignments = [],
|
|
52
|
-
unqualifiedStatementVerified = this.unqualifiedStatement.verify(assignments, stated, context);
|
|
53
|
-
|
|
54
|
-
if (unqualifiedStatementVerified) {
|
|
55
|
-
verified = true;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (verified) {
|
|
59
|
-
context.debug(`...verified the '${conclusionString}' conclusion.`);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return verified;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
toJSON() {
|
|
66
|
-
const unqualifiedStatementJSON = unqualifiedStatementToUnqualifiedStatementJSON(this.unqualifiedStatement),
|
|
67
|
-
unqualifiedStatement = unqualifiedStatementJSON, ///
|
|
68
|
-
json = {
|
|
69
|
-
unqualifiedStatement
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
return json;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
static fromJSON(json, fileContext) {
|
|
76
|
-
const unqualifiedStatement = unqualifiedStatementFromJSON(json, fileContext),
|
|
77
|
-
conclusion = new Conclusion(unqualifiedStatement);
|
|
78
|
-
|
|
79
|
-
return conclusion;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
static fromConclusionNode(conclusionNode, fileContext) {
|
|
83
|
-
const { UnqualifiedStatement } = shim,
|
|
84
|
-
unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode),
|
|
85
|
-
unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext),
|
|
86
|
-
conclusion = new Conclusion(unqualifiedStatement);
|
|
87
|
-
|
|
88
|
-
return conclusion;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
Object.assign(shim, {
|
|
93
|
-
Conclusion
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
export default Conclusion;
|
package/src/consequent.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import shim from "./shim";
|
|
4
|
-
|
|
5
|
-
import { nodeQuery } from "./utilities/query";
|
|
6
|
-
import { unqualifiedStatementFromJSON, unqualifiedStatementToUnqualifiedStatementJSON } from "./utilities/json";
|
|
7
|
-
|
|
8
|
-
const unqualifiedStatementNodeQuery = nodeQuery("/consequent/unqualifiedStatement");
|
|
9
|
-
|
|
10
|
-
class Consequent {
|
|
11
|
-
constructor(unqualifiedStatement) {
|
|
12
|
-
this.unqualifiedStatement = unqualifiedStatement;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getUnqualifiedStatement() {
|
|
16
|
-
return this.unqualifiedStatement;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getString() { return this.unqualifiedStatement.getString(); }
|
|
20
|
-
|
|
21
|
-
getStatement() { return this.unqualifiedStatement.getStatement(); }
|
|
22
|
-
|
|
23
|
-
matchStatementNode(statementNode) { return this.unqualifiedStatement.matchStatementNode(statementNode); }
|
|
24
|
-
|
|
25
|
-
unifyStatement(statement, substitutions, generalContext, specificContext) {
|
|
26
|
-
let statementUnified;
|
|
27
|
-
|
|
28
|
-
const consequent = this, ///
|
|
29
|
-
statementString = statement.getString(),
|
|
30
|
-
consequentString = consequent.getString();
|
|
31
|
-
|
|
32
|
-
specificContext.trace(`Unifying the '${statementString}' statement with the '${consequentString}' consequent...`);
|
|
33
|
-
|
|
34
|
-
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
35
|
-
|
|
36
|
-
if (statementUnified) {
|
|
37
|
-
specificContext.debug(`...unified the '${statementString}' statement with the '${consequentString}' consequent.`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return statementUnified;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
verify(context) {
|
|
44
|
-
let verified = false;
|
|
45
|
-
|
|
46
|
-
const consequentString = this.getString(); ///
|
|
47
|
-
|
|
48
|
-
context.trace(`Verifying the '${consequentString}' consequent...`);
|
|
49
|
-
|
|
50
|
-
const stated = true,
|
|
51
|
-
assignments = [],
|
|
52
|
-
unqualifiedStatementVerified = this.unqualifiedStatement.verify(assignments, stated, context);
|
|
53
|
-
|
|
54
|
-
if (unqualifiedStatementVerified) {
|
|
55
|
-
verified = true;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (verified) {
|
|
59
|
-
context.debug(`...verified the '${consequentString}' consequent.`);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return verified;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
toJSON() {
|
|
66
|
-
const unqualifiedStatementJSON = unqualifiedStatementToUnqualifiedStatementJSON(this.unqualifiedStatement),
|
|
67
|
-
unqualifiedStatement = unqualifiedStatementJSON, ///
|
|
68
|
-
json = {
|
|
69
|
-
unqualifiedStatement
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
return json;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
static fromJSON(json, fileContext) {
|
|
76
|
-
const unqualifiedStatement = unqualifiedStatementFromJSON(json, fileContext),
|
|
77
|
-
consequent = new Consequent(unqualifiedStatement);
|
|
78
|
-
|
|
79
|
-
return consequent;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
static fromConsequentNode(consequentNode, fileContext) {
|
|
83
|
-
const { UnqualifiedStatement } = shim,
|
|
84
|
-
unqualifiedStatementNode = unqualifiedStatementNodeQuery(consequentNode),
|
|
85
|
-
unqualifiedStatement = UnqualifiedStatement.fromUnqualifiedStatementNode(unqualifiedStatementNode, fileContext),
|
|
86
|
-
consequent = new Consequent(unqualifiedStatement);
|
|
87
|
-
|
|
88
|
-
return consequent;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
Object.assign(shim, {
|
|
93
|
-
Consequent
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
export default Consequent;
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import StatementSubstitution from "../../../substitution/statement";
|
|
4
|
-
|
|
5
|
-
import { trim } from "../../../utilities/string";
|
|
6
|
-
|
|
7
|
-
function unifyAWithRule(qualifiedStatement, substitutions, context) {
|
|
8
|
-
let unifiedWithRule = false;
|
|
9
|
-
|
|
10
|
-
const reference = qualifiedStatement.getReference(),
|
|
11
|
-
rule = context.findRuleByReference(reference);
|
|
12
|
-
|
|
13
|
-
if (rule !== null) {
|
|
14
|
-
const ruleString = rule.getString(),
|
|
15
|
-
qualifiedStatementString = trim(qualifiedStatement.getString()); ///
|
|
16
|
-
|
|
17
|
-
context.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${ruleString}' rule...`);
|
|
18
|
-
|
|
19
|
-
const statement = qualifiedStatement.getStatement(),
|
|
20
|
-
proofSteps = context.getProofSteps(),
|
|
21
|
-
statementAndProofStepsUnified = rule.unifyStatementAndProofSteps(statement, proofSteps, context);
|
|
22
|
-
|
|
23
|
-
unifiedWithRule = statementAndProofStepsUnified; ///
|
|
24
|
-
|
|
25
|
-
if (unifiedWithRule) {
|
|
26
|
-
context.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${ruleString}' rule.`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return unifiedWithRule;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function unifyAWithReference(qualifiedStatement, substitutions, context) {
|
|
34
|
-
let unifiedWithReference;
|
|
35
|
-
|
|
36
|
-
const statement = qualifiedStatement.getStatement(),
|
|
37
|
-
reference = qualifiedStatement.getReference(),
|
|
38
|
-
statementString = statement.getString(),
|
|
39
|
-
referenceString = reference.getString();
|
|
40
|
-
|
|
41
|
-
context.trace(`Unifying the '${statementString}' qualified statement with the '${referenceString}' reference...`);
|
|
42
|
-
|
|
43
|
-
const metavariable = reference.getMetavariable(),
|
|
44
|
-
statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
|
|
45
|
-
substitution = statementSubstitution; ///
|
|
46
|
-
|
|
47
|
-
substitutions.addSubstitution(substitution, context);
|
|
48
|
-
|
|
49
|
-
unifiedWithReference = true;
|
|
50
|
-
|
|
51
|
-
if (unifiedWithReference) {
|
|
52
|
-
context.debug(`...unified the '${statementString}' qualified statement with the '${referenceString}' reference.`);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return unifiedWithReference;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function unifyAWithAxiomLemmaTheoremOrConjecture(qualifiedStatement, substitutions, context) {
|
|
59
|
-
let unifiedWithAxiomLemmaTheoremOrConjecture = false;
|
|
60
|
-
|
|
61
|
-
const reference = qualifiedStatement.getReference(),
|
|
62
|
-
axiom = context.findAxiomByReference(reference),
|
|
63
|
-
lemma = context.findLemmaByReference(reference),
|
|
64
|
-
theorem = context.findTheoremByReference(reference),
|
|
65
|
-
conjecture = context.findConjectureByReference(reference),
|
|
66
|
-
axiomLemmaTheoremConjecture = (axiom || lemma || theorem || conjecture);
|
|
67
|
-
|
|
68
|
-
if (axiomLemmaTheoremConjecture !== null) {
|
|
69
|
-
const qualifiedStatementString = trim(qualifiedStatement.getString()), ///
|
|
70
|
-
axiomLemmaTheoremConjectureString = reference.getString();
|
|
71
|
-
|
|
72
|
-
context.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${axiomLemmaTheoremConjectureString}' axiom, lemma, theorem or conjecture...`);
|
|
73
|
-
|
|
74
|
-
const statement = qualifiedStatement.getStatement(),
|
|
75
|
-
proofSteps = context.getProofSteps(),
|
|
76
|
-
statementAndProofStepsUnified = axiomLemmaTheoremConjecture.unifyStatementAndProofSteps(statement, proofSteps, context);
|
|
77
|
-
|
|
78
|
-
if (statementAndProofStepsUnified) {
|
|
79
|
-
const metavariable = reference.getMetavariable(),
|
|
80
|
-
statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
|
|
81
|
-
substitution = statementSubstitution; ///
|
|
82
|
-
|
|
83
|
-
substitutions.addSubstitution(substitution, context);
|
|
84
|
-
|
|
85
|
-
unifiedWithAxiomLemmaTheoremOrConjecture = true;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (unifiedWithAxiomLemmaTheoremOrConjecture) {
|
|
89
|
-
context.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${axiomLemmaTheoremConjectureString}' axiom, lemma, theorem or conjecture.`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return unifiedWithAxiomLemmaTheoremOrConjecture;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const unifyMixins = [
|
|
97
|
-
unifyAWithRule,
|
|
98
|
-
unifyAWithReference,
|
|
99
|
-
unifyAWithAxiomLemmaTheoremOrConjecture
|
|
100
|
-
];
|
|
101
|
-
|
|
102
|
-
export default unifyMixins;
|
|
103
|
-
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import BracketedCombinator from "../../combinator/bracketed";
|
|
4
|
-
|
|
5
|
-
function unifyWithBracketedCombinator(statement, assignments, stated, context) {
|
|
6
|
-
let unifiedWithBracketedCombinator;
|
|
7
|
-
|
|
8
|
-
const bracketedCombinator = BracketedCombinator.fromNothing();
|
|
9
|
-
|
|
10
|
-
unifiedWithBracketedCombinator = bracketedCombinator.unifyStatement(statement, assignments, stated, context);
|
|
11
|
-
|
|
12
|
-
return unifiedWithBracketedCombinator;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function unifyWithCombinators(statement, assignments, stated, context) {
|
|
16
|
-
let unifiedWithCombinators;
|
|
17
|
-
|
|
18
|
-
const combinators = context.getCombinators();
|
|
19
|
-
|
|
20
|
-
stated = true; ///
|
|
21
|
-
|
|
22
|
-
assignments = null; ///
|
|
23
|
-
|
|
24
|
-
unifiedWithCombinators = combinators.some((combinator) => {
|
|
25
|
-
const unifiedWithCombinator = combinator.unifyStatement(statement, assignments, stated, context);
|
|
26
|
-
|
|
27
|
-
if (unifiedWithCombinator) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
return unifiedWithCombinators;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const unifyMixins = [
|
|
37
|
-
unifyWithBracketedCombinator,
|
|
38
|
-
unifyWithCombinators
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
export default unifyMixins;
|