occam-verify-cli 1.0.437 → 1.0.444
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/file.js +38 -35
- package/lib/context/local.js +10 -10
- package/lib/context/release.js +6 -6
- package/lib/context/temporary.js +14 -14
- package/lib/element/assertion/contained.js +45 -45
- package/lib/element/assertion/defined.js +13 -13
- package/lib/element/assertion/property.js +23 -22
- package/lib/element/assertion/satisfies.js +7 -6
- package/lib/element/assertion/subproof.js +20 -17
- package/lib/element/assertion/type.js +3 -2
- package/lib/element/assertion.js +1 -23
- package/lib/element/assumption.js +24 -22
- package/lib/element/axiom.js +9 -12
- package/lib/element/axiomLemmaTheoremConjecture.js +32 -32
- package/lib/element/{statement/combinator → combinator}/bracketed.js +16 -16
- package/lib/element/combinator.js +229 -0
- package/lib/element/conclusion.js +11 -9
- package/lib/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/lib/element/constructor.js +232 -0
- package/lib/element/declaration/combinator.js +2 -16
- package/lib/element/declaration/complexType.js +12 -12
- package/lib/element/declaration/constructor.js +13 -11
- package/lib/element/declaration/simpleType.js +4 -4
- package/lib/element/declaration/typePrefix.js +2 -2
- package/lib/element/declaration/variable.js +3 -3
- package/lib/element/deduction.js +11 -9
- package/lib/element/derivation.js +5 -8
- package/lib/element/equivalence.js +10 -10
- package/lib/element/equivalences.js +5 -5
- package/lib/element/frame.js +32 -38
- package/lib/element/hypothesis.js +3 -3
- package/lib/element/judgement.js +6 -4
- package/lib/element/label.js +16 -18
- package/lib/element/metaLemmaMetatheorem.js +5 -5
- package/lib/element/metaType.js +17 -80
- package/lib/element/metavariable.js +34 -34
- package/lib/element/parameter.js +3 -3
- package/lib/element/premise.js +43 -52
- package/lib/element/property.js +9 -9
- package/lib/element/propertyRelation.js +13 -13
- package/lib/element/reference.js +14 -17
- package/lib/element/rule.js +26 -50
- package/lib/element/signature.js +11 -11
- package/lib/element/statement.js +54 -56
- package/lib/element/step.js +79 -51
- package/lib/element/subDerivation.js +7 -10
- package/lib/element/subproof.js +6 -14
- package/lib/element/substitution/frame.js +1 -7
- package/lib/element/substitution/reference.js +2 -3
- package/lib/element/substitution/statement.js +44 -15
- package/lib/element/substitution/term.js +10 -57
- package/lib/element/substitution.js +5 -11
- package/lib/element/substitutions.js +29 -29
- package/lib/element/supposition.js +63 -55
- package/lib/element/term.js +21 -34
- package/lib/element/type.js +47 -60
- package/lib/element/typePrefix.js +5 -5
- package/lib/element/variable.js +9 -9
- package/lib/element.js +27 -3
- package/lib/metaTypes.js +52 -0
- package/lib/node/axiomLemmaTheoremConjecture.js +9 -9
- package/lib/node/body/axiom.js +2 -25
- package/lib/node/body/conjecture.js +2 -25
- package/lib/node/body/lemma.js +2 -25
- package/lib/node/body/metaLemma.js +2 -25
- package/lib/node/body/metatheorem.js +2 -25
- package/lib/node/body/rule.js +15 -1
- package/lib/node/body/theorem.js +2 -25
- package/lib/node/body.js +25 -2
- package/lib/node/combinator.js +11 -2
- package/lib/node/constructor.js +11 -2
- package/lib/node/declaration/combinator.js +5 -5
- package/lib/node/declaration/constructor.js +8 -8
- package/lib/node/declaration/property.js +15 -15
- package/lib/node/declaration/simpleType.js +31 -31
- package/lib/node/declaration/variable.js +8 -8
- package/lib/node/equality.js +8 -8
- package/lib/node/frame.js +20 -20
- package/lib/node/header.js +22 -22
- package/lib/node/metaLemmaMetaTheorem.js +16 -16
- package/lib/node/metavariable.js +15 -15
- package/lib/node/property.js +8 -8
- package/lib/node/propertyRelation.js +8 -8
- package/lib/node/rule.js +16 -16
- package/lib/node/statement.js +12 -12
- package/lib/node/step.js +22 -22
- package/lib/node/subproof.js +8 -8
- package/lib/node/substitution/frame.js +19 -19
- package/lib/node/substitution/statement.js +19 -19
- package/lib/node/substitution/term.js +19 -19
- package/lib/node/term.js +35 -35
- package/lib/preamble.js +5 -5
- package/lib/process/instantiate.js +20 -2
- package/lib/process/unify.js +39 -42
- package/lib/process/validate.js +431 -0
- package/lib/process/verify.js +44 -135
- package/lib/types.js +27 -0
- package/lib/utilities/brackets.js +4 -4
- package/lib/utilities/element.js +100 -61
- package/lib/utilities/instance.js +18 -18
- package/lib/utilities/statement.js +11 -16
- package/lib/utilities/string.js +21 -10
- package/lib/utilities/unification.js +237 -0
- package/lib/utilities/validation.js +251 -0
- package/package.json +6 -6
- package/src/context/file.js +37 -31
- package/src/context/local.js +8 -8
- package/src/context/release.js +9 -6
- package/src/context/temporary.js +11 -11
- package/src/element/assertion/contained.js +19 -20
- package/src/element/assertion/defined.js +11 -12
- package/src/element/assertion/property.js +20 -20
- package/src/element/assertion/satisfies.js +6 -6
- package/src/element/assertion/subproof.js +17 -15
- package/src/element/assertion/type.js +2 -2
- package/src/element/assertion.js +0 -2
- package/src/element/assumption.js +22 -19
- package/src/element/axiom.js +7 -11
- package/src/element/axiomLemmaTheoremConjecture.js +36 -36
- package/src/element/{statement/combinator → combinator}/bracketed.js +7 -7
- package/src/element/combinator.js +90 -0
- package/src/element/conclusion.js +12 -10
- package/src/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/src/element/{term/constructor.js → constructor.js} +17 -25
- package/src/element/declaration/combinator.js +1 -22
- package/src/element/declaration/complexType.js +11 -11
- package/src/element/declaration/constructor.js +13 -10
- package/src/element/declaration/simpleType.js +3 -3
- package/src/element/declaration/typePrefix.js +1 -1
- package/src/element/declaration/variable.js +2 -2
- package/src/element/deduction.js +12 -9
- package/src/element/derivation.js +4 -8
- package/src/element/equivalence.js +8 -8
- package/src/element/equivalences.js +4 -4
- package/src/element/frame.js +28 -30
- package/src/element/hypothesis.js +2 -2
- package/src/element/judgement.js +6 -3
- package/src/element/label.js +14 -21
- package/src/element/metaLemmaMetatheorem.js +4 -3
- package/src/element/metaType.js +9 -45
- package/src/element/metavariable.js +29 -31
- package/src/element/parameter.js +2 -2
- package/src/element/premise.js +56 -62
- package/src/element/property.js +6 -6
- package/src/element/propertyRelation.js +11 -11
- package/src/element/reference.js +12 -21
- package/src/element/rule.js +28 -72
- package/src/element/signature.js +10 -9
- package/src/element/statement.js +69 -56
- package/src/element/step.js +89 -51
- package/src/element/subDerivation.js +6 -10
- package/src/element/subproof.js +4 -12
- package/src/element/substitution/frame.js +0 -2
- package/src/element/substitution/reference.js +1 -5
- package/src/element/substitution/statement.js +44 -14
- package/src/element/substitution/term.js +10 -13
- package/src/element/substitution.js +3 -5
- package/src/element/substitutions.js +48 -30
- package/src/element/supposition.js +88 -70
- package/src/element/term.js +18 -28
- package/src/element/type.js +42 -36
- package/src/element/typePrefix.js +3 -3
- package/src/element/variable.js +7 -7
- package/src/element.js +15 -1
- package/src/metaTypes.js +42 -0
- package/src/node/axiomLemmaTheoremConjecture.js +6 -6
- package/src/node/body/axiom.js +0 -21
- package/src/node/body/conjecture.js +0 -23
- package/src/node/body/lemma.js +0 -23
- package/src/node/body/metaLemma.js +0 -23
- package/src/node/body/metatheorem.js +0 -23
- package/src/node/body/rule.js +12 -0
- package/src/node/body/theorem.js +0 -23
- package/src/node/body.js +23 -0
- package/src/node/combinator.js +9 -0
- package/src/node/constructor.js +9 -0
- package/src/node/declaration/combinator.js +5 -5
- package/src/node/declaration/constructor.js +8 -8
- package/src/node/declaration/property.js +14 -14
- package/src/node/declaration/simpleType.js +31 -31
- package/src/node/declaration/variable.js +7 -7
- package/src/node/equality.js +7 -7
- package/src/node/frame.js +21 -21
- package/src/node/header.js +22 -22
- package/src/node/metaLemmaMetaTheorem.js +14 -14
- package/src/node/metavariable.js +14 -14
- package/src/node/property.js +7 -7
- package/src/node/propertyRelation.js +7 -7
- package/src/node/rule.js +15 -15
- package/src/node/statement.js +12 -12
- package/src/node/step.js +21 -21
- package/src/node/subproof.js +7 -7
- package/src/node/substitution/frame.js +18 -18
- package/src/node/substitution/statement.js +18 -18
- package/src/node/substitution/term.js +18 -18
- package/src/node/term.js +34 -34
- package/src/preamble.js +4 -4
- package/src/process/instantiate.js +12 -0
- package/src/process/unify.js +53 -57
- package/src/process/validate.js +316 -0
- package/src/process/verify.js +50 -138
- package/src/types.js +18 -0
- package/src/utilities/brackets.js +10 -6
- package/src/utilities/element.js +138 -91
- package/src/utilities/instance.js +18 -18
- package/src/utilities/statement.js +27 -28
- package/src/utilities/string.js +34 -20
- package/src/{mixins/step/unify.js → utilities/unification.js} +82 -68
- package/src/utilities/validation.js +369 -0
- package/lib/element/statement/combinator.js +0 -105
- package/lib/element/term/constructor.js +0 -172
- package/lib/mixins/statement/verify.js +0 -198
- package/lib/mixins/step/unify.js +0 -228
- package/lib/mixins/term/verify.js +0 -65
- package/src/element/statement/combinator.js +0 -59
- package/src/mixins/statement/verify.js +0 -295
- package/src/mixins/term/verify.js +0 -81
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get validateStatements () {
|
|
13
|
+
return validateStatements;
|
|
14
|
+
},
|
|
15
|
+
get validateTerms () {
|
|
16
|
+
return validateTerms;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
20
|
+
var _statement = require("../utilities/statement");
|
|
21
|
+
function _interop_require_default(obj) {
|
|
22
|
+
return obj && obj.__esModule ? obj : {
|
|
23
|
+
default: obj
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function unifyTermWithBracketedConstructor(term, context, validateAhead) {
|
|
27
|
+
var termUnifiesWithBracketedConstructor;
|
|
28
|
+
var BracketedConstructor = _elements.default.BracketedConstructor, bracketedConstructor = BracketedConstructor.fromNothing();
|
|
29
|
+
termUnifiesWithBracketedConstructor = bracketedConstructor.unifyTerm(term, context, validateAhead);
|
|
30
|
+
return termUnifiesWithBracketedConstructor;
|
|
31
|
+
}
|
|
32
|
+
function unifyTermWithConstructors(term, context, validateAhead) {
|
|
33
|
+
var termUnifiesWithConstructors;
|
|
34
|
+
var constructors = context.getConstructors();
|
|
35
|
+
termUnifiesWithConstructors = constructors.some(function(constructor) {
|
|
36
|
+
var unifiesWithConstructor = constructor.unifyTerm(term, context, validateAhead);
|
|
37
|
+
if (unifiesWithConstructor) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return termUnifiesWithConstructors;
|
|
42
|
+
}
|
|
43
|
+
function validateTermAsVariable(term, context, validateAhead) {
|
|
44
|
+
var termValidatesAsVariable = false;
|
|
45
|
+
var Variable = _elements.default.Variable, termNode = term.getNode(), singularVariableNode = termNode.getSingularVariableNode();
|
|
46
|
+
if (singularVariableNode !== null) {
|
|
47
|
+
var variable;
|
|
48
|
+
var termString = term.getString(), variableNode = singularVariableNode; ///
|
|
49
|
+
variable = Variable.fromVariableNode(variableNode, context);
|
|
50
|
+
context.trace("Verifying the '".concat(termString, "' term as a variable..."));
|
|
51
|
+
var variableValidates = variable.validate(context);
|
|
52
|
+
if (variableValidates) {
|
|
53
|
+
var verifiesAhead;
|
|
54
|
+
var variableIdentifier = variable.getIdentifier();
|
|
55
|
+
variable = context.findVariableByVariableIdentifier(variableIdentifier);
|
|
56
|
+
var type = variable.getType();
|
|
57
|
+
term.setType(type);
|
|
58
|
+
verifiesAhead = validateAhead();
|
|
59
|
+
termValidatesAsVariable = verifiesAhead; ///
|
|
60
|
+
}
|
|
61
|
+
if (termValidatesAsVariable) {
|
|
62
|
+
context.debug("...verified the '".concat(termString, "' term as a variable."));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return termValidatesAsVariable;
|
|
66
|
+
}
|
|
67
|
+
function validateStatementAsMetavariableAndSubstitution(statement, assignments, stated, context) {
|
|
68
|
+
var statementValidatesAsMetavariableAndSubstitution = false;
|
|
69
|
+
var metavariable = (0, _statement.metavariableFromStatement)(statement, context);
|
|
70
|
+
if (metavariable !== null) {
|
|
71
|
+
var statementString = statement.getString();
|
|
72
|
+
context.trace("Validating the '".concat(statementString, "' statement as a metavariable and substitution..."));
|
|
73
|
+
var metavariableValidates = metavariable.validate(context);
|
|
74
|
+
if (metavariableValidates) {
|
|
75
|
+
var TermSubstitution = _elements.default.TermSubstitution, FrameSubstitution = _elements.default.FrameSubstitution, frameSubstitution = FrameSubstitution.fromStatement(statement, context), termSubstitution = TermSubstitution.fromStatement(statement, context), substitution = termSubstitution || frameSubstitution;
|
|
76
|
+
if (substitution !== null) {
|
|
77
|
+
var substitutionValidates = substitution.validate(context);
|
|
78
|
+
if (substitutionValidates) {
|
|
79
|
+
statementValidatesAsMetavariableAndSubstitution = true;
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
statementValidatesAsMetavariableAndSubstitution = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (statementValidatesAsMetavariableAndSubstitution) {
|
|
86
|
+
context.debug("...validated the '".concat(statementString, "' statement as a metavariable and substitution."));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return statementValidatesAsMetavariableAndSubstitution;
|
|
90
|
+
}
|
|
91
|
+
function unifyStatementWithBracketedCombinator(statement, assignments, stated, context) {
|
|
92
|
+
stated = true; ///
|
|
93
|
+
assignments = null; ///
|
|
94
|
+
var BracketedCombinator = _elements.default.BracketedCombinator, bracketedCombinator = BracketedCombinator.fromNothing(), statementUnifiesWithBracketedCombinator = bracketedCombinator.unifyStatement(statement, assignments, stated, context);
|
|
95
|
+
return statementUnifiesWithBracketedCombinator;
|
|
96
|
+
}
|
|
97
|
+
function unifyStatementWithCombinators(statement, assignments, stated, context) {
|
|
98
|
+
stated = true; ///
|
|
99
|
+
assignments = null; ///
|
|
100
|
+
var combinators = context.getCombinators(), statementUnifiesWithCombinators = combinators.some(function(combinator) {
|
|
101
|
+
var unifiesWithCombinator = combinator.unifyStatement(statement, assignments, stated, context);
|
|
102
|
+
if (unifiesWithCombinator) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return statementUnifiesWithCombinators;
|
|
107
|
+
}
|
|
108
|
+
function validateStatementAsEquality(statement, assignments, stated, context) {
|
|
109
|
+
var statementValidatesAsEquality = false;
|
|
110
|
+
var equality = (0, _statement.equalityFromStatement)(statement, context);
|
|
111
|
+
if (equality !== null) {
|
|
112
|
+
var statementString = statement.getString();
|
|
113
|
+
context.trace("Validating the '".concat(statementString, "' statement as an equality..."));
|
|
114
|
+
var equalityValidates = equality.validate(assignments, stated, context);
|
|
115
|
+
statementValidatesAsEquality = equalityValidates; ///
|
|
116
|
+
if (statementValidatesAsEquality) {
|
|
117
|
+
context.debug("...validated the '".concat(statementString, "' statement as an equality."));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return statementValidatesAsEquality;
|
|
121
|
+
}
|
|
122
|
+
function validateStatementAsJudgement(statement, assignments, stated, context) {
|
|
123
|
+
var validatesStatementAsJudgement = false;
|
|
124
|
+
var judgement = (0, _statement.judgementFromStatement)(statement, context);
|
|
125
|
+
if (judgement !== null) {
|
|
126
|
+
var statementString = statement.getString();
|
|
127
|
+
context.trace("Validating the '".concat(statementString, "' statement as a judgement..."));
|
|
128
|
+
var judgementValidates = judgement.validate(assignments, stated, context);
|
|
129
|
+
validatesStatementAsJudgement = judgementValidates; ///
|
|
130
|
+
if (validatesStatementAsJudgement) {
|
|
131
|
+
context.debug("...validated the '".concat(statementString, "' statement as a judgement."));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return validatesStatementAsJudgement;
|
|
135
|
+
}
|
|
136
|
+
function validateStatementAsTypeAssertion(statement, assignments, stated, context) {
|
|
137
|
+
var validatesStatementAsTypeAssertion = false;
|
|
138
|
+
var typeAssertion = (0, _statement.typeAssertionFromStatement)(statement, context);
|
|
139
|
+
if (typeAssertion !== null) {
|
|
140
|
+
var statementString = statement.getString();
|
|
141
|
+
context.trace("Validating the '".concat(statementString, "' statement as a type assertion..."));
|
|
142
|
+
var typeAssertionValidates = typeAssertion.validate(assignments, stated, context);
|
|
143
|
+
validatesStatementAsTypeAssertion = typeAssertionValidates; ///
|
|
144
|
+
if (validatesStatementAsTypeAssertion) {
|
|
145
|
+
var assertion = typeAssertion; ///
|
|
146
|
+
context.addAssertion(assertion);
|
|
147
|
+
context.debug("...validated the '".concat(statementString, "' statement as a type assertion."));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return validatesStatementAsTypeAssertion;
|
|
151
|
+
}
|
|
152
|
+
function validateStatementAsDefinedAssertion(statement, assignments, stated, context) {
|
|
153
|
+
var validatesStatementAsDefinedAssertion = false;
|
|
154
|
+
var definedAssertion = (0, _statement.definedAssertionFromStatement)(statement, context);
|
|
155
|
+
if (definedAssertion !== null) {
|
|
156
|
+
var statementString = statement.getString();
|
|
157
|
+
context.trace("Validating the '".concat(statementString, "' statement as a defined assertion..."));
|
|
158
|
+
var definedAssertionValidates = definedAssertion.validate(assignments, stated, context);
|
|
159
|
+
validatesStatementAsDefinedAssertion = definedAssertionValidates; ///
|
|
160
|
+
if (validatesStatementAsDefinedAssertion) {
|
|
161
|
+
var assertion = definedAssertion; ///
|
|
162
|
+
context.addAssertion(assertion);
|
|
163
|
+
context.debug("...validated the '".concat(statementString, "' statement as a defined assertion."));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return validatesStatementAsDefinedAssertion;
|
|
167
|
+
}
|
|
168
|
+
function validateStatementAsPropertyAssertion(statement, assignments, stated, context) {
|
|
169
|
+
var statementValidatesAsPropertyAssertion = false;
|
|
170
|
+
var propertyAssertion = (0, _statement.propertyAssertionFromStatement)(statement, context);
|
|
171
|
+
if (propertyAssertion !== null) {
|
|
172
|
+
var statementString = statement.getString();
|
|
173
|
+
context.trace("Validating the '".concat(statementString, "' statement as a property assertion..."));
|
|
174
|
+
var propertyAssertionValidates = propertyAssertion.validate(assignments, stated, context);
|
|
175
|
+
statementValidatesAsPropertyAssertion = propertyAssertionValidates; ///
|
|
176
|
+
if (statementValidatesAsPropertyAssertion) {
|
|
177
|
+
var assertion = propertyAssertion; ///
|
|
178
|
+
context.addAssertion(assertion);
|
|
179
|
+
context.debug("...validated the '".concat(statementString, "' statement as a property assertion."));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return statementValidatesAsPropertyAssertion;
|
|
183
|
+
}
|
|
184
|
+
function validateStatementAsSubproofAssertion(statement, assignments, stated, context) {
|
|
185
|
+
var statementValidatesAsSubproofAssertion = false;
|
|
186
|
+
var subproofAssertion = (0, _statement.subproofAssertionFromStatement)(statement, context);
|
|
187
|
+
if (subproofAssertion !== null) {
|
|
188
|
+
var statementString = statement.getString();
|
|
189
|
+
context.trace("Validating the '".concat(statementString, "' statement as a subproof assertion..."));
|
|
190
|
+
var subproofAssertionValidates = subproofAssertion.validate(assignments, stated, context);
|
|
191
|
+
statementValidatesAsSubproofAssertion = subproofAssertionValidates; ///
|
|
192
|
+
if (statementValidatesAsSubproofAssertion) {
|
|
193
|
+
var assertion = subproofAssertion; ///
|
|
194
|
+
context.addAssertion(assertion);
|
|
195
|
+
context.debug("...validated the '".concat(statementString, "' statement as a subproof assertion."));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return statementValidatesAsSubproofAssertion;
|
|
199
|
+
}
|
|
200
|
+
function validateStatementAsContainedAssertion(statement, assignments, stated, context) {
|
|
201
|
+
var validatesStatementAsContainedAssertion = false;
|
|
202
|
+
var containedAssertion = (0, _statement.containedAssertionFromStatement)(statement, context);
|
|
203
|
+
if (containedAssertion !== null) {
|
|
204
|
+
var statementString = statement.getString();
|
|
205
|
+
context.trace("Validating the '".concat(statementString, "' statement as a contained assertion..."));
|
|
206
|
+
var containedAssertionValidates = containedAssertion.validate(assignments, stated, context);
|
|
207
|
+
validatesStatementAsContainedAssertion = containedAssertionValidates; ///
|
|
208
|
+
if (validatesStatementAsContainedAssertion) {
|
|
209
|
+
var assertion = containedAssertion; ///
|
|
210
|
+
context.addAssertion(assertion);
|
|
211
|
+
context.debug("...validated the '".concat(statementString, "' statement as a contained assertion."));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return validatesStatementAsContainedAssertion;
|
|
215
|
+
}
|
|
216
|
+
function validateStatementAsSatisfiesAssertion(statement, assignments, stated, context) {
|
|
217
|
+
var validatesAStatementsSatisfiesAssertion = false;
|
|
218
|
+
var satisfiesAssertion = (0, _statement.satisfiesAssertionFromStatement)(statement, context);
|
|
219
|
+
if (satisfiesAssertion !== null) {
|
|
220
|
+
var statementString = statement.getString();
|
|
221
|
+
context.trace("Validating the '".concat(statementString, "' statement as a satisfies assertion..."));
|
|
222
|
+
var satisfiesAssertionValidates = satisfiesAssertion.validate(assignments, stated, context);
|
|
223
|
+
validatesAStatementsSatisfiesAssertion = satisfiesAssertionValidates; ///
|
|
224
|
+
if (validatesAStatementsSatisfiesAssertion) {
|
|
225
|
+
var assertion = satisfiesAssertion; ///
|
|
226
|
+
context.addAssertion(assertion);
|
|
227
|
+
context.debug("...validated the '".concat(statementString, "' statement as a satisfies assertion."));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return validatesAStatementsSatisfiesAssertion;
|
|
231
|
+
}
|
|
232
|
+
var validateTerms = [
|
|
233
|
+
unifyTermWithBracketedConstructor,
|
|
234
|
+
unifyTermWithConstructors,
|
|
235
|
+
validateTermAsVariable
|
|
236
|
+
];
|
|
237
|
+
var validateStatements = [
|
|
238
|
+
validateStatementAsMetavariableAndSubstitution,
|
|
239
|
+
unifyStatementWithBracketedCombinator,
|
|
240
|
+
unifyStatementWithCombinators,
|
|
241
|
+
validateStatementAsEquality,
|
|
242
|
+
validateStatementAsJudgement,
|
|
243
|
+
validateStatementAsTypeAssertion,
|
|
244
|
+
validateStatementAsDefinedAssertion,
|
|
245
|
+
validateStatementAsPropertyAssertion,
|
|
246
|
+
validateStatementAsSubproofAssertion,
|
|
247
|
+
validateStatementAsContainedAssertion,
|
|
248
|
+
validateStatementAsSatisfiesAssertion
|
|
249
|
+
];
|
|
250
|
+
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBqdWRnZW1lbnRGcm9tU3RhdGVtZW50LFxuICAgICAgICAgbWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudCxcbiAgICAgICAgIHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50LFxuICAgICAgICAgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50LFxuICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVtZW50XCI7XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcjtcblxuICBjb25zdCB7IEJyYWNrZXRlZENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICBicmFja2V0ZWRDb25zdHJ1Y3RvciA9IEJyYWNrZXRlZENvbnN0cnVjdG9yLmZyb21Ob3RoaW5nKCk7XG5cbiAgdGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSBicmFja2V0ZWRDb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgdmFsaWRhdGVBaGVhZCk7XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlQWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycztcblxuICBjb25zdCBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycygpO1xuXG4gIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IHVuaWZpZXNXaXRoQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgdmFsaWRhdGVBaGVhZCk7XG5cbiAgICBpZiAodW5pZmllc1dpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3JzO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlQWhlYWQpIHtcbiAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICBzaW5ndWxhclZhcmlhYmxlTm9kZSA9IHRlcm1Ob2RlLmdldFNpbmd1bGFyVmFyaWFibGVOb2RlKCk7XG5cbiAgaWYgKHNpbmd1bGFyVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgbGV0IHZhcmlhYmxlO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICB2YXJpYWJsZU5vZGUgPSBzaW5ndWxhclZhcmlhYmxlTm9kZTsgIC8vL1xuXG4gICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlVmFsaWRhdGVzID0gdmFyaWFibGUudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAodmFyaWFibGVWYWxpZGF0ZXMpIHtcbiAgICAgIGxldCB2ZXJpZmllc0FoZWFkO1xuXG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0ZXJtLnNldFR5cGUodHlwZSk7XG5cbiAgICAgIHZlcmlmaWVzQWhlYWQgPSB2YWxpZGF0ZUFoZWFkKCk7XG5cbiAgICAgIHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gdmVyaWZpZXNBaGVhZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybVZhbGlkYXRlc0FzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlIGFuZCBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZhbGlkYXRlcyA9IG1ldGF2YXJpYWJsZS52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgZnJhbWVTdWJzdGl0dXRpb24gPSBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCksXG4gICAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCksXG4gICAgICAgICAgICBzdWJzdGl0dXRpb24gPSAodGVybVN1YnN0aXR1dGlvbiB8fCBmcmFtZVN1YnN0aXR1dGlvbik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uVmFsaWRhdGVzID0gc3Vic3RpdHV0aW9uLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25WYWxpZGF0ZXMpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlIGFuZCBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uO1xufVxuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBzdGF0ZWQgPSB0cnVlOyAgLy8vXG5cbiAgYXNzaWdubWVudHMgPSBudWxsOyAvLy9cblxuICBjb25zdCB7IEJyYWNrZXRlZENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBicmFja2V0ZWRDb21iaW5hdG9yID0gQnJhY2tldGVkQ29tYmluYXRvci5mcm9tTm90aGluZygpLFxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IgPSBicmFja2V0ZWRDb21iaW5hdG9yLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQnJhY2tldGVkQ29tYmluYXRvcjtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIHN0YXRlZCA9IHRydWU7ICAvLy9cblxuICBhc3NpZ25tZW50cyA9IG51bGw7IC8vL1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JzID0gY29udGV4dC5nZXRDb21iaW5hdG9ycygpLFxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3JzID0gY29tYmluYXRvcnMuc29tZSgoY29tYmluYXRvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHVuaWZpZXNXaXRoQ29tYmluYXRvciA9IGNvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmICh1bmlmaWVzV2l0aENvbWJpbmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcnM7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnQsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCBlcXVhbGl0eSA9IGVxdWFsaXR5RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmApO1xuXG4gICAgY29uc3QgZXF1YWxpdHlWYWxpZGF0ZXMgPSBlcXVhbGl0eS52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkgPSBlcXVhbGl0eVZhbGlkYXRlczsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNFcXVhbGl0eSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNKdWRnZW1lbnQoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGp1ZGdlbWVudCA9IGp1ZGdlbWVudEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoanVkZ2VtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCk7XG5cbiAgICBjb25zdCBqdWRnZW1lbnRWYWxpZGF0ZXMgPSBqdWRnZW1lbnQudmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCA9IGp1ZGdlbWVudFZhbGlkYXRlczsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzSnVkZ2VtZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNKdWRnZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblZhbGlkYXRlcyA9IHR5cGVBc3NlcnRpb24udmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmFsaWRhdGVzOyAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChkZWZpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25WYWxpZGF0ZXMgPSBkZWZpbmVkQXNzZXJ0aW9uLnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgdmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvblZhbGlkYXRlczsgLy8vXG5cbiAgICBpZiAodmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBhc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eUFzc2VydGlvblZhbGlkYXRlcyA9IHByb3BlcnR5QXNzZXJ0aW9uLnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uVmFsaWRhdGVzOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBhc3NlcnRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uVmFsaWRhdGVzID0gc3VicHJvb2ZBc3NlcnRpb24udmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb25WYWxpZGF0ZXM7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb24pIHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uVmFsaWRhdGVzID0gY29udGFpbmVkQXNzZXJ0aW9uLnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgdmFsaWRhdGVzU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25WYWxpZGF0ZXM7IC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBhc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzU2F0aXNmaWVzQXNzZXJ0aW9uKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHNhdGlzZmllc0Fzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHNhdGlzZmllcyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHNhdGlzZmllc0Fzc2VydGlvblZhbGlkYXRlcyA9IHNhdGlzZmllc0Fzc2VydGlvbi52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgIHZhbGlkYXRlc0FTdGF0ZW1lbnRzU2F0aXNmaWVzQXNzZXJ0aW9uID0gc2F0aXNmaWVzQXNzZXJ0aW9uVmFsaWRhdGVzOyAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbikge1xuICAgICAgY29uc3QgYXNzZXJ0aW9uID0gc2F0aXNmaWVzQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbjtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVGVybXMgPSBbXG4gIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcixcbiAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyxcbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZVxuXTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50cyA9IFtcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbixcbiAgdW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvcixcbiAgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMsXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0p1ZGdlbWVudCxcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzUHJvcGVydHlBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1NhdGlzZmllc0Fzc2VydGlvblxuXTtcbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJ2YWxpZGF0ZVRlcm1zIiwidW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yIiwidGVybSIsImNvbnRleHQiLCJ2YWxpZGF0ZUFoZWFkIiwidGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJCcmFja2V0ZWRDb25zdHJ1Y3RvciIsImVsZW1lbnRzIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJmcm9tTm90aGluZyIsInVuaWZ5VGVybSIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnMiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJzb21lIiwiY29uc3RydWN0b3IiLCJ1bmlmaWVzV2l0aENvbnN0cnVjdG9yIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsInRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlIiwiVmFyaWFibGUiLCJ0ZXJtTm9kZSIsImdldE5vZGUiLCJzaW5ndWxhclZhcmlhYmxlTm9kZSIsImdldFNpbmd1bGFyVmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidmFyaWFibGVOb2RlIiwiZnJvbVZhcmlhYmxlTm9kZSIsInRyYWNlIiwidmFyaWFibGVWYWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsInZlcmlmaWVzQWhlYWQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ0eXBlIiwiZ2V0VHlwZSIsInNldFR5cGUiLCJkZWJ1ZyIsInZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnQiLCJhc3NpZ25tZW50cyIsInN0YXRlZCIsInN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsIm1ldGF2YXJpYWJsZVZhbGlkYXRlcyIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsImZyYW1lU3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudCIsInRlcm1TdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25WYWxpZGF0ZXMiLCJ1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yIiwiQnJhY2tldGVkQ29tYmluYXRvciIsImJyYWNrZXRlZENvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzIiwiY29tYmluYXRvcnMiLCJnZXRDb21iaW5hdG9ycyIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcnMiLCJjb21iaW5hdG9yIiwidW5pZmllc1dpdGhDb21iaW5hdG9yIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0VxdWFsaXR5Iiwic3RhdGVtZW50VmFsaWRhdGVzQXNFcXVhbGl0eSIsImVxdWFsaXR5IiwiZXF1YWxpdHlGcm9tU3RhdGVtZW50IiwiZXF1YWxpdHlWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzSnVkZ2VtZW50IiwidmFsaWRhdGVzU3RhdGVtZW50QXNKdWRnZW1lbnQiLCJqdWRnZW1lbnQiLCJqdWRnZW1lbnRGcm9tU3RhdGVtZW50IiwianVkZ2VtZW50VmFsaWRhdGVzIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJ0eXBlQXNzZXJ0aW9uVmFsaWRhdGVzIiwiYXNzZXJ0aW9uIiwiYWRkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJkZWZpbmVkQXNzZXJ0aW9uVmFsaWRhdGVzIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uIiwic3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwicHJvcGVydHlBc3NlcnRpb25WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24iLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzdWJwcm9vZkFzc2VydGlvblZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJjb250YWluZWRBc3NlcnRpb25WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzU2F0aXNmaWVzQXNzZXJ0aW9uIiwidmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic2F0aXNmaWVzQXNzZXJ0aW9uVmFsaWRhdGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFvV2FBO2VBQUFBOztRQU5BQztlQUFBQTs7OytEQTVWUTt5QkFVMkI7Ozs7OztBQUVoRCxTQUFTQyxrQ0FBa0NDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxhQUFhO0lBQ3JFLElBQUlDO0lBRUosSUFBTSxBQUFFQyx1QkFBeUJDLGlCQUFRLENBQWpDRCxzQkFDTkUsdUJBQXVCRixxQkFBcUJHLFdBQVc7SUFFekRKLHNDQUFzQ0cscUJBQXFCRSxTQUFTLENBQUNSLE1BQU1DLFNBQVNDO0lBRXBGLE9BQU9DO0FBQ1Q7QUFFQSxTQUFTTSwwQkFBMEJULElBQUksRUFBRUMsT0FBTyxFQUFFQyxhQUFhO0lBQzdELElBQUlRO0lBRUosSUFBTUMsZUFBZVYsUUFBUVcsZUFBZTtJQUU1Q0YsOEJBQThCQyxhQUFhRSxJQUFJLENBQUMsU0FBQ0M7UUFDL0MsSUFBTUMseUJBQXlCRCxZQUFZTixTQUFTLENBQUNSLE1BQU1DLFNBQVNDO1FBRXBFLElBQUlh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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.444",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.36",
|
|
14
14
|
"necessary": "^17.0.9",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
16
|
-
"occam-entities": "^1.0.
|
|
17
|
-
"occam-file-system": "^6.0.
|
|
18
|
-
"occam-furtle": "^2.0.
|
|
19
|
-
"occam-grammars": "^1.3.
|
|
15
|
+
"occam-custom-grammars": "^5.0.1339",
|
|
16
|
+
"occam-entities": "^1.0.443",
|
|
17
|
+
"occam-file-system": "^6.0.458",
|
|
18
|
+
"occam-furtle": "^2.0.277",
|
|
19
|
+
"occam-grammars": "^1.3.435",
|
|
20
20
|
"occam-lexers": "^23.1.34",
|
|
21
21
|
"occam-parsers": "^23.1.37",
|
|
22
22
|
"occam-query": "^4.1.142"
|
package/src/context/file.js
CHANGED
|
@@ -4,8 +4,8 @@ import { arrayUtilities } from "necessary";
|
|
|
4
4
|
|
|
5
5
|
import elements from "../elements";
|
|
6
6
|
|
|
7
|
-
import { baseType } from "../element/type";
|
|
8
7
|
import { verifyFile } from "../process/verify";
|
|
8
|
+
import { baseTypeFromNothing } from "../types";
|
|
9
9
|
import { nodeAsString, nodesAsString } from "../utilities/node";
|
|
10
10
|
import { typesFromJSON,
|
|
11
11
|
rulesFromJSON,
|
|
@@ -329,9 +329,9 @@ export default class FileContext {
|
|
|
329
329
|
findMetaLemmaByReference(reference) {
|
|
330
330
|
const metaLemmas = this.getMetaLemmas(),
|
|
331
331
|
metaLemma = metaLemmas.find((metaLemma) => {
|
|
332
|
-
const
|
|
332
|
+
const metaLemmaComparesToReference = metaLemma.compareReference(reference);
|
|
333
333
|
|
|
334
|
-
if (
|
|
334
|
+
if (metaLemmaComparesToReference) {
|
|
335
335
|
return true;
|
|
336
336
|
}
|
|
337
337
|
}) || null;
|
|
@@ -342,9 +342,9 @@ export default class FileContext {
|
|
|
342
342
|
findMetatheoremByReference(reference) {
|
|
343
343
|
const metatheorems = this.getMetatheorems(),
|
|
344
344
|
metatheorem = metatheorems.find((metatheorem) => {
|
|
345
|
-
const
|
|
345
|
+
const metatheoremComparesToReference = metatheorem.compareReference(reference);
|
|
346
346
|
|
|
347
|
-
if (
|
|
347
|
+
if (metatheoremComparesToReference) {
|
|
348
348
|
return true;
|
|
349
349
|
}
|
|
350
350
|
}) || null;
|
|
@@ -356,9 +356,9 @@ export default class FileContext {
|
|
|
356
356
|
const rules = this.getRules(),
|
|
357
357
|
metavariableName = reference.getMetavariableName(),
|
|
358
358
|
rule = rules.find((rule) => {
|
|
359
|
-
const
|
|
359
|
+
const ruleComparesToMetavariableName = rule.compareMetavariableName(metavariableName);
|
|
360
360
|
|
|
361
|
-
if (
|
|
361
|
+
if (ruleComparesToMetavariableName) {
|
|
362
362
|
return true;
|
|
363
363
|
}
|
|
364
364
|
}) || null;
|
|
@@ -370,9 +370,9 @@ export default class FileContext {
|
|
|
370
370
|
const axioms = this.getAxioms(),
|
|
371
371
|
metavariableName = reference.getMetavariableName(),
|
|
372
372
|
axiom = axioms.find((axiom) => {
|
|
373
|
-
const
|
|
373
|
+
const axiomComparesToMetavariableName = axiom.compareMetavariableName(metavariableName);
|
|
374
374
|
|
|
375
|
-
if (
|
|
375
|
+
if (axiomComparesToMetavariableName) {
|
|
376
376
|
return true;
|
|
377
377
|
}
|
|
378
378
|
}) || null;
|
|
@@ -384,9 +384,9 @@ export default class FileContext {
|
|
|
384
384
|
const lemmas = this.getLemmas(),
|
|
385
385
|
metavariableName = reference.getMetavariableName(),
|
|
386
386
|
lemma = lemmas.find((lemma) => {
|
|
387
|
-
const
|
|
387
|
+
const lemmaComparesToMetavariableName = lemma.compareMetavariableName(metavariableName);
|
|
388
388
|
|
|
389
|
-
if (
|
|
389
|
+
if (lemmaComparesToMetavariableName) {
|
|
390
390
|
return true;
|
|
391
391
|
}
|
|
392
392
|
}) || null;
|
|
@@ -398,9 +398,9 @@ export default class FileContext {
|
|
|
398
398
|
const theorems = this.getTheorems(),
|
|
399
399
|
metavariableName = reference.getMetavariableName(),
|
|
400
400
|
theorem = theorems.find((theorem) => {
|
|
401
|
-
const
|
|
401
|
+
const theoremComparesToMetavariableName = theorem.compareMetavariableName(metavariableName);
|
|
402
402
|
|
|
403
|
-
if (
|
|
403
|
+
if (theoremComparesToMetavariableName) {
|
|
404
404
|
return true;
|
|
405
405
|
}
|
|
406
406
|
}) || null;
|
|
@@ -425,9 +425,9 @@ export default class FileContext {
|
|
|
425
425
|
const conjectures = this.getConjectures(),
|
|
426
426
|
metavariableName = reference.getMetavariableName(),
|
|
427
427
|
conjecture = conjectures.find((conjecture) => {
|
|
428
|
-
const
|
|
428
|
+
const conjectureComparesToMetavariableName = conjecture.compareMetavariableName(metavariableName);
|
|
429
429
|
|
|
430
|
-
if (
|
|
430
|
+
if (conjectureComparesToMetavariableName) {
|
|
431
431
|
return true;
|
|
432
432
|
}
|
|
433
433
|
}) || null;
|
|
@@ -519,15 +519,17 @@ export default class FileContext {
|
|
|
519
519
|
findTypeByTypeName(typeName, includeRelease = true, includeDependencies = true) {
|
|
520
520
|
let types = this.getTypes(includeRelease, includeDependencies);
|
|
521
521
|
|
|
522
|
+
const baseType = baseTypeFromNothing();
|
|
523
|
+
|
|
522
524
|
types = [
|
|
523
525
|
...types,
|
|
524
526
|
baseType
|
|
525
527
|
];
|
|
526
528
|
|
|
527
529
|
const type = types.find((type) => {
|
|
528
|
-
const
|
|
530
|
+
const typeComparesToTypeName = type.compareTypeName(typeName);
|
|
529
531
|
|
|
530
|
-
if (
|
|
532
|
+
if (typeComparesToTypeName) {
|
|
531
533
|
return true;
|
|
532
534
|
}
|
|
533
535
|
}) || null;
|
|
@@ -538,15 +540,17 @@ export default class FileContext {
|
|
|
538
540
|
findTypeByNominalTypeName(nominalTypeName) {
|
|
539
541
|
let types = this.getTypes();
|
|
540
542
|
|
|
543
|
+
const baseType = baseTypeFromNothing();
|
|
544
|
+
|
|
541
545
|
types = [
|
|
542
546
|
...types,
|
|
543
547
|
baseType
|
|
544
548
|
];
|
|
545
549
|
|
|
546
550
|
const type = types.find((type) => {
|
|
547
|
-
const
|
|
551
|
+
const typeComparesToNominalTypeName = type.compareNominalTypeName(nominalTypeName);
|
|
548
552
|
|
|
549
|
-
if (
|
|
553
|
+
if (typeComparesToNominalTypeName) {
|
|
550
554
|
return true;
|
|
551
555
|
}
|
|
552
556
|
}) || null;
|
|
@@ -557,15 +561,17 @@ export default class FileContext {
|
|
|
557
561
|
findTypeByPrefixedTypeName(prefixedTypeName) {
|
|
558
562
|
let types = this.getTypes();
|
|
559
563
|
|
|
564
|
+
const baseType = baseTypeFromNothing();
|
|
565
|
+
|
|
560
566
|
types = [
|
|
561
567
|
...types,
|
|
562
568
|
baseType
|
|
563
569
|
];
|
|
564
570
|
|
|
565
571
|
const type = types.find((type) => {
|
|
566
|
-
const
|
|
572
|
+
const typeComparesToPrefixedTypeName = type.comparePrefixedTypeName(prefixedTypeName);
|
|
567
573
|
|
|
568
|
-
if (
|
|
574
|
+
if (typeComparesToPrefixedTypeName) {
|
|
569
575
|
return true;
|
|
570
576
|
}
|
|
571
577
|
}) || null;
|
|
@@ -576,9 +582,9 @@ export default class FileContext {
|
|
|
576
582
|
findMetaTypeByMetaTypeName(metaTypeName) {
|
|
577
583
|
const metaTypes = this.getMetaTypes(),
|
|
578
584
|
metaType = metaTypes.find((metaType) => {
|
|
579
|
-
const
|
|
585
|
+
const metaTypeComparesToMetaTypeName = metaType.compareMetaTypeName(metaTypeName);
|
|
580
586
|
|
|
581
|
-
if (
|
|
587
|
+
if (metaTypeComparesToMetaTypeName) {
|
|
582
588
|
return true;
|
|
583
589
|
}
|
|
584
590
|
}) || null;
|
|
@@ -589,9 +595,9 @@ export default class FileContext {
|
|
|
589
595
|
findTypePrefixByTypePrefixName(typePrefixName) {
|
|
590
596
|
const typePrefixes = this.getTypePrefixes(),
|
|
591
597
|
typePrefix = typePrefixes.find((typePrefix) => {
|
|
592
|
-
const
|
|
598
|
+
const typePrefixComparesToTypePrefixName = typePrefix.compareTypePrefixName(typePrefixName);
|
|
593
599
|
|
|
594
|
-
if (
|
|
600
|
+
if (typePrefixComparesToTypePrefixName) {
|
|
595
601
|
return true;
|
|
596
602
|
}
|
|
597
603
|
}) || null;
|
|
@@ -602,9 +608,9 @@ export default class FileContext {
|
|
|
602
608
|
findVariableByVariableIdentifier(variableIdentifier) {
|
|
603
609
|
const variables = this.getVariables(),
|
|
604
610
|
variable = variables.find((variable) => {
|
|
605
|
-
const
|
|
611
|
+
const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
|
|
606
612
|
|
|
607
|
-
if (
|
|
613
|
+
if (variableComparesToVariableIdentifier) {
|
|
608
614
|
return true;
|
|
609
615
|
}
|
|
610
616
|
}) || null;
|
|
@@ -615,9 +621,9 @@ export default class FileContext {
|
|
|
615
621
|
findLabelByMetavariableName(metavariableName) {
|
|
616
622
|
const labels = this.getLabels(),
|
|
617
623
|
label = labels.find((label) => {
|
|
618
|
-
const
|
|
624
|
+
const labelComparesToMetavariableName = label.compareMetavariableName(metavariableName);
|
|
619
625
|
|
|
620
|
-
if (
|
|
626
|
+
if (labelComparesToMetavariableName) {
|
|
621
627
|
return true;
|
|
622
628
|
}
|
|
623
629
|
}) || null;
|
|
@@ -659,9 +665,9 @@ export default class FileContext {
|
|
|
659
665
|
findMetavariableByMetavariableName(metavariableName) {
|
|
660
666
|
const metavariables = this.getMetavariables(),
|
|
661
667
|
metavariable = metavariables.find((metavariable) => {
|
|
662
|
-
const
|
|
668
|
+
const metavariableComparesToMetavariableName = metavariable.compareMetavariableName(metavariableName);
|
|
663
669
|
|
|
664
|
-
if (
|
|
670
|
+
if (metavariableComparesToMetavariableName) {
|
|
665
671
|
return true;
|
|
666
672
|
}
|
|
667
673
|
}) || null;
|
package/src/context/local.js
CHANGED
|
@@ -216,9 +216,9 @@ class LocalContext {
|
|
|
216
216
|
findVariableByVariableIdentifier(variableIdentifier, nested = true) {
|
|
217
217
|
const variables = this.getVariables(nested),
|
|
218
218
|
variable = variables.find((variable) => {
|
|
219
|
-
const
|
|
219
|
+
const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
|
|
220
220
|
|
|
221
|
-
if (
|
|
221
|
+
if (variableComparesToVariableIdentifier) {
|
|
222
222
|
return true;
|
|
223
223
|
}
|
|
224
224
|
}) || null;
|
|
@@ -306,7 +306,7 @@ class LocalContext {
|
|
|
306
306
|
|
|
307
307
|
const termMatchesGroundedTerm = groundedTerms.some((groundedTerm) => {
|
|
308
308
|
const groundedTermNode = groundedTerm.getNode(),
|
|
309
|
-
groundedTermNodeMatches = term.
|
|
309
|
+
groundedTermNodeMatches = term.matchNode(groundedTermNode);
|
|
310
310
|
|
|
311
311
|
if (groundedTermNodeMatches) {
|
|
312
312
|
return true;
|
|
@@ -344,18 +344,18 @@ class LocalContext {
|
|
|
344
344
|
return metavariableDefined
|
|
345
345
|
}
|
|
346
346
|
|
|
347
|
-
|
|
347
|
+
compareTermAndPropertyRelation(term, propertyRelation) {
|
|
348
348
|
const context = this, ///
|
|
349
349
|
steps = this.getSteps(),
|
|
350
|
-
|
|
351
|
-
const
|
|
350
|
+
comparesToTermAndPropertyRelation = steps.some((step) => {
|
|
351
|
+
const comparesToTermAndPropertyRelation = step.compareTermAndPropertyRelation(term, propertyRelation, context);
|
|
352
352
|
|
|
353
|
-
if (
|
|
353
|
+
if (comparesToTermAndPropertyRelation) {
|
|
354
354
|
return true;
|
|
355
355
|
}
|
|
356
356
|
});
|
|
357
357
|
|
|
358
|
-
return
|
|
358
|
+
return comparesToTermAndPropertyRelation;
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
nodeAsString(node) { return this.context.nodeAsString(node); }
|
package/src/context/release.js
CHANGED
|
@@ -10,8 +10,8 @@ import FileContext from "../context/file";
|
|
|
10
10
|
import NominalLexer from "../nominal/lexer";
|
|
11
11
|
import NominalParser from "../nominal/parser";
|
|
12
12
|
|
|
13
|
-
import { frameMetaType, referenceMetaType, statementMetaType } from "../element/metaType";
|
|
14
13
|
import { customGrammarFromNameAndEntries, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
|
|
14
|
+
import { frameMetaTypeFromNothing, referenceMetaTypeFromNothing, statementMetaTypeFromNothing } from "../metaTypes";
|
|
15
15
|
|
|
16
16
|
const { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
17
17
|
{ nominalParserFromCombinedCustomGrammar } = parsersUtilities,
|
|
@@ -58,11 +58,14 @@ export default class ReleaseContext {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
getMetaTypes() {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
const frameMetaType = frameMetaTypeFromNothing(),
|
|
62
|
+
referenceMetaType = referenceMetaTypeFromNothing(),
|
|
63
|
+
statementMetaType = statementMetaTypeFromNothing(),
|
|
64
|
+
metaTypes = [
|
|
65
|
+
frameMetaType,
|
|
66
|
+
referenceMetaType,
|
|
67
|
+
statementMetaType
|
|
68
|
+
];
|
|
66
69
|
|
|
67
70
|
return metaTypes;
|
|
68
71
|
}
|