occam-verify-cli 0.0.913 → 0.0.915
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/frameAssertion.js +4 -4
- package/lib/axiomLemmaTheoremConjecture.js +4 -3
- package/lib/conclusion.js +5 -5
- package/lib/context/file.js +3 -3
- package/lib/context/local/intrinsicLevel.js +326 -0
- package/lib/context/local/metaLevel.js +290 -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 +16 -16
- package/lib/verify/frameAssertion.js +33 -33
- 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 +23 -23
- package/lib/verify/metastatement/qualified.js +22 -22
- package/lib/verify/metastatement/unqualified.js +7 -7
- package/lib/verify/metastatement.js +26 -26
- 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 +26 -25
- 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/frameAssertion.js +5 -5
- package/src/axiomLemmaTheoremConjecture.js +4 -2
- package/src/conclusion.js +7 -7
- package/src/context/file.js +2 -2
- package/src/context/{local.js → local/intrinsicLevel.js} +25 -20
- package/src/context/{localMeta.js → local/metaLevel.js} +21 -16
- 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 +15 -15
- package/src/verify/frameAssertion.js +33 -33
- 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 +21 -25
- package/src/verify/metastatement/qualified.js +24 -24
- package/src/verify/metastatement/unqualified.js +6 -6
- package/src/verify/metastatement.js +25 -25
- 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 +22 -25
- 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/context/local.js +0 -320
- package/lib/context/localMeta.js +0 -284
- package/lib/verifier/node/metastatement.js +0 -214
|
@@ -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,26 +43,26 @@ 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 frameAssertion =
|
|
65
|
+
const frameAssertion = localContext.findFrameAssertionByMetavariableNode(metavariableNode);
|
|
66
66
|
|
|
67
67
|
if (frameAssertion !== null) {
|
|
68
68
|
const frameAssertionDeclarations = frameAssertion.getDeclarations();
|
|
@@ -71,20 +71,20 @@ function verifyMetavariable(metavariableNode, declarations, localMetaContext) {
|
|
|
71
71
|
|
|
72
72
|
metavariableVerified = true;
|
|
73
73
|
} else {
|
|
74
|
-
|
|
74
|
+
localContext.debug(`There is no frame assertion 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;
|
|
@@ -11,12 +11,12 @@ import { nodeQuery } from "../utilities/query";
|
|
|
11
11
|
const frameNodeQuery = nodeQuery("/frameAssertion/frame!"),
|
|
12
12
|
metavariableNodeQuery = nodeQuery("/frameAssertion/metavariable!");
|
|
13
13
|
|
|
14
|
-
export default function verifyFrameAssertion(frameAssertionNode, assignments, derived,
|
|
14
|
+
export default function verifyFrameAssertion(frameAssertionNode, assignments, derived, localContext) {
|
|
15
15
|
let frameAssertionVerified;
|
|
16
16
|
|
|
17
|
-
const frameAssertionString =
|
|
17
|
+
const frameAssertionString = localContext.nodeAsString(frameAssertionNode);
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
localContext.trace(`Verifying the '${frameAssertionString}' frame assertion...`, frameAssertionNode);
|
|
20
20
|
|
|
21
21
|
const verifyFrameAssertionFunctions = [
|
|
22
22
|
verifyDerivedFrameAssertion,
|
|
@@ -24,7 +24,7 @@ export default function verifyFrameAssertion(frameAssertionNode, assignments, de
|
|
|
24
24
|
];
|
|
25
25
|
|
|
26
26
|
frameAssertionVerified = verifyFrameAssertionFunctions.some((verifyFrameAssertionFunction) => {
|
|
27
|
-
const frameAssertionVerified = verifyFrameAssertionFunction(frameAssertionNode, assignments, derived,
|
|
27
|
+
const frameAssertionVerified = verifyFrameAssertionFunction(frameAssertionNode, assignments, derived, localContext);
|
|
28
28
|
|
|
29
29
|
if (frameAssertionVerified) {
|
|
30
30
|
return true;
|
|
@@ -32,30 +32,30 @@ export default function verifyFrameAssertion(frameAssertionNode, assignments, de
|
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
if (frameAssertionVerified) {
|
|
35
|
-
|
|
35
|
+
localContext.debug(`...verified the '${frameAssertionString}' frame assertion.`, frameAssertionNode);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
return frameAssertionVerified;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived,
|
|
41
|
+
function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, localContext) {
|
|
42
42
|
let derivedFrameAssertionVerified = false;
|
|
43
43
|
|
|
44
44
|
if (derived) {
|
|
45
|
-
const frameAssertionString =
|
|
45
|
+
const frameAssertionString = localContext.nodeAsString(frameAssertionNode);
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
localContext.trace(`Verifying the '${frameAssertionString}' derived frame assertion...`, frameAssertionNode);
|
|
48
48
|
|
|
49
49
|
const metavariableNode = metavariableNodeQuery(frameAssertionNode),
|
|
50
|
-
metavariableVerified = verifyMetavariable(metavariableNode,
|
|
50
|
+
metavariableVerified = verifyMetavariable(metavariableNode, localContext);
|
|
51
51
|
|
|
52
52
|
if (metavariableVerified) {
|
|
53
|
-
const frameAssertion =
|
|
53
|
+
const frameAssertion = localContext.findFrameAssertionByMetavariableNode(metavariableNode);
|
|
54
54
|
|
|
55
55
|
if (frameAssertion !== null) {
|
|
56
56
|
const frames = [],
|
|
57
57
|
frameNode = frameNodeQuery(frameAssertionNode),
|
|
58
|
-
frameVerified = verifyFrame(frameNode, frames, assignments, derived,
|
|
58
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
|
|
59
59
|
|
|
60
60
|
if (frameVerified) {
|
|
61
61
|
const firstFrame = first(frames),
|
|
@@ -65,8 +65,8 @@ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, l
|
|
|
65
65
|
if (frameSingular) {
|
|
66
66
|
const declaration = frame.getDeclaration(),
|
|
67
67
|
metavariableNode = declaration.getMetavariableNode(),
|
|
68
|
-
metaLemma =
|
|
69
|
-
metatheorem =
|
|
68
|
+
metaLemma = localContext.findMetaLemmaByMetavariableNode(metavariableNode),
|
|
69
|
+
metatheorem = localContext.findMetatheoremByMetavariableNode(metavariableNode),
|
|
70
70
|
metaLemmaMetatheorem = (metaLemma || metatheorem); ///
|
|
71
71
|
|
|
72
72
|
if (metaLemmaMetatheorem !== null) {
|
|
@@ -75,46 +75,46 @@ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, l
|
|
|
75
75
|
|
|
76
76
|
derivedFrameAssertionVerified = (declarationMatchesMetaLemmaMetatheorem && frameAssertionMatchesMetaLemmaMetatheorem);
|
|
77
77
|
} else {
|
|
78
|
-
const metavariableString =
|
|
78
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, frameAssertionNode);
|
|
81
81
|
}
|
|
82
82
|
} else {
|
|
83
|
-
const frameString =
|
|
83
|
+
const frameString = localContext.nodeAsString(frameNode);
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
localContext.debug(`The '${frameString}' is not singular.`, frameAssertionNode);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
} else {
|
|
89
|
-
const metavariableString =
|
|
89
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
localContext.debug(`There is no frameAssertion present for the '${metavariableString}' metavariable.`, frameAssertionNode);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
if (derivedFrameAssertionVerified) {
|
|
96
|
-
|
|
96
|
+
localContext.debug(`...verified the '${frameAssertionString}' derived frame assertion.`, frameAssertionNode);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
return derivedFrameAssertionVerified;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived,
|
|
103
|
+
function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived, localContext) {
|
|
104
104
|
let statedFrameAssertionVerified = false;
|
|
105
105
|
|
|
106
106
|
if (!derived) {
|
|
107
|
-
const frameAssertionString =
|
|
107
|
+
const frameAssertionString = localContext.nodeAsString(frameAssertionNode);
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
localContext.trace(`Verifying the '${frameAssertionString}' stated frame assertion...`, frameAssertionNode);
|
|
110
110
|
|
|
111
111
|
const metavariableNode = metavariableNodeQuery(frameAssertionNode),
|
|
112
|
-
metavariableVerified = verifyMetavariable(metavariableNode,
|
|
112
|
+
metavariableVerified = verifyMetavariable(metavariableNode, localContext);
|
|
113
113
|
|
|
114
114
|
if (metavariableVerified) {
|
|
115
115
|
const frames = [],
|
|
116
116
|
frameNode = frameNodeQuery(frameAssertionNode),
|
|
117
|
-
frameVerified = verifyFrame(frameNode, frames, assignments, derived,
|
|
117
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
|
|
118
118
|
|
|
119
119
|
if (frameVerified) {
|
|
120
120
|
const firstFrame = first(frames),
|
|
@@ -130,21 +130,21 @@ function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived, lo
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
if (statedFrameAssertionVerified) {
|
|
133
|
-
|
|
133
|
+
localContext.debug(`...verified the '${frameAssertionString}' stated frame assertion.`, frameAssertionNode);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
return statedFrameAssertionVerified;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
function verifyMetavariable(metavariableNode,
|
|
140
|
+
function verifyMetavariable(metavariableNode, localContext) {
|
|
141
141
|
let metavariableVerified = false;
|
|
142
142
|
|
|
143
|
-
const metavariableString =
|
|
143
|
+
const metavariableString = localContext.nodeAsString(metavariableNode);
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
146
146
|
|
|
147
|
-
const metavariable =
|
|
147
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
|
|
148
148
|
|
|
149
149
|
if (metavariable !== null) {
|
|
150
150
|
const metaType = metavariable.getMetaType();
|
|
@@ -155,14 +155,14 @@ function verifyMetavariable(metavariableNode, localMetaContext) {
|
|
|
155
155
|
const frameMetaTypeName = frameMetaType.getName(),
|
|
156
156
|
metaTypeString = metaType.asString();
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
localContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
|
|
159
159
|
}
|
|
160
160
|
} else {
|
|
161
|
-
|
|
161
|
+
localContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
if (metavariableVerified) {
|
|
165
|
-
|
|
165
|
+
localContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
return metavariableVerified;
|