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
|
@@ -13,18 +13,18 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
13
13
|
nonTerminalNodeQuery = nodeQuery("/*"),
|
|
14
14
|
metavariableNodeQuery = nodeQuery("/metavariable!");
|
|
15
15
|
|
|
16
|
-
class
|
|
17
|
-
verifyNonTerminalNode(nonTerminalNode,
|
|
16
|
+
class MetaLevelNodeVerifier extends NodeVerifier {
|
|
17
|
+
verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
|
|
18
18
|
let nonTerminalNodeVerified;
|
|
19
19
|
|
|
20
20
|
const nodeQueryMaps = [
|
|
21
21
|
{
|
|
22
22
|
nodeQuery: termNodeQuery,
|
|
23
|
-
verifyNode: (node,
|
|
23
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
24
24
|
let nonTerminalNodeVerified;
|
|
25
25
|
|
|
26
26
|
const termNode = node, ///
|
|
27
|
-
termNodeVerified = this.verifyTermNode(termNode,
|
|
27
|
+
termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
|
|
28
28
|
|
|
29
29
|
nonTerminalNodeVerified = termNodeVerified; ///
|
|
30
30
|
|
|
@@ -33,11 +33,11 @@ class MetastatementNodeVerifier extends NodeVerifier {
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
nodeQuery: variableNodeQuery,
|
|
36
|
-
verifyNode: (node,
|
|
36
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
37
37
|
let nonTerminalNodeVerified;
|
|
38
38
|
|
|
39
39
|
const variableNode = node, ///
|
|
40
|
-
variableNodeVerified = this.verifyVariableNode(variableNode,
|
|
40
|
+
variableNodeVerified = this.verifyVariableNode(variableNode, localContext, verifyAhead);
|
|
41
41
|
|
|
42
42
|
nonTerminalNodeVerified = variableNodeVerified; ///
|
|
43
43
|
|
|
@@ -46,11 +46,11 @@ class MetastatementNodeVerifier extends NodeVerifier {
|
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
nodeQuery: metavariableNodeQuery,
|
|
49
|
-
verifyNode: (node,
|
|
49
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
50
50
|
let nonTerminalNodeVerified;
|
|
51
51
|
|
|
52
52
|
const metavariableNode = node, ///
|
|
53
|
-
metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode,
|
|
53
|
+
metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode, localContext, verifyAhead);
|
|
54
54
|
|
|
55
55
|
nonTerminalNodeVerified = metavariableNodeVerified; ///
|
|
56
56
|
|
|
@@ -59,51 +59,49 @@ class MetastatementNodeVerifier extends NodeVerifier {
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
nodeQuery: nonTerminalNodeQuery,
|
|
62
|
-
verifyNode: (node,
|
|
62
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
63
63
|
let nonTerminalNodeVerified;
|
|
64
64
|
|
|
65
65
|
const nonTerminalNode = node; ///
|
|
66
66
|
|
|
67
67
|
nonTerminalNodeVerified =
|
|
68
68
|
|
|
69
|
-
super.verifyNonTerminalNode(nonTerminalNode,
|
|
69
|
+
super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
|
|
70
70
|
|
|
71
71
|
return nonTerminalNodeVerified;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
];
|
|
75
75
|
|
|
76
|
-
const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode,
|
|
76
|
+
const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
|
|
77
77
|
|
|
78
78
|
nonTerminalNodeVerified = nodeVerified; ///
|
|
79
79
|
|
|
80
80
|
return nonTerminalNodeVerified;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
verifyMetavariableNode(metavariableNode,
|
|
84
|
-
const standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode,
|
|
83
|
+
verifyMetavariableNode(metavariableNode, localContext, verifyAhead) {
|
|
84
|
+
const standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, localContext, verifyAhead),
|
|
85
85
|
metavariableNodeVerified = standaloneMetavariableVerified; ///
|
|
86
86
|
|
|
87
87
|
return metavariableNodeVerified;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
verifyVariableNode(variableNode,
|
|
91
|
-
const
|
|
92
|
-
standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
|
|
90
|
+
verifyVariableNode(variableNode, localContext, verifyAhead) {
|
|
91
|
+
const standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
|
|
93
92
|
variableNodeVerified = standaloneVariableVerified; ///
|
|
94
93
|
|
|
95
94
|
return variableNodeVerified;
|
|
96
95
|
}
|
|
97
96
|
|
|
98
|
-
verifyTermNode(termNode,
|
|
99
|
-
const
|
|
100
|
-
standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
|
|
97
|
+
verifyTermNode(termNode, localContext, verifyAhead) {
|
|
98
|
+
const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
|
|
101
99
|
termNodeVerified = standaloneTermVerified; ///
|
|
102
100
|
|
|
103
101
|
return termNodeVerified;
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
|
|
107
|
-
const
|
|
105
|
+
const metaLevelNodeVerifier = new MetaLevelNodeVerifier();
|
|
108
106
|
|
|
109
|
-
export default
|
|
107
|
+
export default metaLevelNodeVerifier;
|
|
@@ -20,11 +20,11 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
20
20
|
const nodeQueryMaps = [
|
|
21
21
|
{
|
|
22
22
|
nodeQuery: termNodeQuery,
|
|
23
|
-
verifyNode: (node,
|
|
23
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
24
24
|
let nonTerminalNodeVerified;
|
|
25
25
|
|
|
26
26
|
const termNode = node, ///
|
|
27
|
-
termNodeVerified = this.verifyTermNode(termNode,
|
|
27
|
+
termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
|
|
28
28
|
|
|
29
29
|
nonTerminalNodeVerified = termNodeVerified; ///
|
|
30
30
|
|
|
@@ -33,11 +33,11 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
nodeQuery: typeNodeQuery,
|
|
36
|
-
verifyNode: (node,
|
|
36
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
37
37
|
let nonTerminalNodeVerified;
|
|
38
38
|
|
|
39
39
|
const typeNode = node, ///
|
|
40
|
-
typeNodeVerified = this.verifyTypeNode(typeNode,
|
|
40
|
+
typeNodeVerified = this.verifyTypeNode(typeNode, localContext, verifyAhead);
|
|
41
41
|
|
|
42
42
|
nonTerminalNodeVerified = typeNodeVerified; ///
|
|
43
43
|
|
|
@@ -46,11 +46,11 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
nodeQuery: statementNodeQuery,
|
|
49
|
-
verifyNode: (node,
|
|
49
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
50
50
|
let nonTerminalNodeVerified;
|
|
51
51
|
|
|
52
52
|
const statementNode = node, ///
|
|
53
|
-
statementNodeVerified = this.verifyStatementNode(statementNode,
|
|
53
|
+
statementNodeVerified = this.verifyStatementNode(statementNode, localContext, verifyAhead);
|
|
54
54
|
|
|
55
55
|
nonTerminalNodeVerified = statementNodeVerified; ///
|
|
56
56
|
|
|
@@ -59,14 +59,14 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
nodeQuery: nonTerminalNodeQuery,
|
|
62
|
-
verifyNode: (node,
|
|
62
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
63
63
|
let nonTerminalNodeVerified;
|
|
64
64
|
|
|
65
65
|
const nonTerminalNode = node; ///
|
|
66
66
|
|
|
67
67
|
nonTerminalNodeVerified =
|
|
68
68
|
|
|
69
|
-
super.verifyNonTerminalNode(nonTerminalNode,
|
|
69
|
+
super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
|
|
70
70
|
|
|
71
71
|
return nonTerminalNodeVerified;
|
|
72
72
|
}
|
|
@@ -18,11 +18,11 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
|
|
|
18
18
|
const nodeQueryMaps = [
|
|
19
19
|
{
|
|
20
20
|
nodeQuery: termNodeQuery,
|
|
21
|
-
verifyNode: (node,
|
|
21
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
22
22
|
let nonTerminalNodeVerified;
|
|
23
23
|
|
|
24
24
|
const termNode = node, ///
|
|
25
|
-
termNodeVerified = this.verifyTermNode(termNode,
|
|
25
|
+
termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
|
|
26
26
|
|
|
27
27
|
nonTerminalNodeVerified = termNodeVerified; ///
|
|
28
28
|
|
|
@@ -31,11 +31,11 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
nodeQuery: typeNodeQuery,
|
|
34
|
-
verifyNode: (node,
|
|
34
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
35
35
|
let nonTerminalNodeVerified;
|
|
36
36
|
|
|
37
37
|
const typeNode = node, ///
|
|
38
|
-
typeNodeVerified = this.verifyTypeNode(typeNode,
|
|
38
|
+
typeNodeVerified = this.verifyTypeNode(typeNode, localContext, verifyAhead);
|
|
39
39
|
|
|
40
40
|
nonTerminalNodeVerified = typeNodeVerified; ///
|
|
41
41
|
|
|
@@ -44,14 +44,14 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
nodeQuery: nonTerminalNodeQuery,
|
|
47
|
-
verifyNode: (node,
|
|
47
|
+
verifyNode: (node, localContext, verifyAhead) => {
|
|
48
48
|
let nonTerminalNodeVerified;
|
|
49
49
|
|
|
50
50
|
const nonTerminalNode = node; ///
|
|
51
51
|
|
|
52
52
|
nonTerminalNodeVerified =
|
|
53
53
|
|
|
54
|
-
super.verifyNonTerminalNode(nonTerminalNode,
|
|
54
|
+
super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
|
|
55
55
|
|
|
56
56
|
return nonTerminalNodeVerified;
|
|
57
57
|
}
|
package/src/verify/axiom.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Axiom from "../axiom";
|
|
4
|
-
import LocalContext from "../context/local";
|
|
5
4
|
import verifyLabels from "../verify/labels";
|
|
6
5
|
import verifyConsequent from "../verify/consequent";
|
|
7
6
|
import verifySuppositions from "../verify/suppositions";
|
|
7
|
+
import IntrinsicLevelLocalContext from "../context/local/intrinsicLevel";
|
|
8
8
|
|
|
9
9
|
import { first } from "../utilities/array";
|
|
10
10
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
@@ -16,9 +16,10 @@ const labelNodesQuery = nodesQuery("/axiom/label"),
|
|
|
16
16
|
export default function verifyAxiom(axiomNode, fileContext) {
|
|
17
17
|
let axiomVerified = false;
|
|
18
18
|
|
|
19
|
-
const
|
|
19
|
+
const intrinsicLevelLocalContext = IntrinsicLevelLocalContext.fromFileContext(fileContext),
|
|
20
|
+
labelNodes = labelNodesQuery(axiomNode),
|
|
20
21
|
labelsString = fileContext.nodesAsString(labelNodes),
|
|
21
|
-
localContext =
|
|
22
|
+
localContext = intrinsicLevelLocalContext; ///
|
|
22
23
|
|
|
23
24
|
fileContext.trace(`Verifying the '${labelsString}' axiom...`, axiomNode);
|
|
24
25
|
|
package/src/verify/conclusion.js
CHANGED
|
@@ -11,12 +11,12 @@ const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
|
11
11
|
unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement!"),
|
|
12
12
|
unqualifiedMetastatementNodeQuery = nodeQuery("/conclusion/unqualifiedMetastatement!");
|
|
13
13
|
|
|
14
|
-
export default function verifyConclusion(conclusionNode, conclusions,
|
|
14
|
+
export default function verifyConclusion(conclusionNode, conclusions, localContext) {
|
|
15
15
|
let conclusionVerified = false;
|
|
16
16
|
|
|
17
|
-
const conclusionString =
|
|
17
|
+
const conclusionString = localContext.nodeAsString(conclusionNode);
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
localContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
|
|
20
20
|
|
|
21
21
|
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode),
|
|
22
22
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode);
|
|
@@ -24,7 +24,6 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
|
|
|
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
|
conclusionVerified = unqualifiedStatementVerified; ///
|
|
@@ -33,7 +32,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
|
|
|
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
|
conclusionVerified = unqualifiedMetastatementVerified; ///
|
|
39
38
|
}
|
|
@@ -55,7 +54,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
|
|
|
55
54
|
|
|
56
55
|
conclusions.push(conclusion);
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
localContext.debug(`...verified the '${conclusionString}' conclusion.`, conclusionNode);
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
return conclusionVerified;
|
package/src/verify/conjecture.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import Conjecture from "../conjecture";
|
|
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 { nodeQuery, nodesQuery } from "../utilities/query";
|
|
@@ -18,9 +18,10 @@ const proofNodeQuery = nodeQuery("/conjecture/proof!"),
|
|
|
18
18
|
export default function verifyConjecture(conjectureNode, fileContext) {
|
|
19
19
|
let conjectureVerified = false;
|
|
20
20
|
|
|
21
|
-
const
|
|
21
|
+
const intrinsicLevelLocalContext = IntrinsicLevelLocalContext.fromFileContext(fileContext),
|
|
22
|
+
labelNodes = labelNodesQuery(conjectureNode),
|
|
22
23
|
labelsString = fileContext.nodesAsString(labelNodes),
|
|
23
|
-
localContext =
|
|
24
|
+
localContext = intrinsicLevelLocalContext; ///
|
|
24
25
|
|
|
25
26
|
fileContext.trace(`Verifying the '${labelsString}' conjecture...`, conjectureNode);
|
|
26
27
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
4
|
+
|
|
3
5
|
import { isAssertionNegated } from "../utilities/verify";
|
|
4
6
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
5
7
|
|
|
@@ -79,13 +81,32 @@ function verifyDerivedContainedAssertion(containedAssertionNode, assignments, de
|
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
function verifyStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
82
|
-
let
|
|
84
|
+
let statedContainedAssertionVerified = false;
|
|
83
85
|
|
|
84
86
|
if (!derived) {
|
|
85
87
|
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
86
88
|
|
|
87
|
-
localContext.
|
|
89
|
+
localContext.trace(`Verifying the stated '${containedAssertionString}' contained assertion...`, containedAssertionNode);
|
|
90
|
+
|
|
91
|
+
const intrinsicLevel = localContext.isIntrinsicLevel();
|
|
92
|
+
|
|
93
|
+
if (intrinsicLevel) {
|
|
94
|
+
localContext.debug(`The stated '${containedAssertionString}' contained assertion cannot be verified at intrinsic level.`, containedAssertionNode);
|
|
95
|
+
} else {
|
|
96
|
+
const nonTerminalNode = containedAssertionNode, ///
|
|
97
|
+
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
98
|
+
const verifiedAhead = true;
|
|
99
|
+
|
|
100
|
+
return verifiedAhead;
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
statedContainedAssertionVerified = nonTerminalNodeVerified; ///
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (statedContainedAssertionVerified) {
|
|
107
|
+
localContext.debug(`...verified the stated '${containedAssertionString}' contained assertion.`, containedAssertionNode);
|
|
108
|
+
}
|
|
88
109
|
}
|
|
89
110
|
|
|
90
|
-
return
|
|
111
|
+
return statedContainedAssertionVerified;
|
|
91
112
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import Declaration from "../declaration"
|
|
4
4
|
import referenceMetaType from "../metaType/reference";
|
|
5
|
-
import
|
|
5
|
+
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
8
|
|
|
@@ -10,23 +10,23 @@ const referenceNodeQuery = nodeQuery("/declaration/reference!"),
|
|
|
10
10
|
metavariableNodeQuery = nodeQuery("/reference/metavariable!"),
|
|
11
11
|
metastatementNodeQuery = nodeQuery("/declaration/metastatement!");
|
|
12
12
|
|
|
13
|
-
export default function verifyDeclaration(declarationNode, declarations,
|
|
13
|
+
export default function verifyDeclaration(declarationNode, declarations, localContext) {
|
|
14
14
|
let declarationVerified = false;
|
|
15
15
|
|
|
16
|
-
const declarationString =
|
|
16
|
+
const declarationString = localContext.nodeAsString(declarationNode);
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
localContext.trace(`Verifying the '${declarationString}' declaration...`, declarationNode);
|
|
19
19
|
|
|
20
20
|
const referenceNode = referenceNodeQuery(declarationNode),
|
|
21
|
-
referenceVerified = verifyReference(referenceNode,
|
|
21
|
+
referenceVerified = verifyReference(referenceNode, localContext);
|
|
22
22
|
|
|
23
23
|
if (referenceVerified) {
|
|
24
24
|
const metastatementNode = metastatementNodeQuery(declarationNode);
|
|
25
25
|
|
|
26
|
-
const { verifyMetastatement } =
|
|
26
|
+
const { verifyMetastatement } = metaLevelNodeVerifier,
|
|
27
27
|
derived = false,
|
|
28
28
|
assignments = [],
|
|
29
|
-
metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived,
|
|
29
|
+
metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localContext, () => {
|
|
30
30
|
const verifiedAhead = true;
|
|
31
31
|
|
|
32
32
|
return verifiedAhead;
|
|
@@ -43,21 +43,21 @@ export default function verifyDeclaration(declarationNode, declarations, localMe
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (declarationVerified) {
|
|
46
|
-
|
|
46
|
+
localContext.debug(`...verified the '${declarationString}' declaration.`, declarationNode);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
return declarationVerified;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
function verifyReference(referenceNode,
|
|
52
|
+
function verifyReference(referenceNode, localContext) {
|
|
53
53
|
let referenceVerified = false;
|
|
54
54
|
|
|
55
|
-
const referenceString =
|
|
55
|
+
const referenceString = localContext.nodeAsString(referenceNode);
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
localContext.trace(`Verifying the '${referenceString}' reference...`, referenceNode);
|
|
58
58
|
|
|
59
59
|
const metavariableNode = metavariableNodeQuery(referenceNode),
|
|
60
|
-
metavariable =
|
|
60
|
+
metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
|
|
61
61
|
|
|
62
62
|
if (metavariable !== null) {
|
|
63
63
|
const metaType = metavariable.getMetaType();
|
|
@@ -68,14 +68,14 @@ function verifyReference(referenceNode, localMetaContext) {
|
|
|
68
68
|
const referenceMetaTypeName = referenceMetaType.getName(),
|
|
69
69
|
metaTypeString = metaType.asString();
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
localContext.debug(`The '${referenceString}' metavariable's meta-type is '${metaTypeString}' when it should be '${referenceMetaTypeName}'.`, referenceNode);
|
|
72
72
|
}
|
|
73
73
|
} else {
|
|
74
|
-
|
|
74
|
+
localContext.debug(`The '${referenceString}' metavariable is not present'.`, referenceNode);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
if (referenceVerified) {
|
|
78
|
-
|
|
78
|
+
localContext.debug(`...verified the '${referenceString}' reference.`, referenceNode);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
return referenceVerified;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import verifyTerm from "./term";
|
|
4
|
+
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
4
5
|
|
|
5
6
|
import { first } from "../utilities/array";
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
@@ -105,13 +106,32 @@ function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, derive
|
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
108
|
-
let
|
|
109
|
+
let statedDefinedAssertionVerified = false;
|
|
109
110
|
|
|
110
111
|
if (!derived) {
|
|
111
112
|
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
112
113
|
|
|
113
|
-
localContext.
|
|
114
|
+
localContext.trace(`Verifying the stated '${definedAssertionString}' defined assertion...`, definedAssertionNode);
|
|
115
|
+
|
|
116
|
+
const intrinsicLevel = localContext.isIntrinsicLevel();
|
|
117
|
+
|
|
118
|
+
if (intrinsicLevel) {
|
|
119
|
+
localContext.debug(`The stated '${definedAssertionString}' defined assertion cannot be verified at intrinsic level.`, definedAssertionNode);
|
|
120
|
+
} else {
|
|
121
|
+
const nonTerminalNode = definedAssertionNode, ///
|
|
122
|
+
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
123
|
+
const verifiedAhead = true;
|
|
124
|
+
|
|
125
|
+
return verifiedAhead;
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
statedDefinedAssertionVerified = nonTerminalNodeVerified; ///
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (statedDefinedAssertionVerified) {
|
|
132
|
+
localContext.debug(`...verified the stated '${definedAssertionString}' defined assertion.`, definedAssertionNode);
|
|
133
|
+
}
|
|
114
134
|
}
|
|
115
135
|
|
|
116
|
-
return
|
|
136
|
+
return statedDefinedAssertionVerified;
|
|
117
137
|
}
|
package/src/verify/derivation.js
CHANGED
|
@@ -6,13 +6,13 @@ import { nodesQuery } from "../utilities/query";
|
|
|
6
6
|
|
|
7
7
|
const proofStepNodesQuery = nodesQuery("/derivation/proofStep|lastProofStep");
|
|
8
8
|
|
|
9
|
-
export default function verifyDerivation(ruleDerivationNode,
|
|
9
|
+
export default function verifyDerivation(ruleDerivationNode, localContext) {
|
|
10
10
|
let ruleDerivationVerified;
|
|
11
11
|
|
|
12
12
|
const proofStepNodes = proofStepNodesQuery(ruleDerivationNode);
|
|
13
13
|
|
|
14
14
|
ruleDerivationVerified = proofStepNodes.every((proofStepNode) => {
|
|
15
|
-
const proofStepVerified = verifyProofStep(proofStepNode,
|
|
15
|
+
const proofStepVerified = verifyProofStep(proofStepNode, localContext);
|
|
16
16
|
|
|
17
17
|
if (proofStepVerified) {
|
|
18
18
|
return true;
|
package/src/verify/frame.js
CHANGED
|
@@ -10,17 +10,17 @@ import { nodesQuery } from "../utilities/query";
|
|
|
10
10
|
const declarationNodesQuery = nodesQuery("/frame/declaration"),
|
|
11
11
|
metavariableNodesQuery = nodesQuery("/frame/metavariable");
|
|
12
12
|
|
|
13
|
-
export default function verifyFrame(frameNode, frames, assignments, derived,
|
|
13
|
+
export default function verifyFrame(frameNode, frames, assignments, derived, localContext) {
|
|
14
14
|
let frameVerified;
|
|
15
15
|
|
|
16
|
-
const frameString =
|
|
16
|
+
const frameString = localContext.nodeAsString(frameNode);
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
localContext.trace(`Verifying the '${frameString}' frame...`, frameNode);
|
|
19
19
|
|
|
20
20
|
const declarations = [],
|
|
21
21
|
declarationNodes = declarationNodesQuery(frameNode),
|
|
22
22
|
declarationsVerified = declarationNodes.every((declarationNode) => {
|
|
23
|
-
const declarationVerified = verifyDeclaration(declarationNode, declarations,
|
|
23
|
+
const declarationVerified = verifyDeclaration(declarationNode, declarations, localContext);
|
|
24
24
|
|
|
25
25
|
return declarationVerified;
|
|
26
26
|
});
|
|
@@ -28,7 +28,7 @@ export default function verifyFrame(frameNode, frames, assignments, derived, loc
|
|
|
28
28
|
if (declarationsVerified) {
|
|
29
29
|
const metavariableNodes = metavariableNodesQuery(frameNode),
|
|
30
30
|
metavariablesVerified = metavariableNodes.every((metavariableNode) => {
|
|
31
|
-
const metavariableVerified = verifyMetavariable(metavariableNode, declarations,
|
|
31
|
+
const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localContext);
|
|
32
32
|
|
|
33
33
|
return metavariableVerified;
|
|
34
34
|
});
|
|
@@ -43,48 +43,48 @@ export default function verifyFrame(frameNode, frames, assignments, derived, loc
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
if (frameVerified) {
|
|
46
|
-
|
|
46
|
+
localContext.debug(`...verified the '${frameString}' frame.`, frameNode);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
return frameVerified;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
function verifyMetavariable(metavariableNode, declarations,
|
|
52
|
+
function verifyMetavariable(metavariableNode, declarations, localContext) {
|
|
53
53
|
let metavariableVerified = false;
|
|
54
54
|
|
|
55
|
-
const metavariableString =
|
|
55
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
58
58
|
|
|
59
|
-
const metavariable =
|
|
59
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
|
|
60
60
|
|
|
61
61
|
if (metavariable !== null) {
|
|
62
62
|
const metaType = metavariable.getMetaType();
|
|
63
63
|
|
|
64
64
|
if (metaType === frameMetaType) {
|
|
65
|
-
const
|
|
65
|
+
const judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
|
|
66
66
|
|
|
67
|
-
if (
|
|
68
|
-
const
|
|
67
|
+
if (judgement !== null) {
|
|
68
|
+
const judgementDeclarations = judgement.getDeclarations();
|
|
69
69
|
|
|
70
|
-
push(declarations,
|
|
70
|
+
push(declarations, judgementDeclarations);
|
|
71
71
|
|
|
72
72
|
metavariableVerified = true;
|
|
73
73
|
} else {
|
|
74
|
-
|
|
74
|
+
localContext.debug(`There is no judgement for the '${metavariableString}' metavariable.`, metavariableNode);
|
|
75
75
|
}
|
|
76
76
|
} else {
|
|
77
77
|
const frameMetaTypeName = frameMetaType.getName(),
|
|
78
78
|
metaTypeString = metaType.asString();
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
localContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
|
|
81
81
|
}
|
|
82
82
|
} else {
|
|
83
|
-
|
|
83
|
+
localContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
if (metavariableVerified) {
|
|
87
|
-
|
|
87
|
+
localContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
return metavariableVerified;
|