occam-verify-cli 0.0.921 → 0.0.923
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/axiomLemmaTheoremConjecture.js +3 -4
- package/lib/conclusion.js +13 -43
- package/lib/constants.js +1 -5
- package/lib/context/local.js +386 -0
- package/lib/declaration.js +15 -15
- package/lib/metaLemmaMetatheorem.js +59 -59
- package/lib/mixins/context.js +17 -13
- package/lib/mixins/nodesVerifier/metaLevel.js +6 -6
- package/lib/premise.js +16 -94
- package/lib/{step/proof.js → proofStep.js} +1 -1
- package/lib/rule.js +1 -45
- package/lib/ruleNames.js +1 -9
- package/lib/substitution/statementForMetavariable.js +9 -1
- package/lib/substitution.js +1 -8
- package/lib/supposition.js +55 -1
- package/lib/utilities/customGrammar.js +2 -2
- package/lib/utilities/match.js +13 -50
- package/lib/utilities/node.js +2 -27
- package/lib/utilities/tokens.js +1 -8
- package/lib/utilities/verify.js +8 -24
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +29 -29
- package/lib/verifier/nodes/metaLevel.js +13 -13
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/conclusion.js +10 -11
- package/lib/verify/conjecture.js +3 -3
- package/lib/verify/declaration.js +6 -6
- package/lib/verify/lemma.js +3 -3
- package/lib/verify/metaLemma.js +13 -13
- package/lib/verify/metastatement.js +64 -64
- package/lib/verify/metatheorem.js +13 -13
- package/lib/verify/premise.js +11 -30
- package/lib/verify/proof.js +3 -4
- package/lib/verify/proofStep.js +5 -5
- package/lib/verify/rule.js +11 -11
- package/lib/verify/statement/qualified.js +35 -9
- package/lib/verify/statement/unqualified.js +1 -1
- package/lib/verify/subproof.js +3 -4
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/termAsConstructor.js +3 -3
- package/lib/verify/theorem.js +3 -3
- package/package.json +4 -4
- package/src/axiomLemmaTheoremConjecture.js +2 -4
- package/src/conclusion.js +15 -54
- package/src/constants.js +0 -1
- package/src/context/{local/intrinsicLevel.js → local.js} +182 -97
- package/src/declaration.js +19 -19
- package/src/metaLemmaMetatheorem.js +58 -58
- package/src/mixins/context.js +12 -9
- package/src/mixins/nodesVerifier/metaLevel.js +8 -8
- package/src/premise.js +25 -143
- package/src/rule.js +0 -67
- package/src/ruleNames.js +0 -2
- package/src/substitution/statementForMetavariable.js +14 -0
- package/src/substitution.js +0 -6
- package/src/supposition.js +46 -0
- package/src/utilities/customGrammar.js +1 -2
- package/src/utilities/match.js +13 -60
- package/src/utilities/node.js +3 -32
- package/src/utilities/tokens.js +0 -8
- package/src/utilities/verify.js +4 -20
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +36 -37
- package/src/verifier/nodes/metaLevel.js +17 -17
- package/src/verify/axiom.js +3 -4
- package/src/verify/conclusion.js +9 -13
- package/src/verify/conjecture.js +3 -4
- package/src/verify/declaration.js +7 -7
- package/src/verify/lemma.js +3 -4
- package/src/verify/metaLemma.js +24 -25
- package/src/verify/metastatement.js +64 -64
- package/src/verify/metatheorem.js +23 -24
- package/src/verify/premise.js +14 -46
- package/src/verify/proof.js +2 -4
- package/src/verify/proofStep.js +1 -1
- package/src/verify/rule.js +11 -12
- package/src/verify/statement/qualified.js +43 -9
- package/src/verify/statement/unqualified.js +1 -1
- package/src/verify/subproof.js +2 -4
- package/src/verify/supposition.js +1 -1
- package/src/verify/termAsConstructor.js +3 -4
- package/src/verify/theorem.js +3 -4
- package/lib/context/local/intrinsicLevel.js +0 -326
- package/lib/context/local/metaLevel.js +0 -282
- package/lib/metaConsequent.js +0 -108
- package/lib/metaSupposition.js +0 -160
- package/lib/node/metastatement/bracketed.js +0 -16
- package/lib/step/metaproof.js +0 -106
- package/lib/substitution/metastatementForMetavariable.js +0 -173
- package/lib/verify/metaConsequent.js +0 -50
- package/lib/verify/metaDerivation.js +0 -31
- package/lib/verify/metaSubDerivation.js +0 -25
- package/lib/verify/metaSubproof.js +0 -35
- package/lib/verify/metaSupposition.js +0 -61
- package/lib/verify/metaSuppositions.js +0 -28
- package/lib/verify/metaproof.js +0 -32
- package/lib/verify/metaproofStep.js +0 -98
- package/lib/verify/metastatement/qualified.js +0 -95
- package/lib/verify/metastatement/unqualified.js +0 -37
- package/lib/verify/metastatementAsContainedAssertion.js +0 -109
- package/lib/verify/metastatementAsDefinedAssertion.js +0 -132
- package/lib/verify/metavariableAgainstMetastatement.js +0 -44
- package/src/context/local/metaLevel.js +0 -191
- package/src/metaConsequent.js +0 -83
- package/src/metaSupposition.js +0 -127
- package/src/node/metastatement/bracketed.js +0 -9
- package/src/step/metaproof.js +0 -73
- package/src/substitution/metastatementForMetavariable.js +0 -90
- package/src/verify/metaConsequent.js +0 -61
- package/src/verify/metaDerivation.js +0 -23
- package/src/verify/metaSubDerivation.js +0 -22
- package/src/verify/metaSubproof.js +0 -34
- package/src/verify/metaSupposition.js +0 -78
- package/src/verify/metaSuppositions.js +0 -17
- package/src/verify/metaproof.js +0 -30
- package/src/verify/metaproofStep.js +0 -137
- package/src/verify/metastatement/qualified.js +0 -130
- package/src/verify/metastatement/unqualified.js +0 -34
- package/src/verify/metastatementAsContainedAssertion.js +0 -127
- package/src/verify/metastatementAsDefinedAssertion.js +0 -156
- package/src/verify/metavariableAgainstMetastatement.js +0 -42
- /package/src/{step/proof.js → proofStep.js} +0 -0
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import IntrinsicLevelLocalContext from "../../context/local/intrinsicLevel";
|
|
4
|
-
|
|
5
|
-
import { last, reverse } from "../../utilities/array";
|
|
6
|
-
|
|
7
|
-
class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
|
|
8
|
-
constructor(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps) {
|
|
9
|
-
super(context, variables, proofSteps, equivalences);
|
|
10
|
-
|
|
11
|
-
this.judgements = judgements;
|
|
12
|
-
this.metavariables = metavariables;
|
|
13
|
-
this.metaproofSteps = metaproofSteps;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
getJudgements() {
|
|
17
|
-
let judgements = this.context.getJudgements();
|
|
18
|
-
|
|
19
|
-
judgements = [ ///
|
|
20
|
-
...this.judgements,
|
|
21
|
-
...judgements
|
|
22
|
-
]
|
|
23
|
-
|
|
24
|
-
return judgements;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
getMetavariables() {
|
|
28
|
-
let metavariables = this.context.getMetavariables();
|
|
29
|
-
|
|
30
|
-
metavariables = [ ///
|
|
31
|
-
...this.metavariables,
|
|
32
|
-
...metavariables
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
return metavariables;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getMetaproofSteps() {
|
|
39
|
-
let metaproofSteps = this.context.getMetaproofSteps();
|
|
40
|
-
|
|
41
|
-
metaproofSteps = [ ///
|
|
42
|
-
...metaproofSteps,
|
|
43
|
-
...this.metaproofSteps
|
|
44
|
-
];
|
|
45
|
-
|
|
46
|
-
return metaproofSteps;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
isIntrinsicLevel() {
|
|
50
|
-
const intrinsicLevel = false;
|
|
51
|
-
|
|
52
|
-
return intrinsicLevel;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getLastMetaproofStep() {
|
|
56
|
-
let lastMetaproofStep = null;
|
|
57
|
-
|
|
58
|
-
const metaproofStepsLength = this.metaproofSteps.length;
|
|
59
|
-
|
|
60
|
-
if (metaproofStepsLength > 0) {
|
|
61
|
-
lastMetaproofStep = last(this.metaproofSteps);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return lastMetaproofStep;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
addJudgement(judgement) {
|
|
68
|
-
let judgementAdded = false;
|
|
69
|
-
|
|
70
|
-
const metavariableNode = judgement.getMetavariableNode(),
|
|
71
|
-
judgementPresent = this.isJudgementPresentByMetavariableNode(metavariableNode);
|
|
72
|
-
|
|
73
|
-
if (!judgementPresent) {
|
|
74
|
-
this.judgements.push(judgement);
|
|
75
|
-
|
|
76
|
-
judgementAdded = true;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return judgementAdded;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
addMetavariable(metavariable) {
|
|
83
|
-
let metavariableAdded = false;
|
|
84
|
-
|
|
85
|
-
const node = metavariable.getName(),
|
|
86
|
-
metavariablePresent = this.metavariables.some((metavariable) => {
|
|
87
|
-
const metavariableMatchesNode = metavariable.matchNode(node);
|
|
88
|
-
|
|
89
|
-
if (metavariableMatchesNode) {
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
if (!metavariablePresent) {
|
|
95
|
-
this.metavariables.push(metavariable);
|
|
96
|
-
|
|
97
|
-
metavariableAdded = true;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return metavariableAdded;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
addMetaproofStep(metaproofStep) {
|
|
104
|
-
this.metaproofSteps.push(metaproofStep);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
matchMetastatementNode(metastatementNode) {
|
|
108
|
-
let metaproofSteps = this.getMetaproofSteps();
|
|
109
|
-
|
|
110
|
-
metaproofSteps = reverse(metaproofSteps); ///
|
|
111
|
-
|
|
112
|
-
const matchesMetastatementNode = metaproofSteps.some((metaproofStep) => {
|
|
113
|
-
const metaproofStepMatchesMetastatementNode = metaproofStep.matchMetastatementNode(metastatementNode);
|
|
114
|
-
|
|
115
|
-
if (metaproofStepMatchesMetastatementNode) {
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
return matchesMetastatementNode;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
findMetavariableByMetavariableNode(metavariableNode, metaLevelLocalContext) {
|
|
124
|
-
const node = metavariableNode, ///
|
|
125
|
-
metavariables = this.getMetavariables(),
|
|
126
|
-
metavariable = metavariables.find((metavariable) => {
|
|
127
|
-
const matches = metavariable.matchNode(node, metaLevelLocalContext);
|
|
128
|
-
|
|
129
|
-
if (matches) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
}) || null;
|
|
133
|
-
|
|
134
|
-
return metavariable;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
findJudgementByMetavariableNode(metavariableNode) {
|
|
138
|
-
const judgements = this.getJudgements(),
|
|
139
|
-
judgement = judgements.find((judgement) => {
|
|
140
|
-
const judgementMatchesMetavariableNode = judgement.matchMetavariableNode(metavariableNode);
|
|
141
|
-
|
|
142
|
-
if (judgementMatchesMetavariableNode) {
|
|
143
|
-
return true;
|
|
144
|
-
}
|
|
145
|
-
}) || null;
|
|
146
|
-
|
|
147
|
-
return judgement;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
isMetavariablePresentByMetavariableNode(metavariableNode, metaLevelLocalContext) {
|
|
151
|
-
const metavariable = this.findMetavariableByMetavariableNode(metavariableNode, metaLevelLocalContext),
|
|
152
|
-
metavariablePresent = (metavariable !== null);
|
|
153
|
-
|
|
154
|
-
return metavariablePresent;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
isJudgementPresentByMetavariableNode(metavariableNode) {
|
|
158
|
-
const judgement = this.findJudgementByMetavariableNode(metavariableNode),
|
|
159
|
-
judgementPresent = (judgement !== null);
|
|
160
|
-
|
|
161
|
-
return judgementPresent;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
static fromFileContext(fileContext) {
|
|
165
|
-
const context = fileContext, ///
|
|
166
|
-
variables = [],
|
|
167
|
-
proofSteps = [],
|
|
168
|
-
equivalences = [],
|
|
169
|
-
judgements = [],
|
|
170
|
-
metavariables = [],
|
|
171
|
-
metaproofSteps = [],
|
|
172
|
-
metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps);
|
|
173
|
-
|
|
174
|
-
return metaLevelLocalContext;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
static fromLocalContext(localContext) {
|
|
178
|
-
const context = localContext, ///
|
|
179
|
-
variables = [],
|
|
180
|
-
proofSteps = [],
|
|
181
|
-
equivalences = [],
|
|
182
|
-
judgements = [],
|
|
183
|
-
metavariables = [],
|
|
184
|
-
metaproofSteps = [],
|
|
185
|
-
metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps); ///
|
|
186
|
-
|
|
187
|
-
return metaLevelLocalContext;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
export default MetaLevelLocalContext;
|
package/src/metaConsequent.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
4
|
-
import MetaLevelLocalContext from "./context/local/metaLevel";
|
|
5
|
-
|
|
6
|
-
import { nodeAsString } from "./utilities/string";
|
|
7
|
-
import { statementNodeFromStatementString, metastatementNodeFromMetastatementString } from "./utilities/node";
|
|
8
|
-
|
|
9
|
-
export default class MetaConsequent {
|
|
10
|
-
constructor(metastatementNode, statementNode) {
|
|
11
|
-
this.metastatementNode = metastatementNode;
|
|
12
|
-
this.statementNode = statementNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getMetastatementNode() {
|
|
16
|
-
return this.metastatementNode;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getStatementNode() {
|
|
20
|
-
return this.statementNode;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext) {
|
|
24
|
-
let matchesMetastatementNode = false;
|
|
25
|
-
|
|
26
|
-
if (this.metastatementNode !== null) {
|
|
27
|
-
const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
|
|
28
|
-
nonTerminalNodeA = this.metastatementNode, ///
|
|
29
|
-
nonTerminalNodeB = metastatementNode, ///
|
|
30
|
-
localContextA = metaLevelLocalContext, ///
|
|
31
|
-
localContextB = localContext, ///
|
|
32
|
-
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
33
|
-
const verifiedAhead = true;
|
|
34
|
-
|
|
35
|
-
return verifiedAhead;
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
matchesMetastatementNode = nonTerminalNodeVerified; ///
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return matchesMetastatementNode;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
toJSON(tokens) {
|
|
45
|
-
const metastatementString = nodeAsString(this.metastatementNode, tokens),
|
|
46
|
-
statementString = nodeAsString(this.statementNode, tokens),
|
|
47
|
-
metastatement = metastatementString, ///
|
|
48
|
-
statement = statementString, ///
|
|
49
|
-
json = {
|
|
50
|
-
metastatement,
|
|
51
|
-
statement
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
return json;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
static fromStatementNode(statementNode) {
|
|
58
|
-
const metastatementNode = null,
|
|
59
|
-
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
60
|
-
|
|
61
|
-
return metaConsequent;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static fromMetastatementNode(metastatementNode) {
|
|
65
|
-
const statementNode = null,
|
|
66
|
-
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
67
|
-
|
|
68
|
-
return metaConsequent;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
static fromJSONAndFileContext(json, fileContext) {
|
|
72
|
-
const { metastatement, statement } = json,
|
|
73
|
-
metastatementString = metastatement, ///
|
|
74
|
-
statementString = statement, ///
|
|
75
|
-
lexer = fileContext.getLexer(),
|
|
76
|
-
parser = fileContext.getParser(),
|
|
77
|
-
metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
|
|
78
|
-
statementNode = statementNodeFromStatementString(statementString, lexer, parser),
|
|
79
|
-
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
80
|
-
|
|
81
|
-
return metaConsequent;
|
|
82
|
-
}
|
|
83
|
-
}
|
package/src/metaSupposition.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import MetaLevelLocalContext from "./context/local/metaLevel";
|
|
4
|
-
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
5
|
-
|
|
6
|
-
import { match } from "./utilities/array";
|
|
7
|
-
import { nodeAsString } from "./utilities/string";
|
|
8
|
-
import { nodeQuery, nodesQuery } from "./utilities/query";
|
|
9
|
-
import { statementNodeFromStatementString, metastatementNodeFromMetastatementString } from "./utilities/node";
|
|
10
|
-
|
|
11
|
-
const subproofAssertionNodeQuery = nodeQuery("/metastatement/subproofAssertion!"),
|
|
12
|
-
subproofAssertionMetastatementNodesQuery = nodesQuery("/subproofAssertion/metastatement"),
|
|
13
|
-
metaSubproofMetaSuppositionMetastatementNodesQuery = nodesQuery("/metaSubproof/metaSupposition/unqualifiedMetastatement/metastatement!"),
|
|
14
|
-
metaSubproofLastMetpProofStepMetastatementNodeQuery = nodeQuery("/metaSubproof/metaSubDerivation/lastMetpProofStep/unqualifiedMetastatement|qualifiedMetastatement/metastatement!");
|
|
15
|
-
|
|
16
|
-
export default class MetaSupposition {
|
|
17
|
-
constructor(metastatementNode, statementNode) {
|
|
18
|
-
this.metastatementNode = metastatementNode;
|
|
19
|
-
this.statementNode = statementNode;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getMetastatementNode() {
|
|
23
|
-
return this.metastatementNode;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
getStatementNode() {
|
|
27
|
-
return this.statementNode;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
matchMetaSubproofNode(metaSubproofNode, substitutions, fileContext, localContext) {
|
|
31
|
-
let matchesMetaSubproofNode = false;
|
|
32
|
-
|
|
33
|
-
if (this.metastatementNode !== null) {
|
|
34
|
-
const subproofAssertionNode = subproofAssertionNodeQuery(this.metastatementNode);
|
|
35
|
-
|
|
36
|
-
if (subproofAssertionNode !== null) {
|
|
37
|
-
const metaSubproofMetaSuppositionMetastatementNodes = metaSubproofMetaSuppositionMetastatementNodesQuery(metaSubproofNode),
|
|
38
|
-
metaSubproofLastMetpProofStepMetastatementNode = metaSubproofLastMetpProofStepMetastatementNodeQuery(metaSubproofNode),
|
|
39
|
-
metaSubproofMetastatementNodes = [
|
|
40
|
-
...metaSubproofMetaSuppositionMetastatementNodes,
|
|
41
|
-
metaSubproofLastMetpProofStepMetastatementNode
|
|
42
|
-
],
|
|
43
|
-
subproofAssertionMetastatementNodes = subproofAssertionMetastatementNodesQuery(subproofAssertionNode);
|
|
44
|
-
|
|
45
|
-
matchesMetaSubproofNode = match(subproofAssertionMetastatementNodes, metaSubproofMetastatementNodes, (subproofAssertionMetastatementNode, ruleSubproofMetastatementNode) => {
|
|
46
|
-
const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
|
|
47
|
-
nonTerminalNodeA = subproofAssertionMetastatementNode, ///
|
|
48
|
-
nonTerminalNodeB = ruleSubproofMetastatementNode, ///
|
|
49
|
-
localContextA = metaLevelLocalContext, ///
|
|
50
|
-
localContextB = localContext, ///
|
|
51
|
-
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
52
|
-
const verifiedAhead = true;
|
|
53
|
-
|
|
54
|
-
return verifiedAhead;
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
if (nonTerminalNodeVerified) {
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return matchesMetaSubproofNode;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext) {
|
|
68
|
-
let matchesMetastatementNode = false;
|
|
69
|
-
|
|
70
|
-
if (this.metastatementNode !== null) {
|
|
71
|
-
const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
|
|
72
|
-
nonTerminalNodeA = this.metastatementNode, ///
|
|
73
|
-
nonTerminalNodeB = metastatementNode, ///
|
|
74
|
-
localContextA = metaLevelLocalContext, ///
|
|
75
|
-
localContextB = localContext, ///
|
|
76
|
-
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
77
|
-
const verifiedAhead = true;
|
|
78
|
-
|
|
79
|
-
return verifiedAhead;
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
matchesMetastatementNode = nonTerminalNodeVerified; ///
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return matchesMetastatementNode;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
toJSON(tokens) {
|
|
89
|
-
const metastatementString = nodeAsString(this.metastatementNode, tokens),
|
|
90
|
-
statementString = nodeAsString(this.statementNode, tokens),
|
|
91
|
-
metastatement = metastatementString, ///
|
|
92
|
-
statement = statementString, ///
|
|
93
|
-
json = {
|
|
94
|
-
metastatement,
|
|
95
|
-
statement
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
return json;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
static fromStatementNode(statementNode) {
|
|
102
|
-
const metastatementNode = null,
|
|
103
|
-
metaSupposition = new MetaSupposition(metastatementNode, statementNode);
|
|
104
|
-
|
|
105
|
-
return metaSupposition;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
static fromMetastatementNode(metastatementNode) {
|
|
109
|
-
const statementNode = null,
|
|
110
|
-
metaSupposition = new MetaSupposition(metastatementNode, statementNode);
|
|
111
|
-
|
|
112
|
-
return metaSupposition;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
static fromJSONAndFileContext(json, fileContext) {
|
|
116
|
-
const { metastatement, statement } = json,
|
|
117
|
-
metastatementString = metastatement, ///
|
|
118
|
-
statementString = statement, ///
|
|
119
|
-
lexer = fileContext.getLexer(),
|
|
120
|
-
parser = fileContext.getParser(),
|
|
121
|
-
metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
|
|
122
|
-
statementNode = statementNodeFromStatementString(statementString, lexer, parser),
|
|
123
|
-
metaSupposition = new MetaSupposition(metastatementNode, statementNode);
|
|
124
|
-
|
|
125
|
-
return metaSupposition;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { metastatementNodeFromMetastatementString } from "../../utilities/node";
|
|
4
|
-
|
|
5
|
-
const bracketedMetastatementString = "(A)";
|
|
6
|
-
|
|
7
|
-
const bracketedMetastatementNode = metastatementNodeFromMetastatementString(bracketedMetastatementString);
|
|
8
|
-
|
|
9
|
-
export default bracketedMetastatementNode;
|
package/src/step/metaproof.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
export default class MetaproofStep {
|
|
4
|
-
constructor(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode) {
|
|
5
|
-
this.statementNode = statementNode;
|
|
6
|
-
this.ruleSubproofNode = ruleSubproofNode;
|
|
7
|
-
this.metaSubproofNode = metaSubproofNode;
|
|
8
|
-
this.metastatementNode = metastatementNode;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
getStatementNode() {
|
|
12
|
-
return this.statementNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getRuleSubproofNode() {
|
|
16
|
-
return this.ruleSubproofNode;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getMetaSubproofNode() {
|
|
20
|
-
return this.metaSubproofNode;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getMetastatementNode() {
|
|
24
|
-
return this.metastatementNode;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
matchMetastatementNode(metastatementNode) {
|
|
28
|
-
let matchesMetastatementNode = false;
|
|
29
|
-
|
|
30
|
-
if (this.metastatementNode !== null) {
|
|
31
|
-
matchesMetastatementNode = this.metastatementNode.match(metastatementNode);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return matchesMetastatementNode;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
static fromStatementNode(statementNode) {
|
|
38
|
-
const ruleSubproofNode = null,
|
|
39
|
-
metaSubproofNode = null,
|
|
40
|
-
metastatementNode = null,
|
|
41
|
-
metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
42
|
-
|
|
43
|
-
return metaproofStep;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
static fromRuleSubproofNode(ruleSubproofNode) {
|
|
47
|
-
const statementNode = null,
|
|
48
|
-
metaSubproofNode = null,
|
|
49
|
-
metastatementNode = null,
|
|
50
|
-
metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
51
|
-
|
|
52
|
-
return metaproofStep;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
static fromMetaSubproofNode(metaSubproofNode) {
|
|
56
|
-
const statementNode = null,
|
|
57
|
-
ruleSubproofNode = null,
|
|
58
|
-
metastatementNode = null,
|
|
59
|
-
metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
60
|
-
|
|
61
|
-
return metaproofStep;
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
static fromMetastatementNode(metastatementNode) {
|
|
66
|
-
const statementNode = null,
|
|
67
|
-
ruleSubproofNode = null,
|
|
68
|
-
metaSubproofNode = null,
|
|
69
|
-
metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
70
|
-
|
|
71
|
-
return metaproofStep;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Substitution from "../substitution";
|
|
4
|
-
|
|
5
|
-
import { nodeAsString } from "../utilities/string";
|
|
6
|
-
import { bracketedMetastatementChildNodeFromMetastatementNode } from "../utilities/match";
|
|
7
|
-
import { metavariableNodeFromMetavariableString, metastatementNodeFromMetastatementString } from "../utilities/node";
|
|
8
|
-
|
|
9
|
-
export default class MetastatementForMetavariableSubstitution extends Substitution {
|
|
10
|
-
constructor(metavariableNode, metastatementNode) {
|
|
11
|
-
super();
|
|
12
|
-
|
|
13
|
-
this.metavariableNode = metavariableNode;
|
|
14
|
-
this.metastatementNode = metastatementNode;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
getMetavariableNode() {
|
|
18
|
-
return this.metavariableNode;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getMetastatementNode() {
|
|
22
|
-
return this.metastatementNode;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
matchMetavariableNode(metavariableNode) {
|
|
26
|
-
const matchesMetavariableNode = this.metavariableNode.match(metavariableNode);
|
|
27
|
-
|
|
28
|
-
return matchesMetavariableNode;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
matchMetastatementNode(metastatementNode) {
|
|
32
|
-
let matchesMetastatementNode;
|
|
33
|
-
|
|
34
|
-
matchesMetastatementNode = this.metastatementNode.match(metastatementNode)
|
|
35
|
-
|
|
36
|
-
if (!matchesMetastatementNode) {
|
|
37
|
-
const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode);
|
|
38
|
-
|
|
39
|
-
if (bracketedMetastatementChildNode !== null) {
|
|
40
|
-
const metastatementNode = bracketedMetastatementChildNode; ///
|
|
41
|
-
|
|
42
|
-
matchesMetastatementNode = this.metastatementNode.match(metastatementNode);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return matchesMetastatementNode;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
toJSON(tokens) {
|
|
50
|
-
const metavariableString = nodeAsString(this.metavariableNode, tokens),
|
|
51
|
-
metastatementString = nodeAsString(this.metastatementNode, tokens),
|
|
52
|
-
metavariable = metavariableString, ///
|
|
53
|
-
metastatement = metastatementString, ///
|
|
54
|
-
json = {
|
|
55
|
-
metavariable,
|
|
56
|
-
metastatement
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
return json;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
static fromJSONAndFileContext(json, fileContext) {
|
|
63
|
-
const { metavariable, metastatement } = json,
|
|
64
|
-
metavariableString = metavariable, ///
|
|
65
|
-
metastatementString = metastatement, ///
|
|
66
|
-
lexer = fileContext.getLexer(),
|
|
67
|
-
parser = fileContext.getParser(),
|
|
68
|
-
metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
|
|
69
|
-
metavariableNode = metavariableNodeFromMetavariableString(metavariableString, lexer, parser),
|
|
70
|
-
metastatementForMetavariableSubstitution = new MetastatementForMetavariableSubstitution(metastatementNode, metavariableNode);
|
|
71
|
-
|
|
72
|
-
return metastatementForMetavariableSubstitution;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
static fromMetavariableNodeAndMetastatementNode(metavariableNode, metastatementNode) {
|
|
76
|
-
let metastatementForMetavariableSubstitution;
|
|
77
|
-
|
|
78
|
-
metastatementForMetavariableSubstitution = new MetastatementForMetavariableSubstitution(metavariableNode, metastatementNode);
|
|
79
|
-
|
|
80
|
-
const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode);
|
|
81
|
-
|
|
82
|
-
if (bracketedMetastatementChildNode !== null) {
|
|
83
|
-
const metastatementNode = bracketedMetastatementChildNode; ///
|
|
84
|
-
|
|
85
|
-
metastatementForMetavariableSubstitution = new MetastatementForMetavariableSubstitution(metavariableNode, metastatementNode);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return metastatementForMetavariableSubstitution;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import MetaConsequent from "../metaConsequent";
|
|
4
|
-
import verifyUnqualifiedStatement from "./statement/unqualified";
|
|
5
|
-
import verifyUnqualifiedMetastatement from "./metastatement/unqualified";
|
|
6
|
-
|
|
7
|
-
import { nodeQuery } from "../utilities/query";
|
|
8
|
-
|
|
9
|
-
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
10
|
-
metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
|
|
11
|
-
unqualifiedStatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedStatement!"),
|
|
12
|
-
unqualifiedMetastatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedMetastatement!");
|
|
13
|
-
|
|
14
|
-
export default function verifyMetaConsequent(metaConsequentNode, metaConsequents, substitutions, localContext) {
|
|
15
|
-
let metaConsequentVerified = false;
|
|
16
|
-
|
|
17
|
-
const metaConsequentString = localContext.nodeAsString(metaConsequentNode);
|
|
18
|
-
|
|
19
|
-
localContext.trace(`Verifying the '${metaConsequentString}' meta-consequent...`, metaConsequentNode);
|
|
20
|
-
|
|
21
|
-
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(metaConsequentNode),
|
|
22
|
-
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaConsequentNode);
|
|
23
|
-
|
|
24
|
-
if (unqualifiedStatementNode !== null) {
|
|
25
|
-
const derived = false,
|
|
26
|
-
assignments = [],
|
|
27
|
-
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
28
|
-
|
|
29
|
-
metaConsequentVerified = unqualifiedStatementVerified; ///
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (unqualifiedMetastatementNode !== null) {
|
|
33
|
-
const derived = false,
|
|
34
|
-
assignments = [],
|
|
35
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
|
|
36
|
-
|
|
37
|
-
metaConsequentVerified = unqualifiedMetastatementVerified; ///
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (metaConsequentVerified) {
|
|
41
|
-
let metaConsequent;
|
|
42
|
-
|
|
43
|
-
if (unqualifiedStatementNode !== null) {
|
|
44
|
-
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
45
|
-
|
|
46
|
-
metaConsequent = MetaConsequent.fromStatementNode(statementNode);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (unqualifiedMetastatementNode !== null) {
|
|
50
|
-
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
51
|
-
|
|
52
|
-
metaConsequent = MetaConsequent.fromMetastatementNode(metastatementNode);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
metaConsequents.push(metaConsequent);
|
|
56
|
-
|
|
57
|
-
localContext.debug(`...verified the '${metaConsequentString}' meta-consequent.`, metaConsequentNode);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return metaConsequentVerified;
|
|
61
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import verifyMetaproofStep from "../verify/metaproofStep";
|
|
4
|
-
|
|
5
|
-
import { nodesQuery } from "../utilities/query";
|
|
6
|
-
|
|
7
|
-
const metaproofStepNodesQuery = nodesQuery("/metaDerivation/metaproofStep|lastMetaproofStep");
|
|
8
|
-
|
|
9
|
-
export default function verifyMetaDerivation(metaDerivationNode, substitutions, localContext) {
|
|
10
|
-
let metaDerivationVerified;
|
|
11
|
-
|
|
12
|
-
const metaproofStepNodes = metaproofStepNodesQuery(metaDerivationNode);
|
|
13
|
-
|
|
14
|
-
metaDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
|
|
15
|
-
const metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localContext);
|
|
16
|
-
|
|
17
|
-
if (metaproofStepVerified) {
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
return metaDerivationVerified;
|
|
23
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { nodesQuery } from "../utilities/query";
|
|
4
|
-
|
|
5
|
-
const metaproofStepNodesQuery = nodesQuery("/metaSubDerivation/metaproofStep|lastMetaproofStep");
|
|
6
|
-
|
|
7
|
-
export default function verifyMetaSubDerivation(metaSubDerivationNode, substitutions, localContext) {
|
|
8
|
-
let metaSubDerivationVerified;
|
|
9
|
-
|
|
10
|
-
const metaproofStepNodes = metaproofStepNodesQuery(metaSubDerivationNode);
|
|
11
|
-
|
|
12
|
-
metaSubDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
|
|
13
|
-
const { verifyMetaproofStep } = verifyMetaSubDerivation,
|
|
14
|
-
metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localContext);
|
|
15
|
-
|
|
16
|
-
if (metaproofStepVerified) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
return metaSubDerivationVerified;
|
|
22
|
-
}
|