occam-verify-cli 0.0.526 → 0.0.527
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/assertion/type.js +10 -40
- package/lib/axiom.js +7 -7
- package/lib/axiomLemmaTheoremConjecture.js +190 -0
- package/lib/conjecture.js +141 -0
- package/lib/consequence.js +3 -3
- package/lib/constants.js +4 -16
- package/lib/context/file.js +76 -39
- package/lib/context/metaproof.js +40 -10
- package/lib/context/proof.js +38 -105
- package/lib/context/release/directory.js +20 -1
- package/lib/context/release/file.js +27 -3
- package/lib/equality.js +78 -51
- package/lib/index.js +1 -13
- package/lib/kinds.js +5 -1
- package/lib/lemma.js +7 -7
- package/lib/matcher/metastatementForMetavariable.js +16 -19
- package/lib/matcher/statementForMetavariable.js +22 -20
- package/lib/matcher/{statementForVariable → termForVariable}/consequence.js +13 -13
- package/lib/matcher/{statementForVariable → termForVariable}/supposition.js +13 -13
- package/lib/matcher/termForVariable.js +198 -0
- package/lib/matcher.js +23 -64
- package/lib/mixins/file.js +62 -2
- package/lib/premise.js +4 -4
- package/lib/ruleNames.js +1 -9
- package/lib/step/proof.js +22 -1
- package/lib/substitution/statementForMetavariable.js +12 -8
- package/lib/substitution/termForVariable.js +86 -0
- package/lib/supposition.js +4 -4
- package/lib/theorem.js +7 -7
- package/lib/type.js +9 -2
- package/lib/utilities/string.js +3 -7
- package/lib/utilities/substitution.js +4 -5
- package/lib/variable.js +4 -38
- package/lib/verify/assertion/type.js +59 -36
- package/lib/verify/axiom.js +1 -2
- package/lib/verify/conjecture.js +56 -0
- package/lib/verify/declaration/topLevel.js +7 -3
- package/lib/verify/lemma.js +1 -2
- package/lib/verify/metastatement/qualified.js +1 -2
- package/lib/verify/metastatement/unqualified.js +1 -2
- package/lib/verify/rule.js +1 -2
- package/lib/verify/statement/qualified.js +39 -10
- package/lib/verify/statement/unqualified.js +1 -2
- package/lib/verify/statement.js +44 -47
- package/lib/verify/theorem.js +1 -2
- package/package.json +1 -1
- package/src/assertion/type.js +7 -32
- package/src/axiom.js +4 -4
- package/src/{axiomLemmaTheorem.js → axiomLemmaTheoremConjecture.js} +5 -5
- package/src/conjecture.js +13 -0
- package/src/consequence.js +2 -2
- package/src/constants.js +1 -4
- package/src/context/file.js +81 -37
- package/src/context/metaproof.js +42 -5
- package/src/context/proof.js +42 -41
- package/src/context/release/directory.js +24 -0
- package/src/context/release/file.js +34 -3
- package/src/equality.js +110 -61
- package/src/index.js +0 -3
- package/src/kinds.js +1 -0
- package/src/lemma.js +4 -4
- package/src/matcher/metastatementForMetavariable.js +22 -32
- package/src/matcher/statementForMetavariable.js +40 -34
- package/src/matcher/termForVariable/consequence.js +9 -0
- package/src/matcher/termForVariable/supposition.js +9 -0
- package/src/matcher/termForVariable.js +89 -0
- package/src/matcher.js +28 -22
- package/src/mixins/file.js +46 -1
- package/src/premise.js +4 -4
- package/src/ruleNames.js +0 -2
- package/src/step/proof.js +27 -0
- package/src/substitution/statementForMetavariable.js +17 -10
- package/src/substitution/termForVariable.js +64 -0
- package/src/supposition.js +3 -3
- package/src/theorem.js +4 -4
- package/src/type.js +14 -4
- package/src/utilities/string.js +4 -6
- package/src/utilities/substitution.js +6 -4
- package/src/variable.js +4 -37
- package/src/verify/assertion/type.js +70 -64
- package/src/verify/axiom.js +0 -1
- package/src/verify/conjecture.js +73 -0
- package/src/verify/declaration/topLevel.js +7 -0
- package/src/verify/lemma.js +0 -1
- package/src/verify/metastatement/qualified.js +0 -1
- package/src/verify/metastatement/unqualified.js +0 -1
- package/src/verify/rule.js +0 -1
- package/src/verify/statement/qualified.js +53 -13
- package/src/verify/statement/unqualified.js +0 -1
- package/src/verify/statement.js +46 -66
- package/src/verify/theorem.js +0 -1
- package/lib/axiomLemmaTheorem.js +0 -190
- package/lib/jsonTypes.js +0 -30
- package/lib/matcher/statementForVariable.js +0 -201
- package/lib/substitution/statementForVariable.js +0 -86
- package/lib/utilities/json.js +0 -187
- package/lib/utilities/version.js +0 -32
- package/lib/versionChanges.js +0 -34
- package/src/jsonTypes.js +0 -6
- package/src/matcher/statementForVariable/consequence.js +0 -9
- package/src/matcher/statementForVariable/supposition.js +0 -9
- package/src/matcher/statementForVariable.js +0 -99
- package/src/substitution/statementForVariable.js +0 -64
- package/src/utilities/json.js +0 -264
- package/src/utilities/version.js +0 -30
- package/src/versionChanges.js +0 -11
package/lib/verify/theorem.js
CHANGED
|
@@ -15,7 +15,6 @@ var _labels = /*#__PURE__*/ _interopRequireDefault(require("../verify/labels"));
|
|
|
15
15
|
var _supposition = /*#__PURE__*/ _interopRequireDefault(require("./supposition"));
|
|
16
16
|
var _consequence = /*#__PURE__*/ _interopRequireDefault(require("./consequence"));
|
|
17
17
|
var _array = require("../utilities/array");
|
|
18
|
-
var _string = require("../utilities/string");
|
|
19
18
|
var _query = require("../utilities/query");
|
|
20
19
|
function _interopRequireDefault(obj) {
|
|
21
20
|
return obj && obj.__esModule ? obj : {
|
|
@@ -55,4 +54,4 @@ function verifyTheorem(theoremNode, fileContext) {
|
|
|
55
54
|
return theoremVerified;
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4uL3RoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlQcm9vZiBmcm9tIFwiLi4vdmVyaWZ5L3Byb29mXCI7XG5pbXBvcnQgUHJvb2ZDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3Byb29mXCI7XG5pbXBvcnQgdmVyaWZ5TGFiZWxzIGZyb20gXCIuLi92ZXJpZnkvbGFiZWxzXCI7XG5pbXBvcnQgdmVyaWZ5U3VwcG9zaXRpb24gZnJvbSBcIi4vc3VwcG9zaXRpb25cIjtcbmltcG9ydCB2ZXJpZnlDb25zZXF1ZW5jZSBmcm9tIFwiLi9jb25zZXF1ZW5jZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcHJvb2ZOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbS9wcm9vZiFcIiksXG4gICAgICBsYWJlbE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3RoZW9yZW0vbGFiZWxcIiksXG4gICAgICBjb25zZXF1ZW5jZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90aGVvcmVtL2NvbnNlcXVlbmNlIVwiKSxcbiAgICAgIHN1cHBvc2l0aW9uc05vZGVRdWVyeSA9IG5vZGVzUXVlcnkoXCIvdGhlb3JlbS9zdXBwb3NpdGlvblwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGhlb3JlbSh0aGVvcmVtTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHRoZW9yZW1WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGZpbGVDb250ZXh0LmJlZ2luKHRoZW9yZW1Ob2RlKTtcblxuICBjb25zdCBsYWJlbE5vZGVzID0gbGFiZWxOb2Rlc1F1ZXJ5KHRoZW9yZW1Ob2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKSxcbiAgICAgICAgcHJvb2ZDb250ZXh0ID0gUHJvb2ZDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCk7XG5cbiAgZmlsZUNvbnRleHQuZGVidWcoYFZlcmlmeWluZyB0aGUgJyR7bGFiZWxzU3RyaW5nfScgdGhlb3JlbS4uLmApO1xuXG4gIGNvbnN0IGxhYmVscyA9IFtdLFxuICAgICAgICBsYWJlbHNWZXJpZmllZCA9IHZlcmlmeUxhYmVscyhsYWJlbE5vZGVzLCBsYWJlbHMsIGZpbGVDb250ZXh0KTtcblxuICBpZiAobGFiZWxzVmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBbXSxcbiAgICAgICAgICBzdXBwb3NpdGlvbk5vZGVzID0gc3VwcG9zaXRpb25zTm9kZVF1ZXJ5KHRoZW9yZW1Ob2RlKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNWZXJpZmllZCA9IHN1cHBvc2l0aW9uTm9kZXMuZXZlcnkoKHN1cHBvc2l0aW9uTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25WZXJpZmllZCA9IHZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uTm9kZSwgc3VwcG9zaXRpb25zLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAoc3VwcG9zaXRpb25WZXJpZmllZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNWZXJpZmllZCkge1xuICAgICAgY29uc3QgY29uc2VxdWVuY2VzID0gW10sXG4gICAgICAgICAgICBjb25zZXF1ZW5jZU5vZGUgPSBjb25zZXF1ZW5jZU5vZGVRdWVyeSh0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICBjb25zZXF1ZW5jZVZlcmlmaWVkID0gdmVyaWZ5Q29uc2VxdWVuY2UoY29uc2VxdWVuY2VOb2RlLCBjb25zZXF1ZW5jZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmIChjb25zZXF1ZW5jZVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IHByb29mTm9kZSA9IHByb29mTm9kZVF1ZXJ5KHRoZW9yZW1Ob2RlKSxcbiAgICAgICAgICAgICAgZmlyc3RDb25zZXF1ZW5jZSA9IGZpcnN0KGNvbnNlcXVlbmNlcyksXG4gICAgICAgICAgICAgIGNvbnNlcXVlbmNlID0gZmlyc3RDb25zZXF1ZW5jZSwgLy8vXG4gICAgICAgICAgICAgIHByb29mVmVyaWZpZWQgPSB2ZXJpZnlQcm9vZihwcm9vZk5vZGUsIGNvbnNlcXVlbmNlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgIGlmIChwcm9vZlZlcmlmaWVkKSB7XG4gICAgICAgICAgY29uc3QgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZENvbnNlcXVlbmNlKGxhYmVscywgc3VwcG9zaXRpb25zLCBjb25zZXF1ZW5jZSk7XG5cbiAgICAgICAgICBmaWxlQ29udGV4dC5hZGRUaGVvcmVtKHRoZW9yZW0pO1xuXG4gICAgICAgICAgdGhlb3JlbVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0aGVvcmVtVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7bGFiZWxzU3RyaW5nfScgdGhlb3JlbS5gKTtcbiAgfVxuXG4gIHRoZW9yZW1WZXJpZmllZCA/XG4gICAgZmlsZUNvbnRleHQuY29tcGxldGUodGhlb3JlbU5vZGUpIDpcbiAgICAgIGZpbGVDb250ZXh0LmNvbXBsZXRlKHRoZW9yZW1Ob2RlKTtcblxuICByZXR1cm4gdGhlb3JlbVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVRoZW9yZW0iLCJwcm9vZk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJjb25zZXF1ZW5jZU5vZGVRdWVyeSIsInN1cHBvc2l0aW9uc05vZGVRdWVyeSIsInRoZW9yZW1Ob2RlIiwiZmlsZUNvbnRleHQiLCJ0aGVvcmVtVmVyaWZpZWQiLCJiZWdpbiIsImxhYmVsTm9kZXMiLCJsYWJlbHNTdHJpbmciLCJub2Rlc0FzU3RyaW5nIiwicHJvb2ZDb250ZXh0IiwiUHJvb2ZDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwiZGVidWciLCJsYWJlbHMiLCJsYWJlbHNWZXJpZmllZCIsInZlcmlmeUxhYmVscyIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uTm9kZXMiLCJzdXBwb3NpdGlvbnNWZXJpZmllZCIsImV2ZXJ5Iiwic3VwcG9zaXRpb25Ob2RlIiwic3VwcG9zaXRpb25WZXJpZmllZCIsInZlcmlmeVN1cHBvc2l0aW9uIiwiY29uc2VxdWVuY2VzIiwiY29uc2VxdWVuY2VOb2RlIiwiY29uc2VxdWVuY2VWZXJpZmllZCIsInZlcmlmeUNvbnNlcXVlbmNlIiwicHJvb2ZOb2RlIiwiZmlyc3RDb25zZXF1ZW5jZSIsImZpcnN0IiwiY29uc2VxdWVuY2UiLCJwcm9vZlZlcmlmaWVkIiwidmVyaWZ5UHJvb2YiLCJ0aGVvcmVtIiwiVGhlb3JlbSIsImZyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmRDb25zZXF1ZW5jZSIsImFkZFRoZW9yZW0iLCJpbmZvIiwiY29tcGxldGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQXdCQTs7OzREQWZKOzBEQUNJOzJEQUNDOzJEQUNBO2dFQUNLO2dFQUNBO3FCQUVSO3FCQUNnQjs7Ozs7O0FBRXRDLElBQU1DLGlCQUFpQkMsSUFBQUEsZ0JBQVMsRUFBQyxvQkFDM0JDLGtCQUFrQkMsSUFBQUEsaUJBQVUsRUFBQyxtQkFDN0JDLHVCQUF1QkgsSUFBQUEsZ0JBQVMsRUFBQywwQkFDakNJLHdCQUF3QkYsSUFBQUEsaUJBQVUsRUFBQztBQUUxQixTQUFTSixjQUFjTyxXQUFXLEVBQUVDLFdBQVcsRUFBRTtJQUM5RCxJQUFJQyxrQkFBa0IsS0FBSztJQUUzQkQsWUFBWUUsS0FBSyxDQUFDSDtJQUVsQixJQUFNSSxhQUFhUixnQkFBZ0JJLGNBQzdCSyxlQUFlSixZQUFZSyxhQUFhLENBQUNGLGFBQ3pDRyxlQUFlQyxlQUFZLENBQUNDLGVBQWUsQ0FBQ1I7SUFFbERBLFlBQVlTLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiTCxjQUFhO0lBRWpELElBQU1NLFNBQVMsRUFBRSxFQUNYQyxpQkFBaUJDLElBQUFBLGVBQVksRUFBQ1QsWUFBWU8sUUFBUVY7SUFFeEQsSUFBSVcsZ0JBQWdCO1FBQ2xCLElBQU1FLGVBQWUsRUFBRSxFQUNqQkMsbUJBQW1CaEIsc0JBQXNCQyxjQUN6Q2dCLHVCQUF1QkQsaUJBQWlCRSxLQUFLLENBQUMsU0FBQ0MsaUJBQW9CO1lBQ2pFLElBQU1DLHNCQUFzQkMsSUFBQUEsb0JBQWlCLEVBQUNGLGlCQUFpQkosY0FBY1A7WUFFN0UsSUFBSVkscUJBQXFCO2dCQUN2QixPQUFPLElBQUk7WUFDYixDQUFDO1FBQ0g7UUFFTixJQUFJSCxzQkFBc0I7WUFDeEIsSUFBTUssZUFBZSxFQUFFLEVBQ2pCQyxrQkFBa0J4QixxQkFBcUJFLGNBQ3ZDdUIsc0JBQXNCQyxJQUFBQSxvQkFBaUIsRUFBQ0YsaUJBQWlCRCxjQUFjZDtZQUU3RSxJQUFJZ0IscUJBQXFCO2dCQUN2QixJQUFNRSxZQUFZL0IsZUFBZU0sY0FDM0IwQixtQkFBbUJDLElBQUFBLFlBQUssRUFBQ04sZUFDekJPLGNBQWNGLGtCQUNkRyxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ0wsV0FBV0csYUFBYXJCO2dCQUUxRCxJQUFJc0IsZUFBZTtvQkFDakIsSUFBTUUsVUFBVUMsZ0JBQU8sQ0FBQ0Msb0NBQW9DLENBQUN0QixRQUFRRyxjQUFjYztvQkFFbkYzQixZQUFZaUMsVUFBVSxDQUFDSDtvQkFFdkI3QixrQkFBa0IsSUFBSTtnQkFDeEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLGlCQUFpQjtRQUNuQkQsWUFBWWtDLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiOUIsY0FBYTtJQUNqRCxDQUFDO0lBRURILGtCQUNFRCxZQUFZbUMsUUFBUSxDQUFDcEMsZUFDbkJDLFlBQVltQyxRQUFRLENBQUNwQyxZQUFZO0lBRXJDLE9BQU9FO0FBQ1QifQ==
|
package/package.json
CHANGED
package/src/assertion/type.js
CHANGED
|
@@ -1,45 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import Variable from "../variable";
|
|
4
|
-
|
|
5
3
|
export default class TypeAssertion {
|
|
6
|
-
constructor(
|
|
7
|
-
this.
|
|
8
|
-
this.termNode = termNode;
|
|
9
|
-
this.variableName = variableName;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
getType() {
|
|
13
|
-
return this.type;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
getTermNode() {
|
|
17
|
-
return this.termNode;
|
|
4
|
+
constructor(variable) {
|
|
5
|
+
this.variable = variable;
|
|
18
6
|
}
|
|
19
7
|
|
|
20
|
-
|
|
21
|
-
return this.
|
|
8
|
+
getVariable() {
|
|
9
|
+
return this.variable;
|
|
22
10
|
}
|
|
23
11
|
|
|
24
12
|
assert(proofContext) {
|
|
25
|
-
|
|
26
|
-
const name = this.variableName, ///
|
|
27
|
-
variable = Variable.fromTypeAndName(this.type, name);
|
|
28
|
-
|
|
29
|
-
proofContext.addVariable(variable);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
static fromTypeAndTermNode(type, termNode) {
|
|
34
|
-
const variableName = null,
|
|
35
|
-
typeAssertion = new TypeAssertion(type, termNode, variableName);
|
|
36
|
-
|
|
37
|
-
return typeAssertion;
|
|
13
|
+
proofContext.addVariable(this.variable);
|
|
38
14
|
}
|
|
39
15
|
|
|
40
|
-
static
|
|
41
|
-
const
|
|
42
|
-
typeAssertion = new TypeAssertion(type, termNode, variableName);
|
|
16
|
+
static fromVariable(variable) {
|
|
17
|
+
const typeAssertion = new TypeAssertion(variable);
|
|
43
18
|
|
|
44
19
|
return typeAssertion;
|
|
45
20
|
}
|
package/src/axiom.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import AxiomLemmaTheoremConjecture from "./axiomLemmaTheoremConjecture";
|
|
4
4
|
|
|
5
5
|
import { AXIOM_KIND } from "./kinds";
|
|
6
6
|
|
|
7
|
-
export default class Axiom extends
|
|
7
|
+
export default class Axiom extends AxiomLemmaTheoremConjecture {
|
|
8
8
|
static kind = AXIOM_KIND;
|
|
9
9
|
|
|
10
|
-
static fromJSON(json, releaseContext) { return
|
|
10
|
+
static fromJSON(json, releaseContext) { return AxiomLemmaTheoremConjecture.fromJSON(Axiom, json, releaseContext); }
|
|
11
11
|
|
|
12
|
-
static fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence) { return
|
|
12
|
+
static fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence) { return AxiomLemmaTheoremConjecture.fromLabelsSuppositionsAndConsequence(Axiom, labels, suppositions, consequence); }
|
|
13
13
|
}
|
|
@@ -7,7 +7,7 @@ import Consequence from "./consequence";
|
|
|
7
7
|
import { prune } from "./utilities/array";
|
|
8
8
|
import { someSubArray } from "./utilities/array";
|
|
9
9
|
|
|
10
|
-
export default class
|
|
10
|
+
export default class AxiomLemmaTheoremConjecture {
|
|
11
11
|
constructor(labels, suppositions, consequence) {
|
|
12
12
|
this.labels = labels;
|
|
13
13
|
this.suppositions = suppositions;
|
|
@@ -156,7 +156,7 @@ function matchSupposition(supposition, proofSteps, substitutions) {
|
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
function matchSuppositions(supposition, proofSteps, substitutions) {
|
|
159
|
-
const
|
|
159
|
+
const suppositionsMatch = supposition.every((supposition) => {
|
|
160
160
|
const suppositionMatches = matchSupposition(supposition, proofSteps, substitutions);
|
|
161
161
|
|
|
162
162
|
if (suppositionMatches) {
|
|
@@ -164,7 +164,7 @@ function matchSuppositions(supposition, proofSteps, substitutions) {
|
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
166
|
|
|
167
|
-
return
|
|
167
|
+
return suppositionsMatch;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
function matchConsequence(consequence, statementNode, substitutions) {
|
|
@@ -178,9 +178,9 @@ function matchSuppositionsAndConsequence(suppositions, consequence, proofSteps,
|
|
|
178
178
|
let suppositionsMatchConsequence = false;
|
|
179
179
|
|
|
180
180
|
const substitutions = [],
|
|
181
|
-
|
|
181
|
+
suppositionsMatch = matchSuppositions(suppositions, proofSteps, substitutions);
|
|
182
182
|
|
|
183
|
-
if (
|
|
183
|
+
if (suppositionsMatch) {
|
|
184
184
|
const consequenceMatches = matchConsequence(consequence, statementNode, substitutions);
|
|
185
185
|
|
|
186
186
|
suppositionsMatchConsequence = consequenceMatches; ///
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import AxiomLemmaTheoremConjecture from "./axiomLemmaTheoremConjecture";
|
|
4
|
+
|
|
5
|
+
import { CONJECTURE_KIND } from "./kinds";
|
|
6
|
+
|
|
7
|
+
export default class Conjecture extends AxiomLemmaTheoremConjecture {
|
|
8
|
+
static kind = CONJECTURE_KIND;
|
|
9
|
+
|
|
10
|
+
static fromJSON(json, releaseContext) { return AxiomLemmaTheoremConjecture.fromJSON(Conjecture, json, releaseContext); }
|
|
11
|
+
|
|
12
|
+
static fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence) { return AxiomLemmaTheoremConjecture.fromLabelsSuppositionsAndConsequence(Conjecture, labels, suppositions, consequence); }
|
|
13
|
+
}
|
package/src/consequence.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { nodeAsString } from "./utilities/string";
|
|
4
4
|
import { statementNodeFromStatementString } from "./utilities/string";
|
|
5
|
-
import {
|
|
5
|
+
import { consequenceTermForVariableMatcher } from "./matcher/termForVariable/consequence";
|
|
6
6
|
|
|
7
7
|
export default class Consequence {
|
|
8
8
|
constructor(statementNode) {
|
|
@@ -16,7 +16,7 @@ export default class Consequence {
|
|
|
16
16
|
matchStatementNode(statementNode, substitutions) {
|
|
17
17
|
const nonTerminalNodeA = this.statementNode, ///
|
|
18
18
|
nonTerminalNodeB = statementNode, ///
|
|
19
|
-
nonTerminalNodeMatches =
|
|
19
|
+
nonTerminalNodeMatches = consequenceTermForVariableMatcher.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions),
|
|
20
20
|
statementNodeMatches = nonTerminalNodeMatches; ///
|
|
21
21
|
|
|
22
22
|
return statementNodeMatches;
|
package/src/constants.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
export const COMMA = ',';
|
|
4
|
-
export const STRING = "string";
|
|
5
|
-
export const NUMBER = "number";
|
|
6
|
-
export const BOOLEAN = "boolean";
|
|
7
4
|
export const EMPTY_STRING = "";
|
|
8
5
|
export const LEFT_BRACKET = "(";
|
|
9
6
|
export const RIGHT_BRACKET = ")";
|
|
10
|
-
export const
|
|
7
|
+
export const EQUALITY_DEPTH = 2;
|
|
11
8
|
export const MAXIMUM_INDEXES_LENGTH = 10;
|
|
12
9
|
export const MAXIMUM_PERMUTATION_LENGTH = 5;
|
|
13
10
|
export const BRACKETED_CHILD_NODES_LENGTH = 3;
|
package/src/context/file.js
CHANGED
|
@@ -7,19 +7,23 @@ import { nodeAsString, nodesAsString } from "../utilities/string";
|
|
|
7
7
|
import { leastLineIndexFromNodeAndTokens, greatestLineIndexFromNodeAndTokens } from "../utilities/tokens";
|
|
8
8
|
|
|
9
9
|
export default class FileContext {
|
|
10
|
-
constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems,
|
|
10
|
+
constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, conjectures, combinators, constructors, variables, metavariables) {
|
|
11
11
|
this.releaseContext = releaseContext;
|
|
12
12
|
this.filePath = filePath;
|
|
13
13
|
this.tokens = tokens;
|
|
14
14
|
this.node = node;
|
|
15
|
+
|
|
15
16
|
this.types = types;
|
|
16
17
|
this.rules = rules;
|
|
17
18
|
this.axioms = axioms;
|
|
18
19
|
this.lemmas = lemmas;
|
|
19
20
|
this.theorems = theorems;
|
|
20
|
-
this.
|
|
21
|
+
this.conjectures = conjectures;
|
|
21
22
|
this.combinators = combinators;
|
|
22
23
|
this.constructors = constructors;
|
|
24
|
+
|
|
25
|
+
this.variables = variables;
|
|
26
|
+
this.metavariables = metavariables;
|
|
23
27
|
}
|
|
24
28
|
|
|
25
29
|
getReleaseContext() {
|
|
@@ -38,8 +42,16 @@ export default class FileContext {
|
|
|
38
42
|
return this.node;
|
|
39
43
|
}
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
getProofSteps() {
|
|
46
|
+
const proofSteps = []; ///
|
|
47
|
+
|
|
48
|
+
return proofSteps;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
getMetaproofSteps() {
|
|
52
|
+
const metaproofSteps = []; ///
|
|
53
|
+
|
|
54
|
+
return metaproofSteps;
|
|
43
55
|
}
|
|
44
56
|
|
|
45
57
|
getLabels(includeRelease = true) {
|
|
@@ -148,6 +160,20 @@ export default class FileContext {
|
|
|
148
160
|
return theorems;
|
|
149
161
|
}
|
|
150
162
|
|
|
163
|
+
getConjectures(includeRelease = true) {
|
|
164
|
+
const conjectures = [];
|
|
165
|
+
|
|
166
|
+
push(conjectures, this.conjectures);
|
|
167
|
+
|
|
168
|
+
if (includeRelease) {
|
|
169
|
+
const releaseContextConjectures = this.releaseContext.getConjectures();
|
|
170
|
+
|
|
171
|
+
push(conjectures, releaseContextConjectures);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return conjectures;
|
|
175
|
+
}
|
|
176
|
+
|
|
151
177
|
getCombinators(includeRelease = true) {
|
|
152
178
|
const combinators = [];
|
|
153
179
|
|
|
@@ -176,16 +202,12 @@ export default class FileContext {
|
|
|
176
202
|
return constructors;
|
|
177
203
|
}
|
|
178
204
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
return proofSteps;
|
|
205
|
+
getVariables() {
|
|
206
|
+
return this.variables;
|
|
183
207
|
}
|
|
184
208
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
return metaproofSteps;
|
|
209
|
+
getMetavariables() {
|
|
210
|
+
return this.metavariables;
|
|
189
211
|
}
|
|
190
212
|
|
|
191
213
|
findTypeByTypeName(typeName) {
|
|
@@ -271,18 +293,25 @@ export default class FileContext {
|
|
|
271
293
|
return theorem;
|
|
272
294
|
}
|
|
273
295
|
|
|
274
|
-
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
const
|
|
296
|
+
findConjectureByReferenceName(referenceName) {
|
|
297
|
+
const labelName = referenceName, ///
|
|
298
|
+
conjectures = this.getConjectures(),
|
|
299
|
+
conjecture = conjectures.find((conjecture) => {
|
|
300
|
+
const conjectureMatchesLabelName = conjecture.matchLabelName(labelName);
|
|
279
301
|
|
|
280
|
-
if (
|
|
302
|
+
if (conjectureMatchesLabelName) {
|
|
281
303
|
return true;
|
|
282
304
|
}
|
|
283
305
|
}) || null;
|
|
284
306
|
|
|
285
|
-
return
|
|
307
|
+
return conjecture;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
isLabelPresentByLabelName(labelName) {
|
|
311
|
+
const label = this.findLabelByLabelName(labelName),
|
|
312
|
+
labelPresent = (label !== null);
|
|
313
|
+
|
|
314
|
+
return labelPresent;
|
|
286
315
|
}
|
|
287
316
|
|
|
288
317
|
isTypePresentByTypeName(typeName) {
|
|
@@ -292,11 +321,30 @@ export default class FileContext {
|
|
|
292
321
|
return typePresent;
|
|
293
322
|
}
|
|
294
323
|
|
|
295
|
-
|
|
296
|
-
const
|
|
297
|
-
labelPresent = (label !== null);
|
|
324
|
+
nodeAsString(node) {
|
|
325
|
+
const string = nodeAsString(node, this.tokens);
|
|
298
326
|
|
|
299
|
-
return
|
|
327
|
+
return string;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
nodesAsString(node) {
|
|
331
|
+
const string = nodesAsString(node, this.tokens);
|
|
332
|
+
|
|
333
|
+
return string;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
findVariableByVariableName(variableName) {
|
|
337
|
+
const name = variableName, ///
|
|
338
|
+
variables = this.getVariables(),
|
|
339
|
+
variable = variables.find((variable) => {
|
|
340
|
+
const matches = variable.matchName(name);
|
|
341
|
+
|
|
342
|
+
if (matches) {
|
|
343
|
+
return true;
|
|
344
|
+
}
|
|
345
|
+
}) || null;
|
|
346
|
+
|
|
347
|
+
return variable;
|
|
300
348
|
}
|
|
301
349
|
|
|
302
350
|
isVariablePresentByVariableName(variableName) {
|
|
@@ -344,18 +392,6 @@ export default class FileContext {
|
|
|
344
392
|
this.constructors.push(constructor);
|
|
345
393
|
}
|
|
346
394
|
|
|
347
|
-
nodeAsString(node) {
|
|
348
|
-
const string = nodeAsString(node, this.tokens);
|
|
349
|
-
|
|
350
|
-
return string;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
nodesAsString(node) {
|
|
354
|
-
const string = nodesAsString(node, this.tokens);
|
|
355
|
-
|
|
356
|
-
return string;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
395
|
trace(message) { this.releaseContext.trace(message); }
|
|
360
396
|
|
|
361
397
|
debug(message) { this.releaseContext.debug(message); }
|
|
@@ -422,6 +458,12 @@ export default class FileContext {
|
|
|
422
458
|
json.push(theoremJSON);
|
|
423
459
|
});
|
|
424
460
|
|
|
461
|
+
this.conjectures.forEach((conjecture) => {
|
|
462
|
+
const conjectureJSON = conjecture.toJSON(this.tokens);
|
|
463
|
+
|
|
464
|
+
json.push(conjectureJSON);
|
|
465
|
+
});
|
|
466
|
+
|
|
425
467
|
this.combinators.forEach((combinator) => {
|
|
426
468
|
const combinatorJSON = combinator.toJSON(this.tokens);
|
|
427
469
|
|
|
@@ -452,10 +494,12 @@ export default class FileContext {
|
|
|
452
494
|
axioms = [],
|
|
453
495
|
lemmas = [],
|
|
454
496
|
theorems = [],
|
|
455
|
-
|
|
497
|
+
conjectures = [],
|
|
456
498
|
combinators = [],
|
|
457
499
|
constructors = [],
|
|
458
|
-
|
|
500
|
+
variables = [],
|
|
501
|
+
metavariables = [],
|
|
502
|
+
fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, conjectures, combinators, constructors, variables, metavariables);
|
|
459
503
|
|
|
460
504
|
return fileContext;
|
|
461
505
|
}
|
package/src/context/metaproof.js
CHANGED
|
@@ -4,11 +4,12 @@ import fileMixins from "../mixins/file";
|
|
|
4
4
|
import loggingMixins from "../mixins/logging";
|
|
5
5
|
import callbacksMixins from "../mixins/callbacks";
|
|
6
6
|
|
|
7
|
-
import { last } from "../utilities/array";
|
|
7
|
+
import { push, last } from "../utilities/array";
|
|
8
8
|
|
|
9
9
|
class MetaproofContext {
|
|
10
|
-
constructor(context, metaproofSteps) {
|
|
10
|
+
constructor(context, metavariables, metaproofSteps) {
|
|
11
11
|
this.context = context;
|
|
12
|
+
this.metavariables = metavariables;
|
|
12
13
|
this.metaproofSteps = metaproofSteps;
|
|
13
14
|
}
|
|
14
15
|
|
|
@@ -16,6 +17,20 @@ class MetaproofContext {
|
|
|
16
17
|
return this.context;
|
|
17
18
|
}
|
|
18
19
|
|
|
20
|
+
getVariables() { return this.context.getVariables(); }
|
|
21
|
+
|
|
22
|
+
getMetavariables() {
|
|
23
|
+
const metavariables = [];
|
|
24
|
+
|
|
25
|
+
push(metavariables, this.metavariables);
|
|
26
|
+
|
|
27
|
+
const contextMetavariables = this.context.getMetavariables();
|
|
28
|
+
|
|
29
|
+
push(metavariables, contextMetavariables);
|
|
30
|
+
|
|
31
|
+
return metavariables;
|
|
32
|
+
}
|
|
33
|
+
|
|
19
34
|
getMetaproofSteps() {
|
|
20
35
|
let metaproofSteps = this.context.getMetaproofSteps();
|
|
21
36
|
|
|
@@ -39,6 +54,10 @@ class MetaproofContext {
|
|
|
39
54
|
return lastMetaproofStep;
|
|
40
55
|
}
|
|
41
56
|
|
|
57
|
+
addMetavariable(metavariable) {
|
|
58
|
+
this.metavariables.push(metavariable);
|
|
59
|
+
}
|
|
60
|
+
|
|
42
61
|
addMetaproofStep(metaproofStep) {
|
|
43
62
|
this.metaproofSteps.push(metaproofStep);
|
|
44
63
|
}
|
|
@@ -61,9 +80,26 @@ class MetaproofContext {
|
|
|
61
80
|
return metastatementMatches;
|
|
62
81
|
}
|
|
63
82
|
|
|
64
|
-
|
|
83
|
+
findMetavariableByMetavariableName(metavariableName) {
|
|
84
|
+
const name = metavariableName, ///
|
|
85
|
+
metavariables = this.getMetavariables(),
|
|
86
|
+
metavariable = metavariables.find((metavariable) => {
|
|
87
|
+
const matches = metavariable.matchName(name);
|
|
65
88
|
|
|
66
|
-
|
|
89
|
+
if (matches) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}) || null;
|
|
93
|
+
|
|
94
|
+
return metavariable;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
isMetavariablePresentByVariableName(metavariableName) {
|
|
98
|
+
const metavariable = this.findMetavariableByMetavariableName(metavariableName),
|
|
99
|
+
metavariablePresent = (metavariable !== null);
|
|
100
|
+
|
|
101
|
+
return metavariablePresent;
|
|
102
|
+
}
|
|
67
103
|
|
|
68
104
|
static fromFileContext(fileContext) {
|
|
69
105
|
const context = fileContext, ///
|
|
@@ -75,9 +111,10 @@ class MetaproofContext {
|
|
|
75
111
|
|
|
76
112
|
static fromMetaproofContext(metaproofContext) {
|
|
77
113
|
const context = metaproofContext, ///
|
|
114
|
+
metavariables = [],
|
|
78
115
|
metaproofSteps = [];
|
|
79
116
|
|
|
80
|
-
metaproofContext = new MetaproofContext(context, metaproofSteps); ///
|
|
117
|
+
metaproofContext = new MetaproofContext(context, metavariables, metaproofSteps); ///
|
|
81
118
|
|
|
82
119
|
return metaproofContext;
|
|
83
120
|
}
|
package/src/context/proof.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Equality from "../equality";
|
|
3
4
|
import fileMixins from "../mixins/file";
|
|
4
5
|
import loggingMixins from "../mixins/logging";
|
|
5
6
|
import callbacksMixins from "../mixins/callbacks";
|
|
6
7
|
|
|
7
8
|
import { push, last } from "../utilities/array";
|
|
9
|
+
import { MAXIMUM_INDEXES_LENGTH } from "../constants";
|
|
8
10
|
|
|
9
11
|
class ProofContext {
|
|
10
12
|
constructor(context, variables, proofSteps) {
|
|
@@ -17,6 +19,18 @@ class ProofContext {
|
|
|
17
19
|
return this.context;
|
|
18
20
|
}
|
|
19
21
|
|
|
22
|
+
getVariables() {
|
|
23
|
+
const variables = [];
|
|
24
|
+
|
|
25
|
+
push(variables, this.variables);
|
|
26
|
+
|
|
27
|
+
const contextVariables = this.context.getVariables();
|
|
28
|
+
|
|
29
|
+
push(variables, contextVariables);
|
|
30
|
+
|
|
31
|
+
return variables;
|
|
32
|
+
}
|
|
33
|
+
|
|
20
34
|
getProofSteps() {
|
|
21
35
|
let proofSteps = this.context.getProofSteps();
|
|
22
36
|
|
|
@@ -28,34 +42,34 @@ class ProofContext {
|
|
|
28
42
|
return proofSteps;
|
|
29
43
|
}
|
|
30
44
|
|
|
31
|
-
|
|
45
|
+
getLastProofStep() {
|
|
46
|
+
let lastProofStep = null;
|
|
32
47
|
|
|
33
|
-
|
|
48
|
+
const proofStepsLength = this.proofSteps.length;
|
|
34
49
|
|
|
35
|
-
|
|
50
|
+
if (proofStepsLength > 0) {
|
|
51
|
+
lastProofStep = last(this.proofSteps);
|
|
52
|
+
}
|
|
36
53
|
|
|
37
|
-
|
|
54
|
+
return lastProofStep;
|
|
55
|
+
}
|
|
38
56
|
|
|
39
|
-
|
|
57
|
+
getMetavariables() { return this.context.getMetavariables(); }
|
|
40
58
|
|
|
41
|
-
|
|
59
|
+
getEqualities() {
|
|
60
|
+
const equalities = [],
|
|
61
|
+
start = -MAXIMUM_INDEXES_LENGTH, ///
|
|
62
|
+
proofSteps = this.proofSteps.slice(start); ///
|
|
42
63
|
|
|
43
|
-
|
|
44
|
-
|
|
64
|
+
proofSteps.forEach((proofStep) => {
|
|
65
|
+
const equality = Equality.fromProofStep(proofStep);
|
|
45
66
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
push(variables, contextVariables);
|
|
51
|
-
|
|
52
|
-
return variables;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getLastProofStep() {
|
|
56
|
-
const lastProofStep = last(this.proofSteps);
|
|
67
|
+
if (equality !== null) {
|
|
68
|
+
equalities.push(equality);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
57
71
|
|
|
58
|
-
return
|
|
72
|
+
return equalities;
|
|
59
73
|
}
|
|
60
74
|
|
|
61
75
|
addVariable(variable) {
|
|
@@ -100,31 +114,11 @@ class ProofContext {
|
|
|
100
114
|
|
|
101
115
|
isVariablePresentByVariableName(variableName) {
|
|
102
116
|
const variable = this.findVariableByVariableName(variableName),
|
|
103
|
-
|
|
117
|
+
variablePresent = (variable !== null);
|
|
104
118
|
|
|
105
119
|
return variablePresent;
|
|
106
120
|
}
|
|
107
121
|
|
|
108
|
-
findTypeByTypeName(typeName) { return this.context.findTypeByTypeName(typeName); }
|
|
109
|
-
|
|
110
|
-
findLabelByTypeName(labelName) { return this.context.findLabelByTypeName(labelName); }
|
|
111
|
-
|
|
112
|
-
findRuleByReferenceName(referenceName) { return this.context.findRuleByReferenceName(referenceName); }
|
|
113
|
-
|
|
114
|
-
findAxiomByReferenceName(referenceName) { return this.context.findAxiomByReferenceName(referenceName); }
|
|
115
|
-
|
|
116
|
-
findLemmaByReferenceName(referenceName) { return this.context.findLemmaByReferenceName(referenceName); }
|
|
117
|
-
|
|
118
|
-
findTheoremByReferenceName(referenceName) { return this.context.findTheoremByReferenceName(referenceName); }
|
|
119
|
-
|
|
120
|
-
isLabelPresentByLabelName(labelName) { return this.context.isLabelPresentByLabelName(labelName); }
|
|
121
|
-
|
|
122
|
-
isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
|
|
123
|
-
|
|
124
|
-
nodeAsString(node) { return this.context.nodeAsString(node); }
|
|
125
|
-
|
|
126
|
-
nodesAsString(node) { return this.context.nodesAsString(node); }
|
|
127
|
-
|
|
128
122
|
static fromFileContext(fileContext) {
|
|
129
123
|
const context = fileContext, ///
|
|
130
124
|
variables = [],
|
|
@@ -150,3 +144,10 @@ Object.assign(ProofContext.prototype, loggingMixins);
|
|
|
150
144
|
Object.assign(ProofContext.prototype, callbacksMixins);
|
|
151
145
|
|
|
152
146
|
export default ProofContext;
|
|
147
|
+
|
|
148
|
+
function equalitiesFromProofSteps(proofSteps, context) {
|
|
149
|
+
let equalities = [];
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
return equalities;
|
|
153
|
+
}
|
|
@@ -149,6 +149,30 @@ export default class DirectoryReleaseContext extends ReleaseContext {
|
|
|
149
149
|
return theorems;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
getConjectures(includeDependencies = true) {
|
|
153
|
+
const conjectures = [];
|
|
154
|
+
|
|
155
|
+
this.fileContexts.forEach((fileContext) => {
|
|
156
|
+
const includeRelease = false,
|
|
157
|
+
fileContextConjectures = fileContext.getConjectures(includeRelease);
|
|
158
|
+
|
|
159
|
+
push(conjectures, fileContextConjectures);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (includeDependencies) {
|
|
163
|
+
const dependencyReleaseContexts = this.getDependencyReleaseContexts();
|
|
164
|
+
|
|
165
|
+
dependencyReleaseContexts.forEach((releaseContext) => {
|
|
166
|
+
const includeDependencies = false,
|
|
167
|
+
releaseContextConjectures = releaseContext.getConjectures(includeDependencies);
|
|
168
|
+
|
|
169
|
+
push(conjectures, releaseContextConjectures);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return conjectures;
|
|
174
|
+
}
|
|
175
|
+
|
|
152
176
|
getCombinators(includeDependencies = true) {
|
|
153
177
|
const combinators = [];
|
|
154
178
|
|