occam-verify-cli 0.0.922 → 0.0.924
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/axiom.js +9 -9
- package/lib/conclusion.js +11 -41
- package/lib/conjecture.js +9 -9
- package/lib/constants.js +1 -13
- package/lib/context/file.js +3 -3
- package/lib/context/local.js +19 -59
- package/lib/declaration.js +15 -15
- package/lib/lemma.js +9 -9
- package/lib/metaLemma.js +7 -7
- package/lib/metatheorem.js +7 -7
- package/lib/metavariable.js +8 -1
- 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/theorem.js +9 -9
- package/lib/topLevelAssertion.js +186 -0
- package/lib/utilities/customGrammar.js +2 -2
- package/lib/utilities/match.js +13 -50
- package/lib/utilities/node.js +2 -27
- package/lib/utilities/tokens.js +1 -8
- package/lib/utilities/verify.js +8 -24
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +29 -29
- package/lib/verifier/nodes/metaLevel.js +13 -13
- package/lib/verify/axiom.js +4 -4
- package/lib/verify/conclusion.js +10 -11
- package/lib/verify/conjecture.js +4 -4
- package/lib/verify/containedAssertion.js +91 -0
- package/lib/verify/declaration.js +7 -7
- package/lib/verify/definedAssertion.js +115 -0
- package/lib/verify/derivation.js +7 -7
- package/lib/verify/frame.js +2 -2
- package/lib/verify/judgement.js +2 -2
- package/lib/verify/lemma.js +5 -5
- package/lib/verify/metaLemma.js +12 -12
- package/lib/verify/metastatement.js +48 -67
- package/lib/verify/metatheorem.js +12 -12
- package/lib/verify/metavariable.js +2 -2
- package/lib/verify/premise.js +11 -30
- package/lib/verify/proof.js +3 -3
- package/lib/verify/proofStep.js +8 -8
- package/lib/verify/rule.js +10 -10
- package/lib/verify/statement/qualified.js +38 -15
- package/lib/verify/statement/unqualified.js +38 -10
- package/lib/verify/statement.js +85 -92
- package/lib/verify/subDerivation.js +3 -3
- package/lib/verify/subproof.js +3 -3
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/termAsConstructor.js +2 -2
- package/lib/verify/theorem.js +4 -4
- package/package.json +2 -2
- package/src/axiom.js +4 -4
- package/src/conclusion.js +13 -52
- package/src/conjecture.js +4 -4
- package/src/constants.js +0 -3
- package/src/context/file.js +2 -2
- package/src/context/local.js +21 -67
- package/src/declaration.js +19 -19
- package/src/lemma.js +4 -4
- package/src/metaLemma.js +4 -4
- package/src/metatheorem.js +4 -4
- package/src/metavariable.js +6 -0
- 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/theorem.js +4 -4
- package/src/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +36 -23
- package/src/utilities/customGrammar.js +1 -2
- package/src/utilities/match.js +13 -60
- package/src/utilities/node.js +3 -32
- package/src/utilities/tokens.js +0 -8
- package/src/utilities/verify.js +4 -20
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +36 -37
- package/src/verifier/nodes/metaLevel.js +17 -17
- package/src/verify/axiom.js +5 -4
- package/src/verify/conclusion.js +9 -13
- package/src/verify/conjecture.js +5 -4
- package/src/verify/{statementAsContainedAssertion.js → containedAssertion.js} +20 -36
- package/src/verify/declaration.js +8 -8
- package/src/verify/{statementAsDefinedAssertion.js → definedAssertion.js} +22 -37
- package/src/verify/derivation.js +6 -6
- package/src/verify/frame.js +1 -1
- package/src/verify/judgement.js +1 -1
- package/src/verify/lemma.js +8 -5
- package/src/verify/metaLemma.js +24 -24
- package/src/verify/metastatement.js +48 -76
- package/src/verify/metatheorem.js +23 -23
- package/src/verify/metavariable.js +1 -1
- package/src/verify/premise.js +14 -46
- package/src/verify/proof.js +2 -2
- package/src/verify/proofStep.js +4 -4
- package/src/verify/rule.js +11 -11
- package/src/verify/statement/qualified.js +56 -21
- package/src/verify/statement/unqualified.js +52 -10
- package/src/verify/statement.js +133 -39
- package/src/verify/subDerivation.js +2 -2
- package/src/verify/subproof.js +2 -2
- package/src/verify/supposition.js +1 -1
- package/src/verify/termAsConstructor.js +2 -2
- package/src/verify/theorem.js +7 -4
- package/lib/axiomLemmaTheoremConjecture.js +0 -174
- package/lib/metaConsequent.js +0 -108
- package/lib/metaLemmaMetatheorem.js +0 -191
- 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/lib/verify/statementAsContainedAssertion.js +0 -109
- package/lib/verify/statementAsDefinedAssertion.js +0 -132
- package/src/metaConsequent.js +0 -83
- package/src/metaLemmaMetatheorem.js +0 -188
- 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
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
4
4
|
|
|
5
|
-
import { CONTAINED } from "../constants";
|
|
6
5
|
import { isStatementNegated } from "../utilities/verify";
|
|
7
6
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
8
7
|
|
|
9
8
|
const termNodeQuery = nodeQuery("/statement/term!"),
|
|
10
|
-
statementTermNodesQuery = nodesQuery("/statement/metaArgument/statement//term")
|
|
11
|
-
operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
|
|
9
|
+
statementTermNodesQuery = nodesQuery("/statement/metaArgument/statement//term");
|
|
12
10
|
|
|
13
|
-
export default function
|
|
11
|
+
export default function verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
14
12
|
let statementVerifiedAsContainedAssertion;
|
|
15
13
|
|
|
16
|
-
const statementContainedAssertion = isStatementContainedAssertion(
|
|
14
|
+
const statementContainedAssertion = isStatementContainedAssertion(containedAssertionNode);
|
|
17
15
|
|
|
18
16
|
if (statementContainedAssertion) {
|
|
19
|
-
const
|
|
17
|
+
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
20
18
|
|
|
21
|
-
localContext.trace(`Verifying the '${
|
|
19
|
+
localContext.trace(`Verifying the '${containedAssertionString}' statement as a contained assertion...`, containedAssertionNode);
|
|
22
20
|
|
|
23
21
|
const statementFunctions = [
|
|
24
22
|
verifyStatementAsDerivedContainedAssertion,
|
|
@@ -26,7 +24,7 @@ export default function verifyStatementAsContainedAssertion(statementNode, assig
|
|
|
26
24
|
];
|
|
27
25
|
|
|
28
26
|
statementVerifiedAsContainedAssertion = statementFunctions.some((statementFunction) => {
|
|
29
|
-
const statementVerifiedAsContainedAssertion = statementFunction(
|
|
27
|
+
const statementVerifiedAsContainedAssertion = statementFunction(containedAssertionNode, assignments, derived, localContext);
|
|
30
28
|
|
|
31
29
|
if (statementVerifiedAsContainedAssertion) {
|
|
32
30
|
return true;
|
|
@@ -34,25 +32,25 @@ export default function verifyStatementAsContainedAssertion(statementNode, assig
|
|
|
34
32
|
});
|
|
35
33
|
|
|
36
34
|
if (statementVerifiedAsContainedAssertion) {
|
|
37
|
-
localContext.debug(`...verified the '${
|
|
35
|
+
localContext.debug(`...verified the '${containedAssertionString}' statement as a contained assertion.`, containedAssertionNode);
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
38
|
|
|
41
39
|
return statementVerifiedAsContainedAssertion;
|
|
42
40
|
}
|
|
43
41
|
|
|
44
|
-
function verifyStatementAsDerivedContainedAssertion(
|
|
42
|
+
function verifyStatementAsDerivedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
45
43
|
let statementVerifiedAsDefinedContainedAssertion = false;
|
|
46
44
|
|
|
47
45
|
if (derived) {
|
|
48
|
-
const
|
|
46
|
+
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
49
47
|
|
|
50
|
-
localContext.trace(`Verifying the
|
|
48
|
+
localContext.trace(`Verifying the '${containedAssertionString}' derived statement as a contained assertion...`, containedAssertionNode);
|
|
51
49
|
|
|
52
|
-
const statementNegated = isStatementNegated(
|
|
53
|
-
termNode = termNodeQuery(
|
|
50
|
+
const statementNegated = isStatementNegated(containedAssertionNode),
|
|
51
|
+
termNode = termNodeQuery(containedAssertionNode),
|
|
54
52
|
negated = statementNegated, ///
|
|
55
|
-
statementTermNodes = statementTermNodesQuery(
|
|
53
|
+
statementTermNodes = statementTermNodesQuery(containedAssertionNode),
|
|
56
54
|
termNodeMatchesMetaArgumentVariableNode = statementTermNodes.some((statementTermNode) => {
|
|
57
55
|
const termNodeMatchesMetaArgumentVariableNode = termNode.match(statementTermNode);
|
|
58
56
|
|
|
@@ -74,27 +72,27 @@ function verifyStatementAsDerivedContainedAssertion(statementNode, assignments,
|
|
|
74
72
|
}
|
|
75
73
|
|
|
76
74
|
if (statementVerifiedAsDefinedContainedAssertion) {
|
|
77
|
-
localContext.debug(`...verified the
|
|
75
|
+
localContext.debug(`...verified the '${containedAssertionString}' derived statement as a contained assertion.`, containedAssertionNode);
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
return statementVerifiedAsDefinedContainedAssertion;
|
|
82
80
|
}
|
|
83
81
|
|
|
84
|
-
function verifyStatementAsStatedContainedAssertion(
|
|
82
|
+
function verifyStatementAsStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
85
83
|
let statementVerifiedAsStatedContainedAssertion = false;
|
|
86
84
|
|
|
87
85
|
if (!derived) {
|
|
88
|
-
const
|
|
86
|
+
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
89
87
|
|
|
90
|
-
localContext.trace(`Verifying the
|
|
88
|
+
localContext.trace(`Verifying the '${containedAssertionString}' stated statement as a contained assertion...`, containedAssertionNode);
|
|
91
89
|
|
|
92
90
|
const intrinsicLevel = localContext.isIntrinsicLevel();
|
|
93
91
|
|
|
94
92
|
if (intrinsicLevel) {
|
|
95
|
-
localContext.debug(`The
|
|
93
|
+
localContext.debug(`The '${containedAssertionString}' stated statement as a contained assertion cannot be verified at intrinsic level.`, containedAssertionNode);
|
|
96
94
|
} else {
|
|
97
|
-
const nonTerminalNode =
|
|
95
|
+
const nonTerminalNode = containedAssertionNode, ///
|
|
98
96
|
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
99
97
|
const verifiedAhead = true;
|
|
100
98
|
|
|
@@ -105,23 +103,9 @@ function verifyStatementAsStatedContainedAssertion(statementNode, assignments, d
|
|
|
105
103
|
}
|
|
106
104
|
|
|
107
105
|
if (statementVerifiedAsStatedContainedAssertion) {
|
|
108
|
-
localContext.debug(`...verified the
|
|
106
|
+
localContext.debug(`...verified the '${containedAssertionString}' stated statement as a contained assertion.`, containedAssertionNode);
|
|
109
107
|
}
|
|
110
108
|
}
|
|
111
109
|
|
|
112
110
|
return statementVerifiedAsStatedContainedAssertion;
|
|
113
111
|
}
|
|
114
|
-
|
|
115
|
-
export function isStatementContainedAssertion(statementNode) {
|
|
116
|
-
const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
|
|
117
|
-
statementContainedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
|
|
118
|
-
const content = operatorTerminalNode.getContent(),
|
|
119
|
-
contentContained = (content === CONTAINED);
|
|
120
|
-
|
|
121
|
-
if (contentContained) {
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
return statementContainedAssertion;
|
|
127
|
-
}
|
|
@@ -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
|
|
|
@@ -57,7 +57,7 @@ function verifyReference(referenceNode, localContext) {
|
|
|
57
57
|
localContext.trace(`Verifying the '${referenceString}' reference...`, referenceNode);
|
|
58
58
|
|
|
59
59
|
const metavariableNode = metavariableNodeQuery(referenceNode),
|
|
60
|
-
metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode
|
|
60
|
+
metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
|
|
61
61
|
|
|
62
62
|
if (metavariable !== null) {
|
|
63
63
|
const metaType = metavariable.getMetaType();
|
|
@@ -5,22 +5,21 @@ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
|
|
|
5
5
|
|
|
6
6
|
import { first } from "../utilities/array";
|
|
7
7
|
import { DEFINED } from "../constants";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { nodeQuery } from "../utilities/query";
|
|
9
|
+
import { isAssertionNegated } from "../utilities/verify";
|
|
10
10
|
|
|
11
11
|
const termNodeQuery = nodeQuery("/statement/term!"),
|
|
12
|
-
variableNodeQuery = nodeQuery("/statement/term/variable!")
|
|
13
|
-
operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
|
|
12
|
+
variableNodeQuery = nodeQuery("/statement/term/variable!");
|
|
14
13
|
|
|
15
|
-
export default function
|
|
14
|
+
export default function verifyDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
16
15
|
let statementVerifiedAsDefinedAssertion = false;
|
|
17
16
|
|
|
18
|
-
const statementDefinedAssertion = isStatementDefinedAssertion(
|
|
17
|
+
const statementDefinedAssertion = isStatementDefinedAssertion(definedAssertionNode);
|
|
19
18
|
|
|
20
19
|
if (statementDefinedAssertion) {
|
|
21
|
-
const
|
|
20
|
+
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
22
21
|
|
|
23
|
-
localContext.trace(`Verifying the '${
|
|
22
|
+
localContext.trace(`Verifying the '${definedAssertionString}' statement as a defined assertion...`, definedAssertionNode);
|
|
24
23
|
|
|
25
24
|
const definedAssertionFunctions = [
|
|
26
25
|
verifyDerivedStatementAsDefinedAssertion,
|
|
@@ -28,7 +27,7 @@ export default function verifyStatementAsDefinedAssertion(statementNode, assignm
|
|
|
28
27
|
];
|
|
29
28
|
|
|
30
29
|
statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some((definedAssertionFunction) => {
|
|
31
|
-
const statementVerifiedAsDefinedAssertion = definedAssertionFunction(
|
|
30
|
+
const statementVerifiedAsDefinedAssertion = definedAssertionFunction(definedAssertionNode, assignments, derived, localContext);
|
|
32
31
|
|
|
33
32
|
if (statementVerifiedAsDefinedAssertion) {
|
|
34
33
|
return true;
|
|
@@ -36,24 +35,24 @@ export default function verifyStatementAsDefinedAssertion(statementNode, assignm
|
|
|
36
35
|
});
|
|
37
36
|
|
|
38
37
|
if (statementVerifiedAsDefinedAssertion) {
|
|
39
|
-
localContext.debug(`...verified the '${
|
|
38
|
+
localContext.debug(`...verified the '${definedAssertionString}' statement as a defined assertion.`, definedAssertionNode);
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
return statementVerifiedAsDefinedAssertion;
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
function verifyDerivedStatementAsDefinedAssertion(
|
|
45
|
+
function verifyDerivedStatementAsDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
47
46
|
let derivedStatementVerifiedAsDefeindAssertion = false;
|
|
48
47
|
|
|
49
48
|
if (derived) {
|
|
50
|
-
const
|
|
49
|
+
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
51
50
|
|
|
52
|
-
localContext.trace(`Verifying the
|
|
51
|
+
localContext.trace(`Verifying the '${definedAssertionString}' derived statement as a defined assertion...`, definedAssertionNode);
|
|
53
52
|
|
|
54
|
-
const statementNegated =
|
|
55
|
-
variableNode = variableNodeQuery(
|
|
56
|
-
termNode = termNodeQuery(
|
|
53
|
+
const statementNegated = isAssertionNegated(definedAssertionNode),
|
|
54
|
+
variableNode = variableNodeQuery(definedAssertionNode),
|
|
55
|
+
termNode = termNodeQuery(definedAssertionNode);
|
|
57
56
|
|
|
58
57
|
if (false) {
|
|
59
58
|
///
|
|
@@ -103,27 +102,27 @@ function verifyDerivedStatementAsDefinedAssertion(statementNode, assignments, de
|
|
|
103
102
|
}
|
|
104
103
|
|
|
105
104
|
if (derivedStatementVerifiedAsDefeindAssertion) {
|
|
106
|
-
localContext.debug(`...verified the
|
|
105
|
+
localContext.debug(`...verified the '${definedAssertionString}' derived statement as a defined assertion.`, definedAssertionNode);
|
|
107
106
|
}
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
return derivedStatementVerifiedAsDefeindAssertion;
|
|
111
110
|
}
|
|
112
111
|
|
|
113
|
-
function verifyStatedStatementAsDefinedAssertion(
|
|
112
|
+
function verifyStatedStatementAsDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
114
113
|
let statedStatementVerifiedAsDefinedAssertion = false;
|
|
115
114
|
|
|
116
115
|
if (!derived) {
|
|
117
|
-
const
|
|
116
|
+
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
118
117
|
|
|
119
|
-
localContext.trace(`Verifying the
|
|
118
|
+
localContext.trace(`Verifying the '${definedAssertionString}' stated statement as a defined assertion...`, definedAssertionNode);
|
|
120
119
|
|
|
121
120
|
const intrinsicLevel = localContext.isIntrinsicLevel();
|
|
122
121
|
|
|
123
122
|
if (intrinsicLevel) {
|
|
124
|
-
localContext.debug(`The
|
|
123
|
+
localContext.debug(`The '${definedAssertionString}' stated statement as a defined assertion cannot be verified at intrinsic level.`, definedAssertionNode);
|
|
125
124
|
} else {
|
|
126
|
-
const nonTerminalNode =
|
|
125
|
+
const nonTerminalNode = definedAssertionNode, ///
|
|
127
126
|
nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
|
|
128
127
|
const verifiedAhead = true;
|
|
129
128
|
|
|
@@ -134,23 +133,9 @@ function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, der
|
|
|
134
133
|
}
|
|
135
134
|
|
|
136
135
|
if (statedStatementVerifiedAsDefinedAssertion) {
|
|
137
|
-
localContext.debug(`...verified the
|
|
136
|
+
localContext.debug(`...verified the '${definedAssertionString}' stated statement as a defined assertion.`, definedAssertionNode);
|
|
138
137
|
}
|
|
139
138
|
}
|
|
140
139
|
|
|
141
140
|
return statedStatementVerifiedAsDefinedAssertion;
|
|
142
141
|
}
|
|
143
|
-
|
|
144
|
-
export function isStatementDefinedAssertion(statementNode) {
|
|
145
|
-
const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
|
|
146
|
-
statementDefinedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
|
|
147
|
-
const content = operatorTerminalNode.getContent(),
|
|
148
|
-
contentDefined = (content === DEFINED);
|
|
149
|
-
|
|
150
|
-
if (contentDefined) {
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
return statementDefinedAssertion;
|
|
156
|
-
}
|
package/src/verify/derivation.js
CHANGED
|
@@ -6,18 +6,18 @@ import { nodesQuery } from "../utilities/query";
|
|
|
6
6
|
|
|
7
7
|
const proofStepNodesQuery = nodesQuery("/derivation/proofStep|lastProofStep");
|
|
8
8
|
|
|
9
|
-
export default function verifyDerivation(
|
|
10
|
-
let
|
|
9
|
+
export default function verifyDerivation(derivationNode, substitutions, localContext) {
|
|
10
|
+
let derivationVerified;
|
|
11
11
|
|
|
12
|
-
const proofStepNodes = proofStepNodesQuery(
|
|
12
|
+
const proofStepNodes = proofStepNodesQuery(derivationNode);
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
const proofStepVerified = verifyProofStep(proofStepNode, localContext);
|
|
14
|
+
derivationVerified = proofStepNodes.every((proofStepNode) => {
|
|
15
|
+
const proofStepVerified = verifyProofStep(proofStepNode, substitutions, localContext);
|
|
16
16
|
|
|
17
17
|
if (proofStepVerified) {
|
|
18
18
|
return true;
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
return
|
|
22
|
+
return derivationVerified;
|
|
23
23
|
}
|
package/src/verify/frame.js
CHANGED
|
@@ -56,7 +56,7 @@ function verifyMetavariable(metavariableNode, declarations, localContext) {
|
|
|
56
56
|
|
|
57
57
|
localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
58
58
|
|
|
59
|
-
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode
|
|
59
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
|
|
60
60
|
|
|
61
61
|
if (metavariable !== null) {
|
|
62
62
|
const metaType = metavariable.getMetaType();
|
package/src/verify/judgement.js
CHANGED
|
@@ -144,7 +144,7 @@ function verifyMetavariable(metavariableNode, localContext) {
|
|
|
144
144
|
|
|
145
145
|
localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
146
146
|
|
|
147
|
-
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode
|
|
147
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
|
|
148
148
|
|
|
149
149
|
if (metavariable !== null) {
|
|
150
150
|
const metaType = metavariable.getMetaType();
|
package/src/verify/lemma.js
CHANGED
|
@@ -20,8 +20,7 @@ export default function verifyLemma(lemmaNode, fileContext) {
|
|
|
20
20
|
let lemmaVerified = false;
|
|
21
21
|
|
|
22
22
|
const labelNodes = labelNodesQuery(lemmaNode),
|
|
23
|
-
labelsString = fileContext.nodesAsString(labelNodes)
|
|
24
|
-
localContext = LocalContext.fromFileContext(fileContext);
|
|
23
|
+
labelsString = fileContext.nodesAsString(labelNodes);
|
|
25
24
|
|
|
26
25
|
(labelsString === EMPTY_STRING) ?
|
|
27
26
|
fileContext.trace(`Verifying a lemma...`, lemmaNode) :
|
|
@@ -31,7 +30,8 @@ export default function verifyLemma(lemmaNode, fileContext) {
|
|
|
31
30
|
labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
32
31
|
|
|
33
32
|
if (labelsVerified) {
|
|
34
|
-
const
|
|
33
|
+
const localContext = LocalContext.fromFileContext(fileContext),
|
|
34
|
+
suppositions = [],
|
|
35
35
|
suppositionNodes = suppositionsNodeQuery(lemmaNode),
|
|
36
36
|
suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
|
|
37
37
|
|
|
@@ -44,10 +44,13 @@ export default function verifyLemma(lemmaNode, fileContext) {
|
|
|
44
44
|
const proofNode = proofNodeQuery(lemmaNode),
|
|
45
45
|
firstConsequent = first(consequents),
|
|
46
46
|
consequent = firstConsequent, ///
|
|
47
|
-
|
|
47
|
+
statementNode = consequent.getStatementNode(),
|
|
48
|
+
substitutions = [],
|
|
49
|
+
proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
|
|
48
50
|
|
|
49
51
|
if (proofVerified) {
|
|
50
|
-
const
|
|
52
|
+
const substitutions = [],
|
|
53
|
+
lemma = Lemma.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext);
|
|
51
54
|
|
|
52
55
|
fileContext.addLemma(lemma);
|
|
53
56
|
|
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;
|
|
@@ -30,26 +30,26 @@ export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
|
30
30
|
labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
31
31
|
|
|
32
32
|
if (labelsVerified) {
|
|
33
|
-
const localContext = LocalContext.fromFileContext(fileContext),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
metaSuppositionsVerified = verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, substitutions, localContext);
|
|
33
|
+
const localContext = LocalContext.fromFileContext(fileContext),
|
|
34
|
+
suppositions = [],
|
|
35
|
+
suppositionNodes = suppositionsNodeQuery(metaLemmaNode),
|
|
36
|
+
suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
|
|
38
37
|
|
|
39
|
-
if (
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
if (suppositionsVerified) {
|
|
39
|
+
const consequents = [],
|
|
40
|
+
consequentNode = consequentNodeQuery(metaLemmaNode),
|
|
41
|
+
consequentVerified = verifyConsequent(consequentNode, consequents, localContext);
|
|
43
42
|
|
|
44
|
-
if (
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
if (consequentVerified) {
|
|
44
|
+
const proofNode = proofNodeQuery(metaLemmaNode),
|
|
45
|
+
firstConsequent = first(consequents),
|
|
46
|
+
consequent = firstConsequent, ///
|
|
47
|
+
statementNode = consequent.getStatementNode(),
|
|
48
|
+
substitutions = [],
|
|
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
|
|