occam-verify-cli 0.0.526 → 0.0.529
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/README.md +4 -0
- package/bin/abbreviations.js +5 -1
- package/bin/action/help.js +4 -0
- package/bin/action/verify.js +35 -13
- package/bin/actions.js +11 -6
- package/bin/defaults.js +4 -0
- package/bin/options.js +4 -0
- package/bin/utilities/releaseContext.js +5 -7
- package/lib/assertion/type.js +10 -40
- package/lib/axiom.js +8 -8
- package/lib/axiomLemmaTheoremConjecture.js +190 -0
- package/lib/combinator.js +4 -3
- package/lib/conclusion.js +8 -7
- package/lib/conjecture.js +141 -0
- package/lib/consequence.js +6 -5
- package/lib/constants.js +11 -27
- package/lib/constructor.js +5 -4
- package/lib/context/file.js +88 -73
- package/lib/context/metaproof.js +51 -20
- package/lib/context/proof.js +48 -114
- package/lib/context/release/directory.js +25 -6
- package/lib/context/release/file.js +38 -25
- package/lib/context/release.js +32 -51
- package/lib/equality.js +79 -51
- package/lib/index.js +4 -16
- package/lib/kinds.js +5 -1
- package/lib/label.js +4 -3
- package/lib/lemma.js +8 -8
- package/lib/log.js +146 -0
- package/lib/matcher.js +25 -75
- package/lib/metaTypeNames.js +13 -0
- package/lib/mixins/file.js +62 -2
- package/lib/mixins/logging.js +13 -13
- package/lib/node/metastatement/bracketed.js +16 -0
- package/lib/node/statement/bracketed.js +16 -0
- package/lib/node/statement/combinator/bracketed.js +17 -0
- package/lib/node/statement/combinator/equality.js +17 -0
- package/lib/node/statement/equality.js +16 -0
- package/lib/ocmbinator/bracketed.js +3 -4
- package/lib/ocmbinator/equality.js +3 -4
- package/lib/premise.js +13 -12
- package/lib/rule.js +5 -5
- package/lib/ruleNames.js +1 -9
- package/lib/step/metaproof.js +28 -25
- package/lib/step/proof.js +23 -1
- package/lib/substitution/metastatementForMetavariable.js +16 -13
- package/lib/substitution/statementForMetavariable.js +16 -13
- package/lib/substitution/termForVariable.js +76 -0
- package/lib/supposition.js +7 -6
- package/lib/theorem.js +8 -8
- package/lib/type.js +12 -5
- package/lib/utilities/metaproof.js +60 -0
- package/lib/utilities/node.js +56 -0
- package/lib/utilities/proof.js +60 -0
- package/lib/utilities/releaseContext.js +24 -12
- package/lib/utilities/string.js +3 -38
- package/lib/variable.js +4 -38
- package/lib/{matcher → verifier}/metastatementForMetavariable/conclusion.js +12 -12
- package/lib/{matcher → verifier}/metastatementForMetavariable/premise.js +12 -12
- package/lib/verifier/metastatementForMetavariable.js +198 -0
- package/lib/{matcher → verifier}/statementForMetavariable/conclusion.js +12 -12
- package/lib/{matcher → verifier}/statementForMetavariable/premise.js +12 -12
- package/lib/verifier/statementForMetavariable.js +203 -0
- package/lib/{matcher/statementForVariable → verifier/termForVariable}/consequence.js +13 -13
- package/lib/{matcher/statementForVariable → verifier/termForVariable}/supposition.js +13 -13
- package/lib/verifier/termForVariable.js +198 -0
- package/lib/verifier.js +92 -0
- package/lib/verify/assertion/type.js +62 -41
- package/lib/verify/axiom.js +3 -6
- package/lib/verify/conclusion.js +2 -4
- package/lib/verify/conjecture.js +54 -0
- package/lib/verify/consequence.js +2 -4
- package/lib/verify/declaration/combinator.js +1 -3
- package/lib/verify/declaration/constructor.js +1 -3
- package/lib/verify/declaration/topLevel.js +7 -5
- package/lib/verify/declaration/type.js +1 -3
- package/lib/verify/declaration/variable.js +1 -3
- package/lib/verify/derivation.js +1 -5
- package/lib/verify/label.js +1 -3
- package/lib/verify/lemma.js +3 -6
- package/lib/verify/metastatement/qualified.js +2 -5
- package/lib/verify/metastatement/unqualified.js +2 -5
- package/lib/verify/metastatement.js +1 -3
- package/lib/verify/premise.js +2 -4
- package/lib/verify/proof.js +3 -5
- package/lib/verify/rule.js +3 -6
- package/lib/verify/ruleDerivation.js +1 -5
- package/lib/verify/ruleProof.js +3 -5
- package/lib/verify/statement/qualified.js +40 -13
- package/lib/verify/statement/unqualified.js +2 -5
- package/lib/verify/statement.js +56 -62
- package/lib/verify/statementAsCombinator.js +4 -6
- package/lib/verify/supposition.js +2 -4
- package/lib/verify/term.js +4 -10
- package/lib/verify/termAsConstructor.js +6 -9
- package/lib/verify/theorem.js +3 -6
- package/lib/verify/type.js +5 -9
- package/lib/verify/variable.js +5 -9
- package/package.json +1 -1
- package/src/assertion/type.js +7 -32
- package/src/axiom.js +4 -4
- package/src/{axiomLemmaTheorem.js → axiomLemmaTheoremConjecture.js} +9 -9
- package/src/combinator.js +3 -3
- package/src/conclusion.js +7 -7
- package/src/conjecture.js +13 -0
- package/src/consequence.js +5 -5
- package/src/constants.js +3 -7
- package/src/constructor.js +4 -4
- package/src/context/file.js +85 -65
- package/src/context/metaproof.js +55 -15
- package/src/context/proof.js +53 -50
- package/src/context/release/directory.js +31 -7
- package/src/context/release/file.js +47 -31
- package/src/context/release.js +23 -32
- package/src/equality.js +108 -61
- package/src/index.js +2 -4
- package/src/kinds.js +1 -0
- package/src/label.js +3 -3
- package/src/lemma.js +4 -4
- package/src/log.js +116 -0
- package/src/matcher.js +32 -24
- package/src/metaTypeNames.js +3 -0
- package/src/mixins/file.js +46 -1
- package/src/mixins/logging.js +6 -6
- package/src/node/metastatement/bracketed.js +9 -0
- package/src/node/statement/bracketed.js +9 -0
- package/src/node/statement/combinator/bracketed.js +10 -0
- package/src/node/statement/combinator/equality.js +11 -0
- package/src/node/statement/equality.js +10 -0
- package/src/ocmbinator/bracketed.js +2 -5
- package/src/ocmbinator/equality.js +2 -5
- package/src/premise.js +13 -13
- package/src/rule.js +4 -4
- package/src/ruleNames.js +0 -2
- package/src/step/metaproof.js +32 -29
- package/src/step/proof.js +28 -0
- package/src/substitution/metastatementForMetavariable.js +10 -15
- package/src/substitution/statementForMetavariable.js +11 -16
- package/src/substitution/termForVariable.js +36 -0
- package/src/supposition.js +6 -6
- package/src/theorem.js +4 -4
- package/src/type.js +17 -7
- package/src/utilities/metaproof.js +62 -0
- package/src/utilities/node.js +73 -0
- package/src/utilities/proof.js +62 -0
- package/src/utilities/releaseContext.js +30 -12
- package/src/utilities/string.js +4 -53
- package/src/variable.js +4 -37
- package/src/verifier/metastatementForMetavariable/conclusion.js +9 -0
- package/src/verifier/metastatementForMetavariable/premise.js +9 -0
- package/src/verifier/metastatementForMetavariable.js +89 -0
- package/src/verifier/statementForMetavariable/conclusion.js +9 -0
- package/src/verifier/statementForMetavariable/premise.js +9 -0
- package/src/verifier/statementForMetavariable.js +105 -0
- package/src/verifier/termForVariable/consequence.js +9 -0
- package/src/verifier/termForVariable/supposition.js +9 -0
- package/src/verifier/termForVariable.js +89 -0
- package/src/verifier.js +74 -0
- package/src/verify/assertion/type.js +74 -74
- package/src/verify/axiom.js +2 -9
- package/src/verify/conclusion.js +1 -7
- package/src/verify/conjecture.js +67 -0
- package/src/verify/consequence.js +1 -7
- package/src/verify/declaration/combinator.js +0 -6
- package/src/verify/declaration/constructor.js +0 -6
- package/src/verify/declaration/topLevel.js +7 -6
- package/src/verify/declaration/type.js +0 -6
- package/src/verify/declaration/variable.js +0 -6
- package/src/verify/derivation.js +0 -12
- package/src/verify/label.js +0 -6
- package/src/verify/lemma.js +4 -11
- package/src/verify/metastatement/qualified.js +1 -8
- package/src/verify/metastatement/unqualified.js +1 -8
- package/src/verify/metastatement.js +0 -6
- package/src/verify/premise.js +1 -7
- package/src/verify/proof.js +1 -7
- package/src/verify/rule.js +2 -9
- package/src/verify/ruleDerivation.js +0 -12
- package/src/verify/ruleProof.js +1 -7
- package/src/verify/statement/qualified.js +54 -20
- package/src/verify/statement/unqualified.js +1 -8
- package/src/verify/statement.js +65 -95
- package/src/verify/statementAsCombinator.js +3 -9
- package/src/verify/supposition.js +1 -7
- package/src/verify/term.js +3 -21
- package/src/verify/termAsConstructor.js +5 -13
- package/src/verify/theorem.js +2 -9
- package/src/verify/type.js +4 -13
- package/src/verify/variable.js +4 -13
- package/bin/callbacks.js +0 -48
- package/lib/axiomLemmaTheorem.js +0 -190
- package/lib/callbacks.js +0 -75
- package/lib/context/release/combinator.js +0 -64
- package/lib/jsonTypes.js +0 -30
- package/lib/matcher/metastatementForMetavariable.js +0 -201
- package/lib/matcher/statementForMetavariable.js +0 -201
- package/lib/matcher/statementForVariable.js +0 -201
- package/lib/mixins/callbacks.js +0 -27
- package/lib/substitution/statementForVariable.js +0 -86
- package/lib/utilities/json.js +0 -187
- package/lib/utilities/substitution.js +0 -61
- package/lib/utilities/version.js +0 -32
- package/lib/versionChanges.js +0 -34
- package/src/callbacks.js +0 -39
- package/src/context/release/combinator.js +0 -39
- package/src/jsonTypes.js +0 -6
- package/src/matcher/metastatementForMetavariable/conclusion.js +0 -9
- package/src/matcher/metastatementForMetavariable/premise.js +0 -9
- package/src/matcher/metastatementForMetavariable.js +0 -99
- package/src/matcher/statementForMetavariable/conclusion.js +0 -9
- package/src/matcher/statementForMetavariable/premise.js +0 -9
- package/src/matcher/statementForMetavariable.js +0 -99
- 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/mixins/callbacks.js +0 -15
- package/src/substitution/statementForVariable.js +0 -64
- package/src/utilities/json.js +0 -264
- package/src/utilities/substitution.js +0 -79
- package/src/utilities/version.js +0 -30
- package/src/versionChanges.js +0 -11
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import matcher from "../matcher";
|
|
4
|
+
import bracketedMetastatementNode from "../node/metastatement/bracketed";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { BRACKETED_METASTATEMENT_DEPTH } from "../constants";
|
|
8
|
+
|
|
9
|
+
const bracketedMetastatementChildNodeQuery = nodeQuery('/metastatement/metastatement!');
|
|
10
|
+
|
|
11
|
+
export function matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB) {
|
|
12
|
+
let metastatementMatchesModuloBrackets = false;
|
|
13
|
+
|
|
14
|
+
if (!metastatementMatchesModuloBrackets) {
|
|
15
|
+
const nodeA = metastatementNodeA, ///
|
|
16
|
+
nodeB = metastatementNodeB, ///
|
|
17
|
+
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
18
|
+
|
|
19
|
+
metastatementMatchesModuloBrackets = nodeMatches; ///
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!metastatementMatchesModuloBrackets) {
|
|
23
|
+
const bracketedMetastatementChildNodeA = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeA);
|
|
24
|
+
|
|
25
|
+
if (bracketedMetastatementChildNodeA !== null) {
|
|
26
|
+
const nodeA = bracketedMetastatementChildNodeA, ///
|
|
27
|
+
nodeB = metastatementNodeB, ///
|
|
28
|
+
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
29
|
+
|
|
30
|
+
metastatementMatchesModuloBrackets = nodeMatches; ///
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!metastatementMatchesModuloBrackets) {
|
|
35
|
+
const bracketedMetastatementChildNodeB = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeB);
|
|
36
|
+
|
|
37
|
+
if (bracketedMetastatementChildNodeB !== null) {
|
|
38
|
+
const nodeA = metastatementNodeA, ///
|
|
39
|
+
nodeB = bracketedMetastatementChildNodeB, ///
|
|
40
|
+
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
41
|
+
|
|
42
|
+
metastatementMatchesModuloBrackets = nodeMatches; ///
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return metastatementMatchesModuloBrackets;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode) {
|
|
50
|
+
let bracketedMetastatementChildNode = null;
|
|
51
|
+
|
|
52
|
+
const nodeA = metastatementNode, ///
|
|
53
|
+
nodeB = bracketedMetastatementNode, ///
|
|
54
|
+
depth = BRACKETED_METASTATEMENT_DEPTH,
|
|
55
|
+
nonTerminalNodeMatches = matcher.matchNode(nodeA, nodeB, depth);
|
|
56
|
+
|
|
57
|
+
if (nonTerminalNodeMatches) {
|
|
58
|
+
bracketedMetastatementChildNode = bracketedMetastatementChildNodeQuery(metastatementNode);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return bracketedMetastatementChildNode;
|
|
62
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { rewriteNodes } from "occam-grammar-utilities";
|
|
4
|
+
import { lexersUtilities, parsersUtilities } from "occam-custom-grammars";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { LABEL_RULE_NAME, UNQUALIFIED_STATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME, CONSTRUCTOR_DECLARATIONRULE_NAME } from "../ruleNames";
|
|
8
|
+
|
|
9
|
+
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
10
|
+
|
|
11
|
+
const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
12
|
+
{ florenceParserFromCombinedCustomGrammar } = parsersUtilities;
|
|
13
|
+
|
|
14
|
+
const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
15
|
+
florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar),
|
|
16
|
+
florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
17
|
+
|
|
18
|
+
const termNodeQuery = nodeQuery("/constructorDeclaration/term!"),
|
|
19
|
+
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
20
|
+
metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
|
|
21
|
+
|
|
22
|
+
export function termNodeFromTermString(termString, lexer, parser) {
|
|
23
|
+
const ruleName = CONSTRUCTOR_DECLARATIONRULE_NAME,
|
|
24
|
+
content = `Constructor ${termString}
|
|
25
|
+
`,
|
|
26
|
+
node = nodeFromContentAndRuleName(content, ruleName, lexer, parser),
|
|
27
|
+
constructorDeclarationNode = node, ///
|
|
28
|
+
termNode = termNodeQuery(constructorDeclarationNode);
|
|
29
|
+
|
|
30
|
+
return termNode;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function labelNodeFromLabelString(labelString, lexer, parser) {
|
|
34
|
+
const content = labelString, ///
|
|
35
|
+
ruleName = LABEL_RULE_NAME,
|
|
36
|
+
node = nodeFromContentAndRuleName(content, ruleName, lexer, parser),
|
|
37
|
+
labelNode = node; ///
|
|
38
|
+
|
|
39
|
+
return labelNode;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function statementNodeFromStatementString(statementString, lexer, parser) {
|
|
43
|
+
const ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
44
|
+
content = `${statementString}
|
|
45
|
+
`,
|
|
46
|
+
node = nodeFromContentAndRuleName(content, ruleName, lexer, parser),
|
|
47
|
+
unqualifiedStatementNode = node, ///
|
|
48
|
+
statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
49
|
+
|
|
50
|
+
return statementNode;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function metastatementNodeFromMetastatementString(metastatementString, lexer, parser) {
|
|
54
|
+
const ruleName = UNQUALIFIED_METASTATEMENT_RULE_NAME,
|
|
55
|
+
content = `${metastatementString}
|
|
56
|
+
`,
|
|
57
|
+
node = nodeFromContentAndRuleName(content, ruleName, lexer, parser),
|
|
58
|
+
unqualifiedMetastatementNode = node, ///
|
|
59
|
+
metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
60
|
+
|
|
61
|
+
return metastatementNode;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function nodeFromContentAndRuleName(content, ruleName, lexer = florenceLexer, parser = florenceParser) {
|
|
65
|
+
const ruleMap = parser.getRuleMap(),
|
|
66
|
+
rule = ruleMap[ruleName],
|
|
67
|
+
tokens = lexer.tokenise(content),
|
|
68
|
+
node = parser.parse(tokens, rule);
|
|
69
|
+
|
|
70
|
+
rewriteNodes(node);
|
|
71
|
+
|
|
72
|
+
return node;
|
|
73
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import matcher from "../matcher";
|
|
4
|
+
import bracketedStatementNode from "../node/statement/bracketed";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
8
|
+
|
|
9
|
+
const bracketedStatementChildNodeQuery = nodeQuery('/statement/metaArgument!/statement!');
|
|
10
|
+
|
|
11
|
+
export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
|
|
12
|
+
let statementMatchesModuloBrackets = false;
|
|
13
|
+
|
|
14
|
+
if (!statementMatchesModuloBrackets) {
|
|
15
|
+
const nodeA = statementNodeA, ///
|
|
16
|
+
nodeB = statementNodeB, ///
|
|
17
|
+
nonTerminalNodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
18
|
+
|
|
19
|
+
statementMatchesModuloBrackets = nonTerminalNodeMatches; ///
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!statementMatchesModuloBrackets) {
|
|
23
|
+
const bracketedStatementChildNodeA = bracketedStatementChildNodeFromStatementNode(statementNodeA);
|
|
24
|
+
|
|
25
|
+
if (bracketedStatementChildNodeA !== null) {
|
|
26
|
+
const nodeA = bracketedStatementChildNodeA, ///
|
|
27
|
+
nodeB = statementNodeB, ///
|
|
28
|
+
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
29
|
+
|
|
30
|
+
statementMatchesModuloBrackets = nodeMatches; ///
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!statementMatchesModuloBrackets) {
|
|
35
|
+
const bracketedStatementChildNodeB = bracketedStatementChildNodeFromStatementNode(statementNodeB);
|
|
36
|
+
|
|
37
|
+
if (bracketedStatementChildNodeB !== null) {
|
|
38
|
+
const nodeA = statementNodeA, ///
|
|
39
|
+
nodeB = bracketedStatementChildNodeB, ///
|
|
40
|
+
nodeMatches = matcher.matchNode(nodeA, nodeB);
|
|
41
|
+
|
|
42
|
+
statementMatchesModuloBrackets = nodeMatches; ///
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return statementMatchesModuloBrackets;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
50
|
+
let bracketedStatementChildNode = null;
|
|
51
|
+
|
|
52
|
+
const nodeA = statementNode, ///
|
|
53
|
+
nodeB = bracketedStatementNode, ///
|
|
54
|
+
depth = BRACKETED_STATEMENT_DEPTH,
|
|
55
|
+
nonTerminalNodeMatches = matcher.matchNode(nodeA, nodeB, depth);
|
|
56
|
+
|
|
57
|
+
if (nonTerminalNodeMatches) {
|
|
58
|
+
bracketedStatementChildNode = bracketedStatementChildNodeQuery(statementNode);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return bracketedStatementChildNode;
|
|
62
|
+
}
|
|
@@ -35,7 +35,7 @@ export function createReleaseContext(dependency, dependentNames, context, callba
|
|
|
35
35
|
|
|
36
36
|
error = checkReleaseMatchesDependency(dependency, dependentNames, releaseContext);
|
|
37
37
|
|
|
38
|
-
if (error
|
|
38
|
+
if (error) {
|
|
39
39
|
callback(error);
|
|
40
40
|
|
|
41
41
|
return;
|
|
@@ -47,19 +47,25 @@ export function createReleaseContext(dependency, dependentNames, context, callba
|
|
|
47
47
|
}, context);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
export function initialiseReleaseContext(dependency, dependentName, verified, context) {
|
|
50
|
+
export function initialiseReleaseContext(dependency, dependentName, verified, context, callback) {
|
|
51
|
+
let error = null;
|
|
52
|
+
|
|
51
53
|
const { releaseContextMap } = context,
|
|
52
54
|
dependencyName = dependency.getName(),
|
|
53
55
|
releaseName = dependencyName, ///
|
|
54
56
|
releaseContext = releaseContextMap[releaseName] || null;
|
|
55
57
|
|
|
56
58
|
if (releaseContext === null) {
|
|
59
|
+
callback(error);
|
|
60
|
+
|
|
57
61
|
return;
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
const initialised = releaseContext.isInitialised();
|
|
61
65
|
|
|
62
66
|
if (initialised) {
|
|
67
|
+
callback(error);
|
|
68
|
+
|
|
63
69
|
return;
|
|
64
70
|
}
|
|
65
71
|
|
|
@@ -67,27 +73,39 @@ export function initialiseReleaseContext(dependency, dependentName, verified, co
|
|
|
67
73
|
|
|
68
74
|
if (verified) {
|
|
69
75
|
if (!releaseContextVerified) {
|
|
70
|
-
|
|
76
|
+
error = `Unable to initialise the '${releaseName}' dependency's context because its '${dependentName}' dependent is a package.`;
|
|
71
77
|
|
|
72
|
-
|
|
78
|
+
callback(error);
|
|
73
79
|
|
|
74
80
|
return;
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
|
|
78
|
-
verified = releaseContextVerified; ///
|
|
79
|
-
|
|
80
84
|
dependentName = releaseName; ///
|
|
81
85
|
|
|
86
|
+
verified = releaseContextVerified; ///
|
|
87
|
+
|
|
82
88
|
const dependencies = releaseContext.getDependencies();
|
|
83
89
|
|
|
84
|
-
dependencies.
|
|
85
|
-
initialiseReleaseContext(dependency, dependentName, verified, context)
|
|
86
|
-
|
|
90
|
+
dependencies.asynchronousForEachDependency((dependency, next, done) => {
|
|
91
|
+
initialiseReleaseContext(dependency, dependentName, verified, context, (error) => {
|
|
92
|
+
if (error) {
|
|
93
|
+
callback(error);
|
|
87
94
|
|
|
88
|
-
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
89
97
|
|
|
90
|
-
|
|
98
|
+
next();
|
|
99
|
+
});
|
|
100
|
+
}, done);
|
|
101
|
+
|
|
102
|
+
function done() {
|
|
103
|
+
const dependencyReleaseContexts = retrieveDependencyReleaseContexts(dependency, context);
|
|
104
|
+
|
|
105
|
+
releaseContext.initialise(dependencyReleaseContexts);
|
|
106
|
+
|
|
107
|
+
callback(error);
|
|
108
|
+
}
|
|
91
109
|
}
|
|
92
110
|
|
|
93
111
|
export default {
|
|
@@ -153,7 +171,7 @@ function createDependencyReleaseContexts(dependency, dependentNames, context, ca
|
|
|
153
171
|
dependencies.asynchronousForEachDependency((dependency, next, done) => {
|
|
154
172
|
const error = checkCyclicDependencyExists(dependency, dependentNames);
|
|
155
173
|
|
|
156
|
-
if (error
|
|
174
|
+
if (error) {
|
|
157
175
|
callback(error);
|
|
158
176
|
|
|
159
177
|
return;
|
package/src/utilities/string.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { nodeQuery } from "../utilities/query";
|
|
4
3
|
import { COMMA, EMPTY_STRING } from "../constants";
|
|
5
|
-
import { LABEL_RULE_NAME, UNQUALIFIED_STATEMENT_RULE_NAME, CONSTRUCTOR_DECLARATIONRULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
|
-
|
|
7
|
-
const termNodeQuery = nodeQuery("/constructorDeclaration/term!"),
|
|
8
|
-
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
9
|
-
metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
|
|
10
4
|
|
|
11
5
|
export function nodeAsString(node, tokens) {
|
|
12
6
|
let string = null;
|
|
@@ -51,56 +45,13 @@ export function nodesAsString(nodes, tokens) {
|
|
|
51
45
|
const string = nodes.reduce((string, node) => {
|
|
52
46
|
const nodeString = nodeAsString(node, tokens);
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
string = `${string}${COMMA}${nodeString}`;
|
|
58
|
-
}
|
|
48
|
+
string = (string === EMPTY_STRING) ?
|
|
49
|
+
nodeString :
|
|
50
|
+
`${string}${COMMA}${nodeString}`;
|
|
59
51
|
|
|
60
52
|
return string;
|
|
61
|
-
},
|
|
53
|
+
}, EMPTY_STRING);
|
|
62
54
|
|
|
63
55
|
return string;
|
|
64
56
|
}
|
|
65
57
|
|
|
66
|
-
export function termNodeFromTermString(termString, releaseContext) {
|
|
67
|
-
const ruleName = CONSTRUCTOR_DECLARATIONRULE_NAME,
|
|
68
|
-
content = `Constructor ${termString}
|
|
69
|
-
`,
|
|
70
|
-
node = releaseContext.nodeFromContentAndRuleName(content, ruleName),
|
|
71
|
-
constructorDeclarationNode = node, ///
|
|
72
|
-
termNode = termNodeQuery(constructorDeclarationNode);
|
|
73
|
-
|
|
74
|
-
return termNode;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export function labelNodeFromLabelString(labelString, releaseContext) {
|
|
78
|
-
const content = labelString, ///
|
|
79
|
-
ruleName = LABEL_RULE_NAME,
|
|
80
|
-
node = releaseContext.nodeFromContentAndRuleName(content, ruleName),
|
|
81
|
-
labelNode = node; ///
|
|
82
|
-
|
|
83
|
-
return labelNode;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export function statementNodeFromStatementString(statementString, releaseContext) {
|
|
87
|
-
const ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
88
|
-
content = `${statementString}
|
|
89
|
-
`,
|
|
90
|
-
node = releaseContext.nodeFromContentAndRuleName(content, ruleName),
|
|
91
|
-
unqualifiedStatementNode = node, ///
|
|
92
|
-
statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
93
|
-
|
|
94
|
-
return statementNode;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export function metastatementNodeFromMetastatementString(metastatementString, releaseContext) {
|
|
98
|
-
const ruleName = UNQUALIFIED_METASTATEMENT_RULE_NAME,
|
|
99
|
-
content = `${metastatementString}
|
|
100
|
-
`,
|
|
101
|
-
node = releaseContext.nodeFromContentAndRuleName(content, ruleName),
|
|
102
|
-
unqualifiedMetastatementNode = node, ///
|
|
103
|
-
metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
104
|
-
|
|
105
|
-
return metastatementNode;
|
|
106
|
-
}
|
package/src/variable.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
export default class Variable {
|
|
4
|
-
constructor(type, name
|
|
4
|
+
constructor(type, name) {
|
|
5
5
|
this.type = type;
|
|
6
6
|
this.name = name;
|
|
7
|
-
this.termNode = termNode;
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
getType() {
|
|
@@ -15,53 +14,21 @@ export default class Variable {
|
|
|
15
14
|
return this.name;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
getTermNode() {
|
|
19
|
-
return this.termNode;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
setTermNode(termNode) {
|
|
23
|
-
this.termNode = termNode;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
17
|
matchName(name) {
|
|
27
18
|
const matchesName = (this.name === name);
|
|
28
19
|
|
|
29
20
|
return matchesName;
|
|
30
21
|
}
|
|
31
22
|
|
|
32
|
-
isEqualTo(variable) {
|
|
33
|
-
let equalTo = false;
|
|
34
|
-
|
|
35
|
-
if (variable === this) {
|
|
36
|
-
equalTo = true;
|
|
37
|
-
} else {
|
|
38
|
-
const termNode = variable.getTermNode();
|
|
39
|
-
|
|
40
|
-
if (termNode === this.termNode) {
|
|
41
|
-
equalTo = true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return equalTo;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
23
|
asString(tokens) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (this.type === null) {
|
|
52
|
-
string = this.name;
|
|
53
|
-
} else {
|
|
54
|
-
const typeName = this.type.getName();
|
|
55
|
-
|
|
56
|
-
string = `${this.name}:${typeName}`;
|
|
57
|
-
}
|
|
24
|
+
const typeName = this.type.getName(),
|
|
25
|
+
string = `${this.name}:${typeName}`;
|
|
58
26
|
|
|
59
27
|
return string;
|
|
60
28
|
}
|
|
61
29
|
|
|
62
30
|
static fromTypeAndName(type, name) {
|
|
63
|
-
const
|
|
64
|
-
variable = new Variable(type, name, termNode);
|
|
31
|
+
const variable = new Variable(type, name);
|
|
65
32
|
|
|
66
33
|
return variable;
|
|
67
34
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetastatementForMetavariableVerifier from "../../verifier/metastatementForMetavariable";
|
|
4
|
+
|
|
5
|
+
class ConclusionMetastatementForMetavariableVerifier extends MetastatementForMetavariableVerifier {
|
|
6
|
+
static createSubstitutions = false;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const conclusionMetastatementForMetavariableVerifier = new ConclusionMetastatementForMetavariableVerifier();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetastatementForMetavariableVerifier from "../../verifier/metastatementForMetavariable";
|
|
4
|
+
|
|
5
|
+
class PremiseMetastatementForMetavariableVerifier extends MetastatementForMetavariableVerifier {
|
|
6
|
+
static createSubstitutions = true;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const premiseMetastatementForMetavariableVerifier = new PremiseMetastatementForMetavariableVerifier();
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Verifier from "../verifier";
|
|
4
|
+
import MetastatementForMetavariableSubstitution from "../substitution/metastatementForMetavariable";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
8
|
+
import { metavariableNameFromMetavariableNode } from "../utilities/query";
|
|
9
|
+
|
|
10
|
+
const metavariableNodeQuery = nodeQuery('/metastatement/metavariable!');
|
|
11
|
+
|
|
12
|
+
export default class MetastatementForMetavariableVerifier extends Verifier {
|
|
13
|
+
matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
|
|
14
|
+
let nonTerminalNodeMatches = false;
|
|
15
|
+
|
|
16
|
+
const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
|
|
17
|
+
nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName();
|
|
18
|
+
|
|
19
|
+
if (nonTerminalNodeBRuleName === nonTerminalNodeARuleName) {
|
|
20
|
+
const nonTerminalNodeARuleNameMetastatementRuleName = (nonTerminalNodeARuleName === METASTATEMENT_RULE_NAME),
|
|
21
|
+
nonTerminalNodeBRuleNameMetastatementRuleName = (nonTerminalNodeBRuleName === METASTATEMENT_RULE_NAME);
|
|
22
|
+
|
|
23
|
+
if (nonTerminalNodeARuleNameMetastatementRuleName && nonTerminalNodeBRuleNameMetastatementRuleName) {
|
|
24
|
+
const metastatementNodeA = nonTerminalNodeA, ///
|
|
25
|
+
metastatementNodeB = nonTerminalNodeB, ///
|
|
26
|
+
metastatementNodeMatches = this.matchMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions);
|
|
27
|
+
|
|
28
|
+
if (metastatementNodeMatches) {
|
|
29
|
+
nonTerminalNodeMatches = true; ///
|
|
30
|
+
} else {
|
|
31
|
+
nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return nonTerminalNodeMatches;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
matchMetastatementNode(metastatementNodeA, metastatementNodeB, substitutions) {
|
|
42
|
+
let metastatementNodeMatches = false;
|
|
43
|
+
|
|
44
|
+
const metavariableNodeA = metavariableNodeQuery(metastatementNodeA);
|
|
45
|
+
|
|
46
|
+
if (metavariableNodeA !== null) {
|
|
47
|
+
const metaVariableNodeMatches = this.matchMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions);
|
|
48
|
+
|
|
49
|
+
metastatementNodeMatches = metaVariableNodeMatches; ///
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return metastatementNodeMatches;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
matchMetavariableNode(metavariableNodeA, metastatementNodeB, substitutions) {
|
|
56
|
+
let metavariableNodeMatches;
|
|
57
|
+
|
|
58
|
+
const metavariableNameA = metavariableNameFromMetavariableNode(metavariableNodeA),
|
|
59
|
+
substitution = substitutions.find((substitution) => {
|
|
60
|
+
const metavariableName = substitution.getMetavariableName();
|
|
61
|
+
|
|
62
|
+
if (metavariableName === metavariableNameA) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
}) || null;
|
|
66
|
+
|
|
67
|
+
if (substitution !== null) {
|
|
68
|
+
const metastatementNode = metastatementNodeB, ///
|
|
69
|
+
substitutionNodesMatch = substitution.matchMetastatementNode(metastatementNode);
|
|
70
|
+
|
|
71
|
+
metavariableNodeMatches = substitutionNodesMatch; ///
|
|
72
|
+
} else {
|
|
73
|
+
const { createSubstitutions } = this.constructor;
|
|
74
|
+
|
|
75
|
+
if (createSubstitutions) {
|
|
76
|
+
const metavariableName = metavariableNameA, ///
|
|
77
|
+
metastatementNode = metastatementNodeB, ///
|
|
78
|
+
metastatementForMetavariableSubstitution = MetastatementForMetavariableSubstitution.fromMetavariableNameAndMetastatementNode(metavariableName, metastatementNode),
|
|
79
|
+
substitution = metastatementForMetavariableSubstitution; ///
|
|
80
|
+
|
|
81
|
+
substitutions.push(substitution);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
metavariableNodeMatches = true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return metavariableNodeMatches;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import StatementForMetavariableVerifier from "../../verifier/statementForMetavariable";
|
|
4
|
+
|
|
5
|
+
class ConclusionStatementForMetavariableVerifier extends StatementForMetavariableVerifier {
|
|
6
|
+
static createSubstitutions = false;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const conclusionStatementForMetavariableVerifier = new ConclusionStatementForMetavariableVerifier();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import StatementForMetavariableVerifier from "../../verifier/statementForMetavariable";
|
|
4
|
+
|
|
5
|
+
class PremiseStatementForMetavariableVerifier extends StatementForMetavariableVerifier {
|
|
6
|
+
static createSubstitutions = true;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const premiseStatementForMetavariableVerifier = new PremiseStatementForMetavariableVerifier();
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Verifier from "../verifier";
|
|
4
|
+
import StatementForMetavariableSubstitution from "../substitution/statementForMetavariable";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { metavariableNameFromMetavariableNode } from "../utilities/query";
|
|
8
|
+
import { STATEMENT_RULE_NAME, METASTATEMENT_RULE_NAME, META_ARGUMENT_RULE_NAME } from "../ruleNames";
|
|
9
|
+
|
|
10
|
+
const metavariableNodeQuery = nodeQuery('/metastatement/metavariable!'),
|
|
11
|
+
metaArgumentChildNodeNodeQuery = nodeQuery('/metaArgument/*!');
|
|
12
|
+
|
|
13
|
+
export default class StatementForMetavariableVerifier extends Verifier {
|
|
14
|
+
matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
|
|
15
|
+
let nonTerminalNodeMatches = false;
|
|
16
|
+
|
|
17
|
+
const nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
|
|
18
|
+
nonTerminalNodeBRuleNameMetaArgumentRuleName = (nonTerminalNodeBRuleName === META_ARGUMENT_RULE_NAME);
|
|
19
|
+
|
|
20
|
+
if (nonTerminalNodeBRuleNameMetaArgumentRuleName) {
|
|
21
|
+
const metaArgumentNodeB = nonTerminalNodeB, ///
|
|
22
|
+
metaArgumentChildNodeB = metaArgumentChildNodeNodeQuery(metaArgumentNodeB);
|
|
23
|
+
|
|
24
|
+
nonTerminalNodeB = metaArgumentChildNodeB; ///
|
|
25
|
+
|
|
26
|
+
nonTerminalNodeMatches = this.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
|
|
27
|
+
} else {
|
|
28
|
+
const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
|
|
29
|
+
nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
|
|
30
|
+
nonTerminalNodeARuleNameMetastatementRuleName = (nonTerminalNodeARuleName === METASTATEMENT_RULE_NAME),
|
|
31
|
+
nonTerminalNodeBRuleNameStatementRuleName = (nonTerminalNodeBRuleName === STATEMENT_RULE_NAME);
|
|
32
|
+
|
|
33
|
+
if (nonTerminalNodeARuleNameMetastatementRuleName && nonTerminalNodeBRuleNameStatementRuleName) {
|
|
34
|
+
const metastatementNodeA = nonTerminalNodeA, ///
|
|
35
|
+
statementNodeB = nonTerminalNodeB, ///
|
|
36
|
+
statementNodeMatches = this.matchStatementNode(metastatementNodeA, statementNodeB, substitutions);
|
|
37
|
+
|
|
38
|
+
if (statementNodeMatches) {
|
|
39
|
+
nonTerminalNodeMatches = true; ///
|
|
40
|
+
} else {
|
|
41
|
+
const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
|
|
42
|
+
nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
|
|
43
|
+
nodesA = nonTerminalNodeAChildNodes, ///
|
|
44
|
+
nodesB = nonTerminalNodeBChildNodes, ///
|
|
45
|
+
nodesMatch = this.matchNodes(nodesA, nodesB, substitutions);
|
|
46
|
+
|
|
47
|
+
nonTerminalNodeMatches = nodesMatch; ///
|
|
48
|
+
}
|
|
49
|
+
} else if (nonTerminalNodeBRuleName === nonTerminalNodeARuleName) {
|
|
50
|
+
nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return nonTerminalNodeMatches;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
matchStatementNode(metastatementNodeA, statementNodeB, substitutions) {
|
|
58
|
+
let statementNodeMatches = false;
|
|
59
|
+
|
|
60
|
+
const metavariableNodeA = metavariableNodeQuery(metastatementNodeA);
|
|
61
|
+
|
|
62
|
+
if (metavariableNodeA !== null) {
|
|
63
|
+
const metavariableNodeMatches = this.matchMetavariableNode(metavariableNodeA, statementNodeB, substitutions);
|
|
64
|
+
|
|
65
|
+
statementNodeMatches = metavariableNodeMatches; ///
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return statementNodeMatches;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
matchMetavariableNode(metavariableNodeA, statementNodeB, substitutions) {
|
|
72
|
+
let metavariableNodeMatches;
|
|
73
|
+
|
|
74
|
+
const metavariableNameA = metavariableNameFromMetavariableNode(metavariableNodeA),
|
|
75
|
+
substitution = substitutions.find((substitution) => {
|
|
76
|
+
const metavariableName = substitution.getMetavariableName();
|
|
77
|
+
|
|
78
|
+
if (metavariableName === metavariableNameA) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}) || null;
|
|
82
|
+
|
|
83
|
+
if (substitution !== null) {
|
|
84
|
+
const statementNode = statementNodeB, ///
|
|
85
|
+
substitutionNodesMatch = substitution.matchStatementNode(statementNode);
|
|
86
|
+
|
|
87
|
+
metavariableNodeMatches = substitutionNodesMatch; ///
|
|
88
|
+
} else {
|
|
89
|
+
const { createSubstitutions } = this.constructor;
|
|
90
|
+
|
|
91
|
+
if (createSubstitutions) {
|
|
92
|
+
const metavariableName = metavariableNameA, ///
|
|
93
|
+
statementNode = statementNodeB, ///
|
|
94
|
+
statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromMetavariableNameAndStatementNode(metavariableName, statementNode),
|
|
95
|
+
substitution = statementForMetavariableSubstitution; ///
|
|
96
|
+
|
|
97
|
+
substitutions.push(substitution);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
metavariableNodeMatches = true;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return metavariableNodeMatches;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import TermForVariableVerifier from "../../verifier/termForVariable";
|
|
4
|
+
|
|
5
|
+
class ConsequenceTermForVariableVerifier extends TermForVariableVerifier {
|
|
6
|
+
static createSubstitutions = false;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const consequenceTermForVariableVerifier = new ConsequenceTermForVariableVerifier();
|