occam-verify-cli 0.0.914 → 0.0.916
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/assignment/judgement.js +62 -0
- package/lib/axiomLemmaTheoremConjecture.js +4 -3
- package/lib/conclusion.js +5 -5
- package/lib/context/file.js +7 -7
- package/lib/context/local/intrinsicLevel.js +326 -0
- package/lib/context/local/metaLevel.js +290 -0
- package/lib/judgement.js +87 -0
- package/lib/metaConsequent.js +4 -4
- package/lib/metaLemmaMetatheorem.js +11 -11
- package/lib/metaSupposition.js +7 -7
- package/lib/metavariable.js +5 -5
- package/lib/premise.js +12 -12
- package/lib/rule.js +12 -12
- package/lib/verifier/node/metaLevel.js +214 -0
- package/lib/verifier/node/statementAsCombinator.js +9 -9
- package/lib/verifier/node/termAsConstructor.js +7 -7
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/conclusion.js +7 -7
- package/lib/verify/conjecture.js +3 -3
- package/lib/verify/containedAssertion.js +23 -4
- package/lib/verify/declaration.js +15 -15
- package/lib/verify/definedAssertion.js +18 -4
- package/lib/verify/derivation.js +3 -3
- package/lib/verify/frame.js +19 -19
- package/lib/verify/judgement.js +121 -0
- package/lib/verify/lemma.js +3 -3
- package/lib/verify/metaConsequent.js +7 -7
- package/lib/verify/metaDerivation.js +3 -3
- package/lib/verify/metaLemma.js +6 -6
- package/lib/verify/metaSubDerivation.js +3 -3
- package/lib/verify/metaSubproof.js +7 -6
- package/lib/verify/metaSupposition.js +9 -9
- package/lib/verify/metaSuppositions.js +3 -3
- package/lib/verify/metaproof.js +7 -6
- package/lib/verify/metaproofStep.js +16 -16
- package/lib/verify/metastatement/qualified.js +22 -22
- package/lib/verify/metastatement/unqualified.js +7 -7
- package/lib/verify/metastatement.js +37 -37
- package/lib/verify/metatheorem.js +6 -6
- package/lib/verify/metavariable.js +6 -6
- package/lib/verify/premise.js +9 -9
- package/lib/verify/premises.js +3 -3
- package/lib/verify/proof.js +4 -3
- package/lib/verify/rule.js +6 -6
- package/lib/verify/ruleDerivation.js +3 -3
- package/lib/verify/ruleProof.js +7 -6
- package/lib/verify/ruleProofStep.js +16 -16
- package/lib/verify/ruleSubDerivation.js +3 -3
- package/lib/verify/ruleSubproof.js +7 -6
- package/lib/verify/statement.js +4 -17
- package/lib/verify/subDerivation.js +3 -3
- package/lib/verify/subproof.js +4 -3
- package/lib/verify/termAsConstructor.js +3 -3
- package/lib/verify/theorem.js +4 -4
- package/package.json +2 -2
- package/src/assignment/judgement.js +30 -0
- package/src/axiomLemmaTheoremConjecture.js +4 -2
- package/src/conclusion.js +7 -7
- package/src/context/file.js +5 -5
- package/src/context/{local.js → local/intrinsicLevel.js} +25 -20
- package/src/context/{localMeta.js → local/metaLevel.js} +50 -45
- package/src/{frameAssertion.js → judgement.js} +5 -5
- package/src/metaConsequent.js +7 -7
- package/src/metaLemmaMetatheorem.js +11 -11
- package/src/metaSupposition.js +13 -13
- package/src/metavariable.js +6 -7
- package/src/premise.js +26 -26
- package/src/rule.js +12 -12
- package/src/verifier/node/{metastatement.js → metaLevel.js} +19 -21
- package/src/verifier/node/statementAsCombinator.js +8 -8
- package/src/verifier/node/termAsConstructor.js +6 -6
- package/src/verify/axiom.js +4 -3
- package/src/verify/conclusion.js +5 -6
- package/src/verify/conjecture.js +4 -3
- package/src/verify/containedAssertion.js +24 -3
- package/src/verify/declaration.js +15 -15
- package/src/verify/definedAssertion.js +23 -3
- package/src/verify/derivation.js +2 -2
- package/src/verify/frame.js +18 -18
- package/src/verify/judgement.js +169 -0
- package/src/verify/lemma.js +4 -3
- package/src/verify/metaConsequent.js +5 -6
- package/src/verify/metaDerivation.js +2 -2
- package/src/verify/metaLemma.js +8 -7
- package/src/verify/metaSubDerivation.js +2 -2
- package/src/verify/metaSubproof.js +7 -5
- package/src/verify/metaSupposition.js +7 -8
- package/src/verify/metaSuppositions.js +2 -2
- package/src/verify/metaproof.js +7 -5
- package/src/verify/metaproofStep.js +13 -17
- package/src/verify/metastatement/qualified.js +24 -24
- package/src/verify/metastatement/unqualified.js +6 -6
- package/src/verify/metastatement.js +36 -36
- package/src/verify/metatheorem.js +8 -7
- package/src/verify/metavariable.js +5 -5
- package/src/verify/premise.js +7 -8
- package/src/verify/premises.js +2 -2
- package/src/verify/proof.js +4 -2
- package/src/verify/rule.js +8 -7
- package/src/verify/ruleDerivation.js +2 -2
- package/src/verify/ruleProof.js +7 -5
- package/src/verify/ruleProofStep.js +13 -17
- package/src/verify/ruleSubDerivation.js +2 -2
- package/src/verify/ruleSubproof.js +7 -5
- package/src/verify/statement.js +2 -22
- package/src/verify/subDerivation.js +2 -2
- package/src/verify/subproof.js +4 -2
- package/src/verify/termAsConstructor.js +4 -3
- package/src/verify/theorem.js +5 -4
- package/lib/assignment/frameAssertion.js +0 -62
- package/lib/context/local.js +0 -320
- package/lib/context/localMeta.js +0 -284
- package/lib/frameAssertion.js +0 -87
- package/lib/verifier/node/metastatement.js +0 -214
- package/lib/verify/frameAssertion.js +0 -121
- package/src/assignment/frameAssertion.js +0 -30
- package/src/verify/frameAssertion.js +0 -169
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Judgement from "../judgement";
|
|
4
|
+
import verifyFrame from "../verify/frame";
|
|
5
|
+
import frameMetaType from "../metaType/frame";
|
|
6
|
+
import JudgementAssignment from "../assignment/judgement";
|
|
7
|
+
|
|
8
|
+
import { first } from "../utilities/array";
|
|
9
|
+
import { nodeQuery } from "../utilities/query";
|
|
10
|
+
|
|
11
|
+
const frameNodeQuery = nodeQuery("/judgement/frame!"),
|
|
12
|
+
metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
|
|
13
|
+
|
|
14
|
+
export default function verifyJudgement(judgementNode, assignments, derived, localContext) {
|
|
15
|
+
let judgementVerified;
|
|
16
|
+
|
|
17
|
+
const judgementString = localContext.nodeAsString(judgementNode);
|
|
18
|
+
|
|
19
|
+
localContext.trace(`Verifying the '${judgementString}' judgement...`, judgementNode);
|
|
20
|
+
|
|
21
|
+
const verifyJudgementFunctions = [
|
|
22
|
+
verifyDerivedJudgement,
|
|
23
|
+
verifyStatedJudgement
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
judgementVerified = verifyJudgementFunctions.some((verifyJudgementFunction) => {
|
|
27
|
+
const judgementVerified = verifyJudgementFunction(judgementNode, assignments, derived, localContext);
|
|
28
|
+
|
|
29
|
+
if (judgementVerified) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (judgementVerified) {
|
|
35
|
+
localContext.debug(`...verified the '${judgementString}' judgement.`, judgementNode);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return judgementVerified;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function verifyDerivedJudgement(judgementNode, assignments, derived, localContext) {
|
|
42
|
+
let derivedJudgementVerified = false;
|
|
43
|
+
|
|
44
|
+
if (derived) {
|
|
45
|
+
const judgementString = localContext.nodeAsString(judgementNode);
|
|
46
|
+
|
|
47
|
+
localContext.trace(`Verifying the '${judgementString}' derived judgement...`, judgementNode);
|
|
48
|
+
|
|
49
|
+
const metavariableNode = metavariableNodeQuery(judgementNode),
|
|
50
|
+
metavariableVerified = verifyMetavariable(metavariableNode, localContext);
|
|
51
|
+
|
|
52
|
+
if (metavariableVerified) {
|
|
53
|
+
const judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
|
|
54
|
+
|
|
55
|
+
if (judgement !== null) {
|
|
56
|
+
const frames = [],
|
|
57
|
+
frameNode = frameNodeQuery(judgementNode),
|
|
58
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
|
|
59
|
+
|
|
60
|
+
if (frameVerified) {
|
|
61
|
+
const firstFrame = first(frames),
|
|
62
|
+
frame = firstFrame, ///
|
|
63
|
+
frameSingular = frame.isSingular();
|
|
64
|
+
|
|
65
|
+
if (frameSingular) {
|
|
66
|
+
const declaration = frame.getDeclaration(),
|
|
67
|
+
metavariableNode = declaration.getMetavariableNode(),
|
|
68
|
+
metaLemma = localContext.findMetaLemmaByMetavariableNode(metavariableNode),
|
|
69
|
+
metatheorem = localContext.findMetatheoremByMetavariableNode(metavariableNode),
|
|
70
|
+
metaLemmaMetatheorem = (metaLemma || metatheorem); ///
|
|
71
|
+
|
|
72
|
+
if (metaLemmaMetatheorem !== null) {
|
|
73
|
+
const declarationMatchesMetaLemmaMetatheorem = declaration.matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem),
|
|
74
|
+
judgementMatchesMetaLemmaMetatheorem = judgement.matchMetaLemmaOrMetaTheorem(metaLemmaMetatheorem);
|
|
75
|
+
|
|
76
|
+
derivedJudgementVerified = (declarationMatchesMetaLemmaMetatheorem && judgementMatchesMetaLemmaMetatheorem);
|
|
77
|
+
} else {
|
|
78
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
79
|
+
|
|
80
|
+
localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, judgementNode);
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
const frameString = localContext.nodeAsString(frameNode);
|
|
84
|
+
|
|
85
|
+
localContext.debug(`The '${frameString}' is not singular.`, judgementNode);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
89
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
90
|
+
|
|
91
|
+
localContext.debug(`There is no judgement present for the '${metavariableString}' metavariable.`, judgementNode);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (derivedJudgementVerified) {
|
|
96
|
+
localContext.debug(`...verified the '${judgementString}' derived judgement.`, judgementNode);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return derivedJudgementVerified;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function verifyStatedJudgement(judgementNode, assignments, derived, localContext) {
|
|
104
|
+
let statedJudgementVerified = false;
|
|
105
|
+
|
|
106
|
+
if (!derived) {
|
|
107
|
+
const judgementString = localContext.nodeAsString(judgementNode);
|
|
108
|
+
|
|
109
|
+
localContext.trace(`Verifying the '${judgementString}' stated judgement...`, judgementNode);
|
|
110
|
+
|
|
111
|
+
const metavariableNode = metavariableNodeQuery(judgementNode),
|
|
112
|
+
metavariableVerified = verifyMetavariable(metavariableNode, localContext);
|
|
113
|
+
|
|
114
|
+
if (metavariableVerified) {
|
|
115
|
+
const frames = [],
|
|
116
|
+
frameNode = frameNodeQuery(judgementNode),
|
|
117
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
|
|
118
|
+
|
|
119
|
+
if (frameVerified) {
|
|
120
|
+
const firstFrame = first(frames),
|
|
121
|
+
frame = firstFrame, ///
|
|
122
|
+
judgement = Judgement.fromJudgementNodeFrameAndMetavariableNode(judgementNode, frame, metavariableNode),
|
|
123
|
+
judgementAssignment = JudgementAssignment.fromJudgement(judgement),
|
|
124
|
+
assignment = judgementAssignment;
|
|
125
|
+
|
|
126
|
+
assignments.push(assignment);
|
|
127
|
+
|
|
128
|
+
statedJudgementVerified = true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (statedJudgementVerified) {
|
|
133
|
+
localContext.debug(`...verified the '${judgementString}' stated judgement.`, judgementNode);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return statedJudgementVerified;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function verifyMetavariable(metavariableNode, localContext) {
|
|
141
|
+
let metavariableVerified = false;
|
|
142
|
+
|
|
143
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
144
|
+
|
|
145
|
+
localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
146
|
+
|
|
147
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
|
|
148
|
+
|
|
149
|
+
if (metavariable !== null) {
|
|
150
|
+
const metaType = metavariable.getMetaType();
|
|
151
|
+
|
|
152
|
+
if (metaType === frameMetaType) {
|
|
153
|
+
metavariableVerified = true;
|
|
154
|
+
} else {
|
|
155
|
+
const frameMetaTypeName = frameMetaType.getName(),
|
|
156
|
+
metaTypeString = metaType.asString();
|
|
157
|
+
|
|
158
|
+
localContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
localContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (metavariableVerified) {
|
|
165
|
+
localContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return metavariableVerified;
|
|
169
|
+
}
|
package/src/verify/lemma.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import Lemma from "../lemma";
|
|
4
4
|
import verifyProof from "../verify/proof";
|
|
5
|
-
import LocalContext from "../context/local";
|
|
6
5
|
import verifyLabels from "../verify/labels";
|
|
7
6
|
import verifyConsequent from "../verify/consequent";
|
|
8
7
|
import verifySuppositions from "../verify/suppositions";
|
|
8
|
+
import IntrinsicLevelLocalContext from "../context/local/intrinsicLevel";
|
|
9
9
|
|
|
10
10
|
import { first } from "../utilities/array";
|
|
11
11
|
import { EMPTY_STRING } from "../constants";
|
|
@@ -19,9 +19,10 @@ const proofNodeQuery = nodeQuery("/lemma/proof!"),
|
|
|
19
19
|
export default function verifyLemma(lemmaNode, fileContext) {
|
|
20
20
|
let lemmaVerified = false;
|
|
21
21
|
|
|
22
|
-
const
|
|
22
|
+
const intrinsicLevelLocalContext = IntrinsicLevelLocalContext.fromFileContext(fileContext),
|
|
23
|
+
labelNodes = labelNodesQuery(lemmaNode),
|
|
23
24
|
labelsString = fileContext.nodesAsString(labelNodes),
|
|
24
|
-
localContext =
|
|
25
|
+
localContext = intrinsicLevelLocalContext; ///
|
|
25
26
|
|
|
26
27
|
(labelsString === EMPTY_STRING) ?
|
|
27
28
|
fileContext.trace(`Verifying a lemma...`, lemmaNode) :
|
|
@@ -11,12 +11,12 @@ const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
|
11
11
|
unqualifiedStatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedStatement!"),
|
|
12
12
|
unqualifiedMetastatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedMetastatement!");
|
|
13
13
|
|
|
14
|
-
export default function verifyMetaConsequent(metaConsequentNode, metaConsequents, substitutions,
|
|
14
|
+
export default function verifyMetaConsequent(metaConsequentNode, metaConsequents, substitutions, localContext) {
|
|
15
15
|
let metaConsequentVerified = false;
|
|
16
16
|
|
|
17
|
-
const metaConsequentString =
|
|
17
|
+
const metaConsequentString = localContext.nodeAsString(metaConsequentNode);
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
localContext.trace(`Verifying the '${metaConsequentString}' meta-consequent...`, metaConsequentNode);
|
|
20
20
|
|
|
21
21
|
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(metaConsequentNode),
|
|
22
22
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaConsequentNode);
|
|
@@ -24,7 +24,6 @@ export default function verifyMetaConsequent(metaConsequentNode, metaConsequents
|
|
|
24
24
|
if (unqualifiedStatementNode !== null) {
|
|
25
25
|
const derived = false,
|
|
26
26
|
assignments = [],
|
|
27
|
-
localContext = localMetaContext, ///
|
|
28
27
|
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
29
28
|
|
|
30
29
|
metaConsequentVerified = unqualifiedStatementVerified; ///
|
|
@@ -33,7 +32,7 @@ export default function verifyMetaConsequent(metaConsequentNode, metaConsequents
|
|
|
33
32
|
if (unqualifiedMetastatementNode !== null) {
|
|
34
33
|
const derived = false,
|
|
35
34
|
assignments = [],
|
|
36
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived,
|
|
35
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
|
|
37
36
|
|
|
38
37
|
metaConsequentVerified = unqualifiedMetastatementVerified; ///
|
|
39
38
|
}
|
|
@@ -55,7 +54,7 @@ export default function verifyMetaConsequent(metaConsequentNode, metaConsequents
|
|
|
55
54
|
|
|
56
55
|
metaConsequents.push(metaConsequent);
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
localContext.debug(`...verified the '${metaConsequentString}' meta-consequent.`, metaConsequentNode);
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
return metaConsequentVerified;
|
|
@@ -6,13 +6,13 @@ import { nodesQuery } from "../utilities/query";
|
|
|
6
6
|
|
|
7
7
|
const metaproofStepNodesQuery = nodesQuery("/metaDerivation/metaproofStep|lastMetaproofStep");
|
|
8
8
|
|
|
9
|
-
export default function verifyMetaDerivation(metaDerivationNode, substitutions,
|
|
9
|
+
export default function verifyMetaDerivation(metaDerivationNode, substitutions, localContext) {
|
|
10
10
|
let metaDerivationVerified;
|
|
11
11
|
|
|
12
12
|
const metaproofStepNodes = metaproofStepNodesQuery(metaDerivationNode);
|
|
13
13
|
|
|
14
14
|
metaDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
|
|
15
|
-
const metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions,
|
|
15
|
+
const metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localContext);
|
|
16
16
|
|
|
17
17
|
if (metaproofStepVerified) {
|
|
18
18
|
return true;
|
package/src/verify/metaLemma.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import MetaLemma from "../metaLemma";
|
|
4
4
|
import verifyLabels from "../verify/labels";
|
|
5
5
|
import verifyMetaproof from "../verify/metaproof";
|
|
6
|
-
import LocalMetaContext from "../context/localMeta";
|
|
7
6
|
import verifyMetaConsequent from "../verify/metaConsequent";
|
|
7
|
+
import MetaLevelLocalContext from "../context/local/metaLevel";
|
|
8
8
|
import verifyMetaSuppositions from "../verify/metaSuppositions";
|
|
9
9
|
|
|
10
10
|
import { first } from "../utilities/array";
|
|
@@ -20,8 +20,7 @@ export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
|
20
20
|
let metaLemmaVerified = false;
|
|
21
21
|
|
|
22
22
|
const labelNodes = labelNodesQuery(metaLemmaNode),
|
|
23
|
-
labelsString = fileContext.nodesAsString(labelNodes)
|
|
24
|
-
localMetaContext = LocalMetaContext.fromFileContext(fileContext);
|
|
23
|
+
labelsString = fileContext.nodesAsString(labelNodes);
|
|
25
24
|
|
|
26
25
|
(labelsString === EMPTY_STRING) ?
|
|
27
26
|
fileContext.trace(`Verifying a meta-lLemma...`, metaLemmaNode) :
|
|
@@ -31,21 +30,23 @@ export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
|
31
30
|
labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
32
31
|
|
|
33
32
|
if (labelsVerified) {
|
|
34
|
-
const
|
|
33
|
+
const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
|
|
34
|
+
localContext = metaLevelLocalContext, ///
|
|
35
|
+
substitutions = [],
|
|
35
36
|
metaSuppositions = [],
|
|
36
37
|
metaSuppositionNodes = metaSuppositionsNodeQuery(metaLemmaNode),
|
|
37
|
-
metaSuppositionsVerified = verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, substitutions,
|
|
38
|
+
metaSuppositionsVerified = verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, substitutions, localContext);
|
|
38
39
|
|
|
39
40
|
if (metaSuppositionsVerified) {
|
|
40
41
|
const metaConsequents = [],
|
|
41
42
|
metaConsequentNode = metaConsequentNodeQuery(metaLemmaNode),
|
|
42
|
-
metaConsequentVerified = verifyMetaConsequent(metaConsequentNode, metaConsequents, substitutions,
|
|
43
|
+
metaConsequentVerified = verifyMetaConsequent(metaConsequentNode, metaConsequents, substitutions, localContext);
|
|
43
44
|
|
|
44
45
|
if (metaConsequentVerified) {
|
|
45
46
|
const metaproofNode = metaproofNodeQuery(metaLemmaNode),
|
|
46
47
|
firstMetaConsequent = first(metaConsequents),
|
|
47
48
|
metaConsequent = firstMetaConsequent, ///
|
|
48
|
-
metaproofVerified = verifyMetaproof(metaproofNode, metaConsequent, substitutions,
|
|
49
|
+
metaproofVerified = verifyMetaproof(metaproofNode, metaConsequent, substitutions, localContext);
|
|
49
50
|
|
|
50
51
|
if (metaproofVerified) {
|
|
51
52
|
const metaLemma = MetaLemma.fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(labels, metaSuppositions, metaConsequent, substitutions, fileContext);
|
|
@@ -4,14 +4,14 @@ import { nodesQuery } from "../utilities/query";
|
|
|
4
4
|
|
|
5
5
|
const metaproofStepNodesQuery = nodesQuery("/metaSubDerivation/metaproofStep|lastMetaproofStep");
|
|
6
6
|
|
|
7
|
-
export default function verifyMetaSubDerivation(metaSubDerivationNode, substitutions,
|
|
7
|
+
export default function verifyMetaSubDerivation(metaSubDerivationNode, substitutions, localContext) {
|
|
8
8
|
let metaSubDerivationVerified;
|
|
9
9
|
|
|
10
10
|
const metaproofStepNodes = metaproofStepNodesQuery(metaSubDerivationNode);
|
|
11
11
|
|
|
12
12
|
metaSubDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
|
|
13
13
|
const { verifyMetaproofStep } = verifyMetaSubDerivation,
|
|
14
|
-
metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions,
|
|
14
|
+
metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localContext);
|
|
15
15
|
|
|
16
16
|
if (metaproofStepVerified) {
|
|
17
17
|
return true;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import MetaLevelLocalContext from "../context/local/metaLevel";
|
|
4
4
|
import verifyMetaSuppositions from "../verify/metaSuppositions";
|
|
5
5
|
import verifyMetaSubDerivation from "../verify/metaSubDerivation";
|
|
6
6
|
|
|
@@ -9,18 +9,20 @@ import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
|
9
9
|
const suppositionNodesQuery = nodesQuery("/metaSubproof/supposition"),
|
|
10
10
|
metaSubDerivationNodeQuery = nodeQuery("/metaSubproof/metaSubDerivation");
|
|
11
11
|
|
|
12
|
-
export default function verifyMetaSubproof(metaSubproofNode, substitutions,
|
|
12
|
+
export default function verifyMetaSubproof(metaSubproofNode, substitutions, localContext) {
|
|
13
13
|
let metaSubproofVerified = false;
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
const metaLevelLocalContext = MetaLevelLocalContext.fromLocalContext(localContext);
|
|
16
|
+
|
|
17
|
+
localContext = metaLevelLocalContext; ///
|
|
16
18
|
|
|
17
19
|
const metaSuppositions = [],
|
|
18
20
|
suppositionNodes = suppositionNodesQuery(metaSubproofNode),
|
|
19
|
-
metaSuppositionsVerified = verifyMetaSuppositions(suppositionNodes, metaSuppositions,
|
|
21
|
+
metaSuppositionsVerified = verifyMetaSuppositions(suppositionNodes, metaSuppositions, localContext);
|
|
20
22
|
|
|
21
23
|
if (metaSuppositionsVerified) {
|
|
22
24
|
const metaSubDerivationNode = metaSubDerivationNodeQuery(metaSubproofNode),
|
|
23
|
-
metaSubDerivationVerified = verifyMetaSubDerivation(metaSubDerivationNode, substitutions,
|
|
25
|
+
metaSubDerivationVerified = verifyMetaSubDerivation(metaSubDerivationNode, substitutions, localContext);
|
|
24
26
|
|
|
25
27
|
if (metaSubDerivationVerified) {
|
|
26
28
|
metaSubproofVerified = true;
|
|
@@ -13,12 +13,12 @@ const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
|
13
13
|
unqualifiedStatementNodeQuery = nodeQuery("/metaSupposition/unqualifiedStatement!"),
|
|
14
14
|
unqualifiedMetastatementNodeQuery = nodeQuery("/metaSupposition/unqualifiedMetastatement!");
|
|
15
15
|
|
|
16
|
-
export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositions,
|
|
16
|
+
export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositions, localContext) {
|
|
17
17
|
let metaSuppositionVerified = false;
|
|
18
18
|
|
|
19
|
-
const metaSuppositionString =
|
|
19
|
+
const metaSuppositionString = localContext.nodeAsString(metaSuppositionNode);
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
localContext.trace(`Verifying the '${metaSuppositionString}' meta-supposition...`, metaSuppositionNode);
|
|
22
22
|
|
|
23
23
|
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(metaSuppositionNode),
|
|
24
24
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaSuppositionNode);
|
|
@@ -26,7 +26,6 @@ export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositi
|
|
|
26
26
|
if (unqualifiedStatementNode !== null) {
|
|
27
27
|
const derived = false,
|
|
28
28
|
assignments = [],
|
|
29
|
-
localContext = localMetaContext, ///
|
|
30
29
|
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
31
30
|
|
|
32
31
|
if (unqualifiedStatementVerified) {
|
|
@@ -39,10 +38,10 @@ export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositi
|
|
|
39
38
|
if (unqualifiedMetastatementNode !== null) {
|
|
40
39
|
const derived = false,
|
|
41
40
|
assignments = [],
|
|
42
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived,
|
|
41
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
|
|
43
42
|
|
|
44
43
|
if (unqualifiedMetastatementVerified) {
|
|
45
|
-
const localContext =
|
|
44
|
+
const localContext = localContext, ///
|
|
46
45
|
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
47
46
|
|
|
48
47
|
metaSuppositionVerified = assignmentAssigned; ///
|
|
@@ -71,9 +70,9 @@ export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositi
|
|
|
71
70
|
|
|
72
71
|
metaSuppositions.push(metaSupposition);
|
|
73
72
|
|
|
74
|
-
|
|
73
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
75
74
|
|
|
76
|
-
|
|
75
|
+
localContext.debug(`...verified the '${metaSuppositionString}' meta-supposition.`, metaSuppositionNode);
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
return metaSuppositionVerified;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyMetaSupposition from "../verify/metaSupposition";
|
|
4
4
|
|
|
5
|
-
export default function verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, substitutions,
|
|
5
|
+
export default function verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, substitutions, localContext) {
|
|
6
6
|
let metaSuppositionsVerified;
|
|
7
7
|
|
|
8
8
|
metaSuppositionsVerified = metaSuppositionNodes.every((metaSuppositionNode) => {
|
|
9
|
-
const metaSuppositionVerified = verifyMetaSupposition(metaSuppositionNode, metaSuppositions,
|
|
9
|
+
const metaSuppositionVerified = verifyMetaSupposition(metaSuppositionNode, metaSuppositions, localContext);
|
|
10
10
|
|
|
11
11
|
if (metaSuppositionVerified) {
|
|
12
12
|
return true;
|
package/src/verify/metaproof.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalMetaContext from "../context/localMeta";
|
|
4
3
|
import verifyMetaDerivation from "../verify/metaDerivation";
|
|
4
|
+
import MetaLevelLocalContext from "../context/local/metaLevel";
|
|
5
5
|
|
|
6
6
|
import { nodeQuery } from "../utilities/query";
|
|
7
7
|
|
|
8
8
|
const metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!");
|
|
9
9
|
|
|
10
|
-
export default function verifyMetaproof(metaproofNode, conclusion, substitutions,
|
|
10
|
+
export default function verifyMetaproof(metaproofNode, conclusion, substitutions, localContext) {
|
|
11
11
|
let metaproofVerified = false;
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
const metaLevelLocalContext = MetaLevelLocalContext.fromLocalContext(localContext);
|
|
14
|
+
|
|
15
|
+
localContext = metaLevelLocalContext; ///
|
|
14
16
|
|
|
15
17
|
const metaDerivationNode = metaDerivationNodeQuery(metaproofNode),
|
|
16
|
-
metaDerivationVerified = verifyMetaDerivation(metaDerivationNode, substitutions,
|
|
18
|
+
metaDerivationVerified = verifyMetaDerivation(metaDerivationNode, substitutions, localContext);
|
|
17
19
|
|
|
18
20
|
if (metaDerivationVerified) {
|
|
19
|
-
const lastMetaproofStep =
|
|
21
|
+
const lastMetaproofStep = localContext.getLastMetaproofStep(),
|
|
20
22
|
metaproofStep = lastMetaproofStep, ///
|
|
21
23
|
metastatementNode = metaproofStep.getMetastatementNode(),
|
|
22
24
|
conclusionMetastatementNode = conclusion.getMetastatementNode(),
|
|
@@ -18,7 +18,7 @@ const metaSubproofNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/metaSu
|
|
|
18
18
|
qualifiedMetastatementNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/qualifiedMetastatement!"),
|
|
19
19
|
unqualifiedMetastatementNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/unqualifiedMetastatement!");
|
|
20
20
|
|
|
21
|
-
export default function verifyMetaproofStep(metaproofStepNode, substitutions,
|
|
21
|
+
export default function verifyMetaproofStep(metaproofStepNode, substitutions, localContext) {
|
|
22
22
|
let metaproofStepVerified = false;
|
|
23
23
|
|
|
24
24
|
const metaSubproofNode = metaSubproofNodeQuery(metaproofStepNode),
|
|
@@ -32,20 +32,19 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
32
32
|
} else if (metaSubproofNode !== null) {
|
|
33
33
|
let metaSubproofVerified;
|
|
34
34
|
|
|
35
|
-
metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, substitutions,
|
|
35
|
+
metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, substitutions, localContext);
|
|
36
36
|
|
|
37
37
|
if (metaSubproofVerified) {
|
|
38
38
|
const metaproofStep = MetaproofStep.fromMetaSubproofNode(metaSubproofNode);
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
41
41
|
|
|
42
42
|
metaproofStepVerified = true;
|
|
43
43
|
}
|
|
44
44
|
} else if (qualifiedStatementNode !== null) {
|
|
45
45
|
let qualifiedStatementVerified;
|
|
46
46
|
|
|
47
|
-
const assignments = []
|
|
48
|
-
localContext = localMetaContext; ///
|
|
47
|
+
const assignments = []; ///
|
|
49
48
|
|
|
50
49
|
qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assignments, localContext);
|
|
51
50
|
|
|
@@ -59,7 +58,7 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
59
58
|
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
60
59
|
metaproofStep = MetaproofStep.fromStatementNode(statementNode);
|
|
61
60
|
|
|
62
|
-
|
|
61
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
63
62
|
|
|
64
63
|
metaproofStepVerified = true;
|
|
65
64
|
}
|
|
@@ -67,8 +66,7 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
67
66
|
let unqualifiedStatementVerified;
|
|
68
67
|
|
|
69
68
|
const derived = true,
|
|
70
|
-
assignments = []
|
|
71
|
-
localContext = localMetaContext;
|
|
69
|
+
assignments = [];
|
|
72
70
|
|
|
73
71
|
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
74
72
|
|
|
@@ -82,7 +80,7 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
82
80
|
const statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
83
81
|
metaproofStep = MetaproofStep.fromStatementNode(statementNode);
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
86
84
|
|
|
87
85
|
metaproofStepVerified = unqualifiedStatementVerified; ///
|
|
88
86
|
}
|
|
@@ -91,11 +89,10 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
91
89
|
|
|
92
90
|
const assignments = [];
|
|
93
91
|
|
|
94
|
-
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments,
|
|
92
|
+
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localContext);
|
|
95
93
|
|
|
96
94
|
if (qualifiedMetastatementVerified) {
|
|
97
|
-
const
|
|
98
|
-
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
95
|
+
const assignmentAssigned = assignAssignment(assignments, localContext);
|
|
99
96
|
|
|
100
97
|
qualifiedMetastatementVerified = assignmentAssigned; ///
|
|
101
98
|
}
|
|
@@ -104,7 +101,7 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
104
101
|
const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
|
|
105
102
|
metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
|
|
106
103
|
|
|
107
|
-
|
|
104
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
108
105
|
|
|
109
106
|
metaproofStepVerified = qualifiedMetastatementVerified; ///
|
|
110
107
|
}
|
|
@@ -114,11 +111,10 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
114
111
|
const derived = true,
|
|
115
112
|
assignments = [];
|
|
116
113
|
|
|
117
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived,
|
|
114
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
|
|
118
115
|
|
|
119
116
|
if (unqualifiedMetastatementVerified) {
|
|
120
|
-
const
|
|
121
|
-
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
117
|
+
const assignmentAssigned = assignAssignment(assignments, localContext);
|
|
122
118
|
|
|
123
119
|
unqualifiedMetastatementVerified = assignmentAssigned; ///
|
|
124
120
|
}
|
|
@@ -127,7 +123,7 @@ export default function verifyMetaproofStep(metaproofStepNode, substitutions, lo
|
|
|
127
123
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
128
124
|
metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
|
|
129
125
|
|
|
130
|
-
|
|
126
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
131
127
|
|
|
132
128
|
metaproofStepVerified = true;
|
|
133
129
|
}
|