occam-verify-cli 0.0.922 → 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/conclusion.js +11 -41
- package/lib/constants.js +1 -5
- package/lib/context/local.js +15 -55
- package/lib/declaration.js +15 -15
- package/lib/metaLemmaMetatheorem.js +59 -59
- package/lib/mixins/nodesVerifier/metaLevel.js +6 -6
- package/lib/premise.js +14 -91
- 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/conclusion.js +10 -11
- package/lib/verify/declaration.js +6 -6
- package/lib/verify/metaLemma.js +12 -12
- package/lib/verify/metastatement.js +64 -64
- package/lib/verify/metatheorem.js +12 -12
- package/lib/verify/premise.js +11 -30
- package/lib/verify/proofStep.js +5 -5
- package/lib/verify/rule.js +9 -9
- package/lib/verify/statement/qualified.js +35 -9
- package/lib/verify/statement/unqualified.js +1 -1
- package/lib/verify/supposition.js +3 -3
- package/package.json +1 -1
- package/src/conclusion.js +13 -52
- package/src/constants.js +0 -1
- package/src/context/local.js +17 -64
- package/src/declaration.js +19 -19
- package/src/metaLemmaMetatheorem.js +58 -58
- package/src/mixins/nodesVerifier/metaLevel.js +8 -8
- package/src/premise.js +20 -137
- 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/conclusion.js +9 -13
- package/src/verify/declaration.js +7 -7
- package/src/verify/metaLemma.js +22 -22
- package/src/verify/metastatement.js +64 -64
- package/src/verify/metatheorem.js +21 -21
- package/src/verify/premise.js +14 -46
- package/src/verify/proofStep.js +1 -1
- package/src/verify/rule.js +8 -8
- package/src/verify/statement/qualified.js +43 -9
- package/src/verify/statement/unqualified.js +1 -1
- package/src/verify/supposition.js +1 -1
- 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 -34
- package/lib/verify/metaSupposition.js +0 -61
- package/lib/verify/metaSuppositions.js +0 -28
- package/lib/verify/metaproof.js +0 -31
- 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/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 -32
- package/src/verify/metaSupposition.js +0 -78
- package/src/verify/metaSuppositions.js +0 -17
- package/src/verify/metaproof.js +0 -28
- 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
|
@@ -11,10 +11,9 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
11
11
|
statementNodeQuery = nodeQuery("/statement!"),
|
|
12
12
|
nonTerminalNodeQuery = nodeQuery("/*"),
|
|
13
13
|
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
14
|
-
metastatementNodeQuery = nodeQuery("/metastatement!"),
|
|
15
14
|
metaArgumentStatementNodeQuery = nodeQuery("/metaArgument/statement!"),
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!"),
|
|
16
|
+
statementSubstitutionNodeQuery = nodeQuery("/statement/substitution");
|
|
18
17
|
|
|
19
18
|
class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
20
19
|
verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
@@ -22,54 +21,54 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
22
21
|
|
|
23
22
|
const nodeQueryMaps = [
|
|
24
23
|
{
|
|
25
|
-
nodeQueryA:
|
|
24
|
+
nodeQueryA: statementMetavariableNodeQuery,
|
|
26
25
|
nodeQueryB: metaArgumentStatementNodeQuery,
|
|
27
26
|
verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
|
|
28
27
|
let nonTerminalNodeVerified;
|
|
29
28
|
|
|
30
29
|
const metaArgumentStatementNodeB = nodeB, ///
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
statementMetavariableNodeA = nodeA, ///
|
|
31
|
+
statementSubstitutionNodeA = statementSubstitutionNodeQuery(nonTerminalNodeA),
|
|
32
|
+
statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode =
|
|
34
33
|
|
|
35
|
-
this.
|
|
34
|
+
this.verifyStatementMetavariableNodeAgainstMetaArgumentStatementNode(statementMetavariableNodeA, metaArgumentStatementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead);
|
|
36
35
|
|
|
37
|
-
nonTerminalNodeVerified =
|
|
36
|
+
nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode; ///
|
|
38
37
|
|
|
39
38
|
return nonTerminalNodeVerified;
|
|
40
39
|
}
|
|
41
40
|
},
|
|
42
41
|
{
|
|
43
|
-
nodeQueryA:
|
|
42
|
+
nodeQueryA: statementMetavariableNodeQuery,
|
|
44
43
|
nodeQueryB: statementNodeQuery,
|
|
45
44
|
verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
|
|
46
45
|
let nonTerminalNodeVerified;
|
|
47
46
|
|
|
48
47
|
const statementNodeB = nodeB, ///
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
statementMetavariableNodeA = nodeA, ///
|
|
49
|
+
statementSubstitutionNodeA = statementSubstitutionNodeQuery(nonTerminalNodeA),
|
|
50
|
+
statementMetavariableNodeVerifiedAgainstStatementNode =
|
|
52
51
|
|
|
53
|
-
this.
|
|
52
|
+
this.verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead);
|
|
54
53
|
|
|
55
|
-
nonTerminalNodeVerified =
|
|
54
|
+
nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstStatementNode; ///
|
|
56
55
|
|
|
57
56
|
return nonTerminalNodeVerified;
|
|
58
57
|
}
|
|
59
58
|
},
|
|
60
59
|
{
|
|
61
|
-
nodeQueryA:
|
|
60
|
+
nodeQueryA: statementNodeQuery,
|
|
62
61
|
nodeQueryB: statementNodeQuery,
|
|
63
62
|
verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
|
|
64
63
|
let nonTerminalNodeVerified;
|
|
65
64
|
|
|
66
65
|
const statementNodeB = nodeB, ///
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
statementNodeA = nodeA, ///
|
|
67
|
+
statementNodeVerifiedAgainstStatementNode =
|
|
69
68
|
|
|
70
|
-
this.
|
|
69
|
+
this.verifyStatementNodeAgainstStatementNode(statementNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead);
|
|
71
70
|
|
|
72
|
-
nonTerminalNodeVerified =
|
|
71
|
+
nonTerminalNodeVerified = statementNodeVerifiedAgainstStatementNode; ///
|
|
73
72
|
|
|
74
73
|
return nonTerminalNodeVerified;
|
|
75
74
|
}
|
|
@@ -116,35 +115,35 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
116
115
|
return nonTerminalNodeVerified;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
|
-
|
|
120
|
-
let
|
|
118
|
+
verifyStatementMetavariableNodeAgainstMetaArgumentStatementNode(statementMetavariableNodeA, metaArgumentStatementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
|
|
119
|
+
let statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode;
|
|
121
120
|
|
|
122
121
|
const statementNodeB = metaArgumentStatementNodeB, ///
|
|
123
|
-
substitutionNode =
|
|
124
|
-
metavariableNodeA =
|
|
122
|
+
substitutionNode = statementSubstitutionNodeA, ///
|
|
123
|
+
metavariableNodeA = statementMetavariableNodeA, ///
|
|
125
124
|
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
128
127
|
|
|
129
|
-
return
|
|
128
|
+
return statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode;
|
|
130
129
|
}
|
|
131
130
|
|
|
132
|
-
|
|
133
|
-
let
|
|
131
|
+
verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
|
|
132
|
+
let statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
134
133
|
|
|
135
|
-
const substitutionNode =
|
|
136
|
-
metavariableNodeA =
|
|
134
|
+
const substitutionNode = statementSubstitutionNodeA, ///
|
|
135
|
+
metavariableNodeA = statementMetavariableNodeA, ///
|
|
137
136
|
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
138
137
|
|
|
139
|
-
|
|
138
|
+
statementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
140
139
|
|
|
141
|
-
return
|
|
140
|
+
return statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
142
141
|
}
|
|
143
142
|
|
|
144
|
-
|
|
145
|
-
let
|
|
143
|
+
verifyStatementNodeAgainstStatementNode(statementNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
144
|
+
let statementNodeVerifiedAgainstStatementNode;
|
|
146
145
|
|
|
147
|
-
const nonTerminalNodeA =
|
|
146
|
+
const nonTerminalNodeA = statementNodeA, ///
|
|
148
147
|
nonTerminalNodeB = statementNodeB, ///
|
|
149
148
|
nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
|
|
150
149
|
nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
|
|
@@ -152,9 +151,9 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
152
151
|
childNodesB = nonTerminalNodeBChildNodes, ///
|
|
153
152
|
childNodesVerified = this.verifyChildNodes(childNodesA, childNodesB, substitutions, localContextA, localContextB, verifyAhead);
|
|
154
153
|
|
|
155
|
-
|
|
154
|
+
statementNodeVerifiedAgainstStatementNode = childNodesVerified; ///
|
|
156
155
|
|
|
157
|
-
return
|
|
156
|
+
return statementNodeVerifiedAgainstStatementNode;
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import NodesVerifier from "../../verifier/nodes";
|
|
4
4
|
import verifyVariableAgainstTerm from "../../verify/variableAgainstTerm";
|
|
5
|
-
import
|
|
5
|
+
import verifyMetavariableAgainstStatement from "../../verify/metavariableAgainstStatement";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../../utilities/query";
|
|
8
8
|
import { verifyNodes } from "../../utilities/verifier";
|
|
9
9
|
|
|
10
10
|
const termNodeQuery = nodeQuery("/term!"),
|
|
11
11
|
nonTerminalNodeQuery = nodeQuery("/*"),
|
|
12
|
+
statementNodeQuery = nodeQuery("/statement!"),
|
|
12
13
|
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
13
|
-
|
|
14
|
-
metastatementMetavariableNodeQuery = nodeQuery("/metastatement/metavariable!");
|
|
14
|
+
statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
|
|
15
15
|
|
|
16
16
|
class MetaLevelNodesVerifier extends NodesVerifier {
|
|
17
17
|
verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) {
|
|
@@ -19,18 +19,18 @@ class MetaLevelNodesVerifier extends NodesVerifier {
|
|
|
19
19
|
|
|
20
20
|
const nodeQueryMaps = [
|
|
21
21
|
{
|
|
22
|
-
nodeQueryA:
|
|
23
|
-
nodeQueryB:
|
|
22
|
+
nodeQueryA: statementMetavariableNodeQuery,
|
|
23
|
+
nodeQueryB: statementNodeQuery,
|
|
24
24
|
verifyNodes: (nodeA, nodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) => {
|
|
25
25
|
let nonTerminalNodeVerified;
|
|
26
26
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const statementNodeB = nodeB, ///
|
|
28
|
+
statementMetavariableNodeA = nodeA, ///
|
|
29
|
+
statementMetavariableNodeVerifiedAgainstStatementNode =
|
|
30
30
|
|
|
31
|
-
this.
|
|
31
|
+
this.verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
|
|
32
32
|
|
|
33
|
-
nonTerminalNodeVerified =
|
|
33
|
+
nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstStatementNode; ///
|
|
34
34
|
|
|
35
35
|
return nonTerminalNodeVerified;
|
|
36
36
|
}
|
|
@@ -77,16 +77,16 @@ class MetaLevelNodesVerifier extends NodesVerifier {
|
|
|
77
77
|
return nonTerminalNodeVerified;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
let
|
|
80
|
+
verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) {
|
|
81
|
+
let statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
82
82
|
|
|
83
|
-
const metavariableNode =
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
const metavariableNode = statementMetavariableNodeA, ///
|
|
84
|
+
statementNode = statementNodeB, ///
|
|
85
|
+
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutions, verifyAhead);
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
statementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
88
88
|
|
|
89
|
-
return
|
|
89
|
+
return statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
package/src/verify/conclusion.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Conclusion from "../conclusion";
|
|
4
|
-
import verifyUnqualifiedStatement from "
|
|
5
|
-
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
4
|
+
import verifyUnqualifiedStatement from "../verify/statement/unqualified";
|
|
6
5
|
|
|
7
6
|
import { nodeQuery } from "../utilities/query";
|
|
8
7
|
|
|
9
8
|
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
10
|
-
|
|
11
|
-
unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement!"),
|
|
12
|
-
unqualifiedMetastatementNodeQuery = nodeQuery("/conclusion/unqualifiedMetastatement!");
|
|
9
|
+
unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement!");
|
|
13
10
|
|
|
14
11
|
export default function verifyConclusion(conclusionNode, conclusions, localContext) {
|
|
15
12
|
let conclusionVerified = false;
|
|
@@ -18,8 +15,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
|
|
|
18
15
|
|
|
19
16
|
localContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
|
|
20
17
|
|
|
21
|
-
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode)
|
|
22
|
-
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode);
|
|
18
|
+
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode);
|
|
23
19
|
|
|
24
20
|
if (unqualifiedStatementNode !== null) {
|
|
25
21
|
const derived = false,
|
|
@@ -29,12 +25,12 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
|
|
|
29
25
|
conclusionVerified = unqualifiedStatementVerified; ///
|
|
30
26
|
}
|
|
31
27
|
|
|
32
|
-
if (
|
|
28
|
+
if (unqualifiedStatementNode !== null) {
|
|
33
29
|
const derived = false,
|
|
34
30
|
assignments = [],
|
|
35
|
-
|
|
31
|
+
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
36
32
|
|
|
37
|
-
conclusionVerified =
|
|
33
|
+
conclusionVerified = unqualifiedStatementVerified; ///
|
|
38
34
|
}
|
|
39
35
|
|
|
40
36
|
if (conclusionVerified) {
|
|
@@ -46,10 +42,10 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
|
|
|
46
42
|
conclusion = Conclusion.fromStatementNode(statementNode);
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
if (
|
|
50
|
-
const
|
|
45
|
+
if (unqualifiedStatementNode !== null) {
|
|
46
|
+
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
51
47
|
|
|
52
|
-
conclusion = Conclusion.
|
|
48
|
+
conclusion = Conclusion.fromStatementNode(statementNode);
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
conclusions.push(conclusion);
|
|
@@ -7,8 +7,8 @@ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
|
7
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
8
|
|
|
9
9
|
const referenceNodeQuery = nodeQuery("/declaration/reference!"),
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
statementNodeQuery = nodeQuery("/declaration/statement!"),
|
|
11
|
+
metavariableNodeQuery = nodeQuery("/reference/metavariable!");
|
|
12
12
|
|
|
13
13
|
export default function verifyDeclaration(declarationNode, declarations, localContext) {
|
|
14
14
|
let declarationVerified = false;
|
|
@@ -21,20 +21,20 @@ export default function verifyDeclaration(declarationNode, declarations, localCo
|
|
|
21
21
|
referenceVerified = verifyReference(referenceNode, localContext);
|
|
22
22
|
|
|
23
23
|
if (referenceVerified) {
|
|
24
|
-
const
|
|
24
|
+
const statementNode = statementNodeQuery(declarationNode);
|
|
25
25
|
|
|
26
|
-
const {
|
|
26
|
+
const { verifyStatement } = metaLevelNodeVerifier,
|
|
27
27
|
derived = false,
|
|
28
28
|
assignments = [],
|
|
29
|
-
|
|
29
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, localContext, () => {
|
|
30
30
|
const verifiedAhead = true;
|
|
31
31
|
|
|
32
32
|
return verifiedAhead;
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
if (
|
|
35
|
+
if (statementVerified) {
|
|
36
36
|
const metavariableNode = metavariableNodeQuery(referenceNode),
|
|
37
|
-
declaration = Declaration.
|
|
37
|
+
declaration = Declaration.fromMetavariableNodeAndStatementNode(metavariableNode, statementNode);
|
|
38
38
|
|
|
39
39
|
declarations.push(declaration);
|
|
40
40
|
|
package/src/verify/metaLemma.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import MetaLemma from "../metaLemma";
|
|
4
|
+
import verifyProof from "../verify/proof";
|
|
4
5
|
import LocalContext from "../context/local";
|
|
5
6
|
import verifyLabels from "../verify/labels";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import verifyMetaSuppositions from "../verify/metaSuppositions";
|
|
7
|
+
import verifyConsequent from "../verify/consequent";
|
|
8
|
+
import verifySuppositions from "../verify/suppositions";
|
|
9
9
|
|
|
10
10
|
import { first } from "../utilities/array";
|
|
11
11
|
import { EMPTY_STRING } from "../constants";
|
|
12
12
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
13
13
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const proofNodeQuery = nodeQuery("/metaLemma/proof!"),
|
|
15
|
+
labelNodesQuery = nodesQuery("/metaLemma/label"),
|
|
16
|
+
consequentNodeQuery = nodeQuery("/metaLemma/consequent!"),
|
|
17
|
+
suppositionsNodeQuery = nodesQuery("/metaLemma/supposition");
|
|
18
18
|
|
|
19
19
|
export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
20
20
|
let metaLemmaVerified = false;
|
|
@@ -32,24 +32,24 @@ export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
|
32
32
|
if (labelsVerified) {
|
|
33
33
|
const localContext = LocalContext.fromFileContext(fileContext), ///
|
|
34
34
|
substitutions = [],
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
suppositions = [],
|
|
36
|
+
suppositionNodes = suppositionsNodeQuery(metaLemmaNode),
|
|
37
|
+
suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, substitutions, localContext);
|
|
38
38
|
|
|
39
|
-
if (
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
if (suppositionsVerified) {
|
|
40
|
+
const consequents = [],
|
|
41
|
+
consequentNode = consequentNodeQuery(metaLemmaNode),
|
|
42
|
+
consequentVerified = verifyConsequent(consequentNode, consequents, substitutions, localContext);
|
|
43
43
|
|
|
44
|
-
if (
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
if (consequentVerified) {
|
|
45
|
+
const proofNode = proofNodeQuery(metaLemmaNode),
|
|
46
|
+
firstConsequent = first(consequents),
|
|
47
|
+
consequent = firstConsequent, ///
|
|
48
|
+
statementNode = consequent.getStatementNode(),
|
|
49
|
+
proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
|
|
50
50
|
|
|
51
|
-
if (
|
|
52
|
-
const metaLemma = MetaLemma.
|
|
51
|
+
if (proofVerified) {
|
|
52
|
+
const metaLemma = MetaLemma.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext);
|
|
53
53
|
|
|
54
54
|
fileContext.addMetaLemma(metaLemma);
|
|
55
55
|
|
|
@@ -2,142 +2,142 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyJudgement from "../verify/judgement";
|
|
4
4
|
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import verifyStatementAsDefinedAssertion from "./statementAsDefinedAssertion";
|
|
6
|
+
import verifyStatementAsContainedAssertion from "./statementAsContainedAssertion";
|
|
7
7
|
|
|
8
8
|
import { nodeQuery } from "../utilities/query";
|
|
9
9
|
|
|
10
|
-
const judgementNodeQuery = nodeQuery("/
|
|
10
|
+
const judgementNodeQuery = nodeQuery("/statement/judgement!");
|
|
11
11
|
|
|
12
|
-
function
|
|
13
|
-
let
|
|
12
|
+
function verifyStatement(statementNode, assignments, derived, localContext) {
|
|
13
|
+
let statementVerified;
|
|
14
14
|
|
|
15
|
-
const
|
|
15
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
16
16
|
|
|
17
|
-
localContext.trace(`Verifying the '${
|
|
17
|
+
localContext.trace(`Verifying the '${statementString}' statement...`, statementNode);
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
const verifyStatementFunctions = [
|
|
20
|
+
verifyStatementAsJudgement,
|
|
21
|
+
verifyStatementAsDefinedAssertion,
|
|
22
|
+
verifyStatementAsContainedAssertion,
|
|
23
|
+
verifyStatementAsIs
|
|
24
24
|
];
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
const
|
|
26
|
+
statementVerified = verifyStatementFunctions.some((verifyStatementFunction) => {
|
|
27
|
+
const statementVerified = verifyStatementFunction(statementNode, assignments, derived, localContext);
|
|
28
28
|
|
|
29
|
-
if (
|
|
29
|
+
if (statementVerified) {
|
|
30
30
|
return true;
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
if (
|
|
35
|
-
localContext.debug(`...verified the '${
|
|
34
|
+
if (statementVerified) {
|
|
35
|
+
localContext.debug(`...verified the '${statementString}' statement.`, statementNode);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
return
|
|
38
|
+
return statementVerified;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
Object.assign(metaLevelNodeVerifier, {
|
|
42
|
-
|
|
42
|
+
verifyStatement
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
export default
|
|
45
|
+
export default verifyStatement;
|
|
46
46
|
|
|
47
|
-
function
|
|
48
|
-
let
|
|
47
|
+
function verifyStatementAsJudgement(statementNode, assignments, derived, localContext) {
|
|
48
|
+
let statementVerifiedAsJudgement = false;
|
|
49
49
|
|
|
50
|
-
const
|
|
50
|
+
const statementJudgement = isStatementJudgement(statementNode);
|
|
51
51
|
|
|
52
|
-
if (
|
|
53
|
-
const
|
|
52
|
+
if (statementJudgement) {
|
|
53
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
54
54
|
|
|
55
|
-
localContext.trace(`Verifying the '${
|
|
55
|
+
localContext.trace(`Verifying the '${statementString}' statement as a judgement...`, statementNode);
|
|
56
56
|
|
|
57
|
-
const judgementNode = judgementNodeQuery(
|
|
57
|
+
const judgementNode = judgementNodeQuery(statementNode),
|
|
58
58
|
judgementVerified = verifyJudgement(judgementNode, assignments, derived, localContext);
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
statementVerifiedAsJudgement = judgementVerified; ///
|
|
61
61
|
|
|
62
|
-
if (
|
|
63
|
-
localContext.debug(`...verified the '${
|
|
62
|
+
if (statementVerifiedAsJudgement) {
|
|
63
|
+
localContext.debug(`...verified the '${statementString}' statement as a judgement.`, statementNode);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
return
|
|
67
|
+
return statementVerifiedAsJudgement;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
function
|
|
71
|
-
let
|
|
70
|
+
function verifyStatementAsIs(statementNode, assignments, derived, localContext) {
|
|
71
|
+
let statementVerifiedAsIs;
|
|
72
72
|
|
|
73
|
-
const
|
|
73
|
+
const statementJudgement = isStatementJudgement(statementNode);
|
|
74
74
|
|
|
75
|
-
if (!
|
|
76
|
-
const
|
|
75
|
+
if (!statementJudgement) {
|
|
76
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
77
77
|
|
|
78
|
-
localContext.trace(`Verifying the '${
|
|
78
|
+
localContext.trace(`Verifying the '${statementString}' statement as is...`, statementNode);
|
|
79
79
|
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
const verifyStatementAsIsFunctions = [
|
|
81
|
+
verifyDerivedStatementAsIs,
|
|
82
|
+
verifyStatedStatementAsIs
|
|
83
83
|
];
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
const
|
|
85
|
+
statementVerifiedAsIs = verifyStatementAsIsFunctions.some((verifyStatementAsIsFunction) => {
|
|
86
|
+
const statementVerifiedAsIs = verifyStatementAsIsFunction(statementNode, assignments, derived, localContext);
|
|
87
87
|
|
|
88
|
-
if (
|
|
88
|
+
if (statementVerifiedAsIs) {
|
|
89
89
|
return true;
|
|
90
90
|
}
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
-
if (
|
|
94
|
-
localContext.debug(`...verified the '${
|
|
93
|
+
if (statementVerifiedAsIs) {
|
|
94
|
+
localContext.debug(`...verified the '${statementString}' statement as is.`, statementNode);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
return
|
|
98
|
+
return statementVerifiedAsIs;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
function
|
|
102
|
-
let
|
|
101
|
+
function verifyDerivedStatementAsIs(statementNode, assignments, derived, localContext) {
|
|
102
|
+
let derivedStatementVerifiedAsIs = false;
|
|
103
103
|
|
|
104
104
|
if (derived) {
|
|
105
|
-
const
|
|
105
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
106
106
|
|
|
107
|
-
localContext.debug(`Cannot verify the derived '${
|
|
107
|
+
localContext.debug(`Cannot verify the derived '${statementString}' statement as is.`, statementNode);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
return
|
|
110
|
+
return derivedStatementVerifiedAsIs;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
function
|
|
114
|
-
let
|
|
113
|
+
function verifyStatedStatementAsIs(statementNode, assignments, derived, localContext) {
|
|
114
|
+
let statedStatementVerifiedAsIs = false;
|
|
115
115
|
|
|
116
116
|
if (!derived) {
|
|
117
|
-
const
|
|
117
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
118
118
|
|
|
119
|
-
localContext.trace(`Verifying the stated '${
|
|
119
|
+
localContext.trace(`Verifying the stated '${statementString}' statement as is...`, statementNode);
|
|
120
120
|
|
|
121
|
-
const nonTerminalNode =
|
|
121
|
+
const nonTerminalNode = statementNode, ///
|
|
122
122
|
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
123
123
|
const verifiedAhead = true;
|
|
124
124
|
|
|
125
125
|
return verifiedAhead;
|
|
126
126
|
});
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
statedStatementVerifiedAsIs = nonTerminalNodeVerified; ///
|
|
129
129
|
|
|
130
|
-
if (
|
|
131
|
-
localContext.debug(`...verified the stated '${
|
|
130
|
+
if (statedStatementVerifiedAsIs) {
|
|
131
|
+
localContext.debug(`...verified the stated '${statementString}' statement as is.`, statementNode);
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
return
|
|
135
|
+
return statedStatementVerifiedAsIs;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
function
|
|
139
|
-
const judgementNode = judgementNodeQuery(
|
|
140
|
-
|
|
138
|
+
function isStatementJudgement(statementNode) {
|
|
139
|
+
const judgementNode = judgementNodeQuery(statementNode),
|
|
140
|
+
statementJudgement = (judgementNode !== null);
|
|
141
141
|
|
|
142
|
-
return
|
|
142
|
+
return statementJudgement;
|
|
143
143
|
}
|