occam-verify-cli 0.0.921 → 0.0.923
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/axiomLemmaTheoremConjecture.js +3 -4
- package/lib/conclusion.js +13 -43
- package/lib/constants.js +1 -5
- package/lib/context/local.js +386 -0
- package/lib/declaration.js +15 -15
- package/lib/metaLemmaMetatheorem.js +59 -59
- package/lib/mixins/context.js +17 -13
- package/lib/mixins/nodesVerifier/metaLevel.js +6 -6
- package/lib/premise.js +16 -94
- package/lib/{step/proof.js → proofStep.js} +1 -1
- package/lib/rule.js +1 -45
- package/lib/ruleNames.js +1 -9
- package/lib/substitution/statementForMetavariable.js +9 -1
- package/lib/substitution.js +1 -8
- package/lib/supposition.js +55 -1
- package/lib/utilities/customGrammar.js +2 -2
- package/lib/utilities/match.js +13 -50
- package/lib/utilities/node.js +2 -27
- package/lib/utilities/tokens.js +1 -8
- package/lib/utilities/verify.js +8 -24
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +29 -29
- package/lib/verifier/nodes/metaLevel.js +13 -13
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/conclusion.js +10 -11
- package/lib/verify/conjecture.js +3 -3
- package/lib/verify/declaration.js +6 -6
- package/lib/verify/lemma.js +3 -3
- package/lib/verify/metaLemma.js +13 -13
- package/lib/verify/metastatement.js +64 -64
- package/lib/verify/metatheorem.js +13 -13
- package/lib/verify/premise.js +11 -30
- package/lib/verify/proof.js +3 -4
- package/lib/verify/proofStep.js +5 -5
- package/lib/verify/rule.js +11 -11
- package/lib/verify/statement/qualified.js +35 -9
- package/lib/verify/statement/unqualified.js +1 -1
- package/lib/verify/subproof.js +3 -4
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/termAsConstructor.js +3 -3
- package/lib/verify/theorem.js +3 -3
- package/package.json +4 -4
- package/src/axiomLemmaTheoremConjecture.js +2 -4
- package/src/conclusion.js +15 -54
- package/src/constants.js +0 -1
- package/src/context/{local/intrinsicLevel.js → local.js} +182 -97
- package/src/declaration.js +19 -19
- package/src/metaLemmaMetatheorem.js +58 -58
- package/src/mixins/context.js +12 -9
- package/src/mixins/nodesVerifier/metaLevel.js +8 -8
- package/src/premise.js +25 -143
- package/src/rule.js +0 -67
- package/src/ruleNames.js +0 -2
- package/src/substitution/statementForMetavariable.js +14 -0
- package/src/substitution.js +0 -6
- package/src/supposition.js +46 -0
- package/src/utilities/customGrammar.js +1 -2
- package/src/utilities/match.js +13 -60
- package/src/utilities/node.js +3 -32
- package/src/utilities/tokens.js +0 -8
- package/src/utilities/verify.js +4 -20
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +36 -37
- package/src/verifier/nodes/metaLevel.js +17 -17
- package/src/verify/axiom.js +3 -4
- package/src/verify/conclusion.js +9 -13
- package/src/verify/conjecture.js +3 -4
- package/src/verify/declaration.js +7 -7
- package/src/verify/lemma.js +3 -4
- package/src/verify/metaLemma.js +24 -25
- package/src/verify/metastatement.js +64 -64
- package/src/verify/metatheorem.js +23 -24
- package/src/verify/premise.js +14 -46
- package/src/verify/proof.js +2 -4
- package/src/verify/proofStep.js +1 -1
- package/src/verify/rule.js +11 -12
- package/src/verify/statement/qualified.js +43 -9
- package/src/verify/statement/unqualified.js +1 -1
- package/src/verify/subproof.js +2 -4
- package/src/verify/supposition.js +1 -1
- package/src/verify/termAsConstructor.js +3 -4
- package/src/verify/theorem.js +3 -4
- package/lib/context/local/intrinsicLevel.js +0 -326
- package/lib/context/local/metaLevel.js +0 -282
- package/lib/metaConsequent.js +0 -108
- package/lib/metaSupposition.js +0 -160
- package/lib/node/metastatement/bracketed.js +0 -16
- package/lib/step/metaproof.js +0 -106
- package/lib/substitution/metastatementForMetavariable.js +0 -173
- package/lib/verify/metaConsequent.js +0 -50
- package/lib/verify/metaDerivation.js +0 -31
- package/lib/verify/metaSubDerivation.js +0 -25
- package/lib/verify/metaSubproof.js +0 -35
- package/lib/verify/metaSupposition.js +0 -61
- package/lib/verify/metaSuppositions.js +0 -28
- package/lib/verify/metaproof.js +0 -32
- package/lib/verify/metaproofStep.js +0 -98
- package/lib/verify/metastatement/qualified.js +0 -95
- package/lib/verify/metastatement/unqualified.js +0 -37
- package/lib/verify/metastatementAsContainedAssertion.js +0 -109
- package/lib/verify/metastatementAsDefinedAssertion.js +0 -132
- package/lib/verify/metavariableAgainstMetastatement.js +0 -44
- package/src/context/local/metaLevel.js +0 -191
- package/src/metaConsequent.js +0 -83
- package/src/metaSupposition.js +0 -127
- package/src/node/metastatement/bracketed.js +0 -9
- package/src/step/metaproof.js +0 -73
- package/src/substitution/metastatementForMetavariable.js +0 -90
- package/src/verify/metaConsequent.js +0 -61
- package/src/verify/metaDerivation.js +0 -23
- package/src/verify/metaSubDerivation.js +0 -22
- package/src/verify/metaSubproof.js +0 -34
- package/src/verify/metaSupposition.js +0 -78
- package/src/verify/metaSuppositions.js +0 -17
- package/src/verify/metaproof.js +0 -30
- 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
package/src/substitution.js
CHANGED
package/src/supposition.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import LocalContext from "./context/local";
|
|
4
|
+
import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
|
|
3
5
|
import intrinsicLevelNodesVerifier from "./verifier/nodes/intrinsicLevel";
|
|
4
6
|
|
|
7
|
+
import { match } from "./utilities/array";
|
|
5
8
|
import { nodeAsString } from "./utilities/string";
|
|
6
9
|
import { statementNodeFromStatementString } from "./utilities/node";
|
|
10
|
+
import {nodeQuery, nodesQuery} from "./utilities/query";
|
|
11
|
+
|
|
12
|
+
const subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
|
|
13
|
+
subproofAssertionStatementNodesQuery = nodesQuery("/subproofAssertion/statement"),
|
|
14
|
+
subproofSuppositionStatementNodesQuery = nodesQuery("/subproof/supposition/unqualifiedStatement/statement!"),
|
|
15
|
+
subproofLastProofStepStatementNodeQuery = nodeQuery("/subproof/subDerivation/lastProofStep/unqualifiedStatement|qualifiedStatement/statement!");
|
|
7
16
|
|
|
8
17
|
export default class Supposition {
|
|
9
18
|
constructor(statementNode) {
|
|
@@ -29,6 +38,43 @@ export default class Supposition {
|
|
|
29
38
|
return matchesStatementNode;
|
|
30
39
|
}
|
|
31
40
|
|
|
41
|
+
matchSubproofNode(subproofNode, substitutions, fileContext, localContext) {
|
|
42
|
+
let matchesSubproofNode = false;
|
|
43
|
+
|
|
44
|
+
if (this.statementNode !== null) {
|
|
45
|
+
const subproofAssertionNode = subproofAssertionNodeQuery(this.statementNode);
|
|
46
|
+
|
|
47
|
+
if (subproofAssertionNode !== null) {
|
|
48
|
+
const subproofSuppositionStatementNodes = subproofSuppositionStatementNodesQuery(subproofNode),
|
|
49
|
+
subproofLastProofStepStatementNode = subproofLastProofStepStatementNodeQuery(subproofNode),
|
|
50
|
+
subproofStatementNodes = [
|
|
51
|
+
...subproofSuppositionStatementNodes,
|
|
52
|
+
subproofLastProofStepStatementNode
|
|
53
|
+
],
|
|
54
|
+
subproofAssertionStatementNodes = subproofAssertionStatementNodesQuery(subproofAssertionNode);
|
|
55
|
+
|
|
56
|
+
matchesSubproofNode = match(subproofAssertionStatementNodes, subproofStatementNodes, (subproofAssertionStatementNode, ruleSubproofStatementNode) => {
|
|
57
|
+
const fileContextA = fileContext, ///
|
|
58
|
+
nonTerminalNodeA = subproofAssertionStatementNode, ///
|
|
59
|
+
nonTerminalNodeB = ruleSubproofStatementNode, ///
|
|
60
|
+
localContextA = LocalContext.fromFileContext(fileContextA), ///
|
|
61
|
+
localContextB = localContext, ///
|
|
62
|
+
nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
|
|
63
|
+
const verifiedAhead = true;
|
|
64
|
+
|
|
65
|
+
return verifiedAhead;
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
if (nonTerminalNodeVerified) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return matchesSubproofNode;
|
|
76
|
+
}
|
|
77
|
+
|
|
32
78
|
toJSON(tokens) {
|
|
33
79
|
const statementString = nodeAsString(this.statementNode, tokens),
|
|
34
80
|
statement = statementString, ///
|
|
@@ -5,11 +5,10 @@ import { CustomGrammar, CombinedCustomGrammar } from "occam-custom-grammars";
|
|
|
5
5
|
export function customGrammarFromNameAndEntries(name, entries) {
|
|
6
6
|
const termBNF = entries.getTermBNF(),
|
|
7
7
|
statementBNF = entries.getStatementBNF(),
|
|
8
|
-
metastatementBNF = entries.getMetastatementBNF(),
|
|
9
8
|
typePattern = entries.getTypePattern(),
|
|
10
9
|
symbolPattern = entries.getSymbolPattern(),
|
|
11
10
|
operatorPattern = entries.getOperatorPattern(),
|
|
12
|
-
customGrammar = CustomGrammar.
|
|
11
|
+
customGrammar = CustomGrammar.fromNameTermBNFStatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, typePattern, symbolPattern, operatorPattern);
|
|
13
12
|
|
|
14
13
|
return customGrammar;
|
|
15
14
|
}
|
package/src/utilities/match.js
CHANGED
|
@@ -1,76 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import bracketedStatementNode from "../node/statement/bracketed";
|
|
4
|
-
import bracketedMetastatementNode from "../node/metastatement/bracketed";
|
|
5
4
|
|
|
6
5
|
import { nodeQuery } from "../utilities/query";
|
|
7
|
-
import { BRACKETED_STATEMENT_DEPTH
|
|
6
|
+
import { BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
8
7
|
|
|
9
|
-
const bracketedStatementChildNodeQuery = nodeQuery("/statement/
|
|
10
|
-
bracketedMetastatementChildNodeQuery = nodeQuery("/metastatement/metastatement!");
|
|
8
|
+
const bracketedStatementChildNodeQuery = nodeQuery("/statement/statement!");
|
|
11
9
|
|
|
12
10
|
export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
|
|
13
|
-
let
|
|
11
|
+
let statementMatches = false;
|
|
14
12
|
|
|
15
|
-
if (!
|
|
16
|
-
const
|
|
13
|
+
if (!statementMatches) {
|
|
14
|
+
const statementNodeMatches = statementNodeA.match(statementNodeB);
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
statementMatches = statementNodeMatches; ///
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
if (!
|
|
19
|
+
if (!statementMatches) {
|
|
22
20
|
const bracketedStatementChildNodeA = bracketedStatementChildNodeFromStatementNode(statementNodeA);
|
|
23
21
|
|
|
24
22
|
if (bracketedStatementChildNodeA !== null) {
|
|
25
|
-
const
|
|
23
|
+
const bracketedStatementChildNodeAMatchesStatementNodeB = bracketedStatementChildNodeA.match(statementNodeB);
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
statementMatches = bracketedStatementChildNodeAMatchesStatementNodeB; ///
|
|
28
26
|
}
|
|
29
27
|
}
|
|
30
28
|
|
|
31
|
-
if (!
|
|
29
|
+
if (!statementMatches) {
|
|
32
30
|
const bracketedStatementChildNodeB = bracketedStatementChildNodeFromStatementNode(statementNodeB);
|
|
33
31
|
|
|
34
32
|
if (bracketedStatementChildNodeB !== null) {
|
|
35
|
-
const
|
|
33
|
+
const statementNodeAMatchesBracketedStatementChildNodeB = statementNodeA.match(bracketedStatementChildNodeB);
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
statementMatches = statementNodeAMatchesBracketedStatementChildNodeB; ///
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
38
|
|
|
41
|
-
return
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export function matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB) {
|
|
45
|
-
let metastatementMatches = false;
|
|
46
|
-
|
|
47
|
-
if (!metastatementMatches) {
|
|
48
|
-
const metastatementNodeMatches = metastatementNodeA.match(metastatementNodeB);
|
|
49
|
-
|
|
50
|
-
metastatementMatches = metastatementNodeMatches; ///
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (!metastatementMatches) {
|
|
54
|
-
const bracketedMetastatementChildNodeA = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeA);
|
|
55
|
-
|
|
56
|
-
if (bracketedMetastatementChildNodeA !== null) {
|
|
57
|
-
const bracketedMetastatementChildNodeAMatchesMetastatementNodeB = bracketedMetastatementChildNodeA.match(metastatementNodeB);
|
|
58
|
-
|
|
59
|
-
metastatementMatches = bracketedMetastatementChildNodeAMatchesMetastatementNodeB; ///
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (!metastatementMatches) {
|
|
64
|
-
const bracketedMetastatementChildNodeB = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeB);
|
|
65
|
-
|
|
66
|
-
if (bracketedMetastatementChildNodeB !== null) {
|
|
67
|
-
const metastatementNodeAMatchesBracketedMetastatementChildNodeB = metastatementNodeA.match(bracketedMetastatementChildNodeB);
|
|
68
|
-
|
|
69
|
-
metastatementMatches = metastatementNodeAMatchesBracketedMetastatementChildNodeB; ///
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return metastatementMatches;
|
|
39
|
+
return statementMatches;
|
|
74
40
|
}
|
|
75
41
|
|
|
76
42
|
export function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
@@ -85,16 +51,3 @@ export function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
|
85
51
|
|
|
86
52
|
return bracketedStatementChildNode;
|
|
87
53
|
}
|
|
88
|
-
|
|
89
|
-
export function bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode) {
|
|
90
|
-
let bracketedMetastatementChildNode = null;
|
|
91
|
-
|
|
92
|
-
const depth = BRACKETED_METASTATEMENT_DEPTH,
|
|
93
|
-
metastatementNodeMatchesBracketedMetastatementNode = metastatementNode.match(bracketedMetastatementNode, depth);
|
|
94
|
-
|
|
95
|
-
if (metastatementNodeMatchesBracketedMetastatementNode) {
|
|
96
|
-
bracketedMetastatementChildNode = bracketedMetastatementChildNodeQuery(metastatementNode);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return bracketedMetastatementChildNode;
|
|
100
|
-
}
|
package/src/utilities/node.js
CHANGED
|
@@ -7,12 +7,10 @@ import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
|
7
7
|
import { METAVARIABLE_RULE_NAME,
|
|
8
8
|
VARIABLE_DECLARATION_RULE_NAME,
|
|
9
9
|
UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
10
|
-
CONSTRUCTOR_DECLARATION_RULE_NAME
|
|
11
|
-
UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
10
|
+
CONSTRUCTOR_DECLARATION_RULE_NAME } from "../ruleNames";
|
|
12
11
|
import { metavariableTokensFromMetavariableString,
|
|
13
12
|
variableDeclarationTokensFromVariableString,
|
|
14
|
-
unqualifiedStatementTokensFromStatementString
|
|
15
|
-
unqualifiedMetastatementTokensFromMetastatementString } from "../utilities/tokens";
|
|
13
|
+
unqualifiedStatementTokensFromStatementString } from "../utilities/tokens";
|
|
16
14
|
|
|
17
15
|
const { florenceParserFromCombinedCustomGrammar } = parsersUtilities;
|
|
18
16
|
|
|
@@ -21,8 +19,7 @@ const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
|
21
19
|
|
|
22
20
|
const termNodeQuery = nodeQuery("/constructorDeclaration/term!"),
|
|
23
21
|
variableNodeQuery = nodeQuery("/variableDeclaration/variable!"),
|
|
24
|
-
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!")
|
|
25
|
-
metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
|
|
22
|
+
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
|
|
26
23
|
|
|
27
24
|
export function variableNodeFromVariableString(variableString, lexer, parser) {
|
|
28
25
|
const variableTDeclarationTokens = variableDeclarationTokensFromVariableString(variableString, lexer),
|
|
@@ -45,13 +42,6 @@ export function metavariableNodeFromMetavariableString(metavariableString, lexer
|
|
|
45
42
|
return metavariableNode;
|
|
46
43
|
}
|
|
47
44
|
|
|
48
|
-
export function metastatementNodeFromMetastatementString(metastatementString, lexer, parser) {
|
|
49
|
-
const unqualifiedMetastatementTokens = unqualifiedMetastatementTokensFromMetastatementString(metastatementString, lexer),
|
|
50
|
-
metastatementNode = metastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser);
|
|
51
|
-
|
|
52
|
-
return metastatementNode;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
45
|
export function termNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser) {
|
|
56
46
|
let termNode = null;
|
|
57
47
|
|
|
@@ -88,18 +78,6 @@ export function variableNodeFromVariableVariableTDeclarationTokens(variableTDecl
|
|
|
88
78
|
return variableNode;
|
|
89
79
|
}
|
|
90
80
|
|
|
91
|
-
export function metastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser) {
|
|
92
|
-
let metastatementNode = null;
|
|
93
|
-
|
|
94
|
-
const unqualifiedMetastatementNode = unqualifiedMetastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser);
|
|
95
|
-
|
|
96
|
-
if (unqualifiedMetastatementNode !== null) {
|
|
97
|
-
metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return metastatementNode;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
81
|
export function metavariableNodeFromMetavariableTokens(metavariableTokens, parser) {
|
|
104
82
|
const ruleName = METAVARIABLE_RULE_NAME,
|
|
105
83
|
metavariableNode = nodeFromTokensRuleNameAndParser(metavariableTokens, ruleName, parser);
|
|
@@ -128,13 +106,6 @@ export function constructorDeclarationNodeFromConstructorDeclarationTokens(const
|
|
|
128
106
|
return constructorDeclarationNode;
|
|
129
107
|
}
|
|
130
108
|
|
|
131
|
-
export function unqualifiedMetastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser) {
|
|
132
|
-
const ruleName = UNQUALIFIED_METASTATEMENT_RULE_NAME,
|
|
133
|
-
unqualifiedMetastatementNode = nodeFromTokensRuleNameAndParser(unqualifiedMetastatementTokens, ruleName, parser);
|
|
134
|
-
|
|
135
|
-
return unqualifiedMetastatementNode;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
109
|
function nodeFromTokensRuleNameAndParser(tokens, ruleName, parser = florenceParser) {
|
|
139
110
|
const ruleMap = parser.getRuleMap(),
|
|
140
111
|
rule = ruleMap[ruleName],
|
package/src/utilities/tokens.js
CHANGED
|
@@ -40,14 +40,6 @@ export function unqualifiedStatementTokensFromStatementString(statementString, l
|
|
|
40
40
|
return unqualifiedStatementTokens;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export function unqualifiedMetastatementTokensFromMetastatementString(metastatementString, lexer) {
|
|
44
|
-
const unqualifiedMetastatementContent = `${metastatementString}
|
|
45
|
-
`,
|
|
46
|
-
unqualifiedMetastatementTokens = tokensFromContentAndLexer(unqualifiedMetastatementContent, lexer);
|
|
47
|
-
|
|
48
|
-
return unqualifiedMetastatementTokens;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
43
|
function tokensFromContentAndLexer(content, lexer = florenceLexer) {
|
|
52
44
|
const tokens = lexer.tokenise(content);
|
|
53
45
|
|
package/src/utilities/verify.js
CHANGED
|
@@ -5,26 +5,10 @@ import { nodeQuery } from "../utilities/query";
|
|
|
5
5
|
|
|
6
6
|
const secondOperatorTerminalNodeQuery = nodeQuery("/*/@operator[1]");
|
|
7
7
|
|
|
8
|
-
export function
|
|
9
|
-
const
|
|
10
|
-
negated = isNegated(node),
|
|
11
|
-
statementNegated = negated; ///
|
|
12
|
-
|
|
13
|
-
return statementNegated;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function isMetastatementNegated(metastatementNode) {
|
|
17
|
-
const node = metastatementNode, ///
|
|
18
|
-
negated = isNegated(node),
|
|
19
|
-
statementNegated = negated; ///
|
|
20
|
-
|
|
21
|
-
return statementNegated;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function isNegated(node) {
|
|
25
|
-
const secondOperatorTerminalNode = secondOperatorTerminalNodeQuery(node),
|
|
8
|
+
export function isAssertionNegated(assertionNode) {
|
|
9
|
+
const secondOperatorTerminalNode = secondOperatorTerminalNodeQuery(assertionNode),
|
|
26
10
|
content = secondOperatorTerminalNode.getContent(),
|
|
27
|
-
|
|
11
|
+
assertionNegated = (content === NOT);
|
|
28
12
|
|
|
29
|
-
return
|
|
13
|
+
return assertionNegated;
|
|
30
14
|
}
|
|
@@ -11,10 +11,9 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
11
11
|
statementNodeQuery = nodeQuery("/statement!"),
|
|
12
12
|
nonTerminalNodeQuery = nodeQuery("/*"),
|
|
13
13
|
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
14
|
-
metastatementNodeQuery = nodeQuery("/metastatement!"),
|
|
15
14
|
metaArgumentStatementNodeQuery = nodeQuery("/metaArgument/statement!"),
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!"),
|
|
16
|
+
statementSubstitutionNodeQuery = nodeQuery("/statement/substitution");
|
|
18
17
|
|
|
19
18
|
class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
20
19
|
verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
@@ -22,54 +21,54 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
22
21
|
|
|
23
22
|
const nodeQueryMaps = [
|
|
24
23
|
{
|
|
25
|
-
nodeQueryA:
|
|
24
|
+
nodeQueryA: statementMetavariableNodeQuery,
|
|
26
25
|
nodeQueryB: metaArgumentStatementNodeQuery,
|
|
27
26
|
verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
|
|
28
27
|
let nonTerminalNodeVerified;
|
|
29
28
|
|
|
30
29
|
const metaArgumentStatementNodeB = nodeB, ///
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
statementMetavariableNodeA = nodeA, ///
|
|
31
|
+
statementSubstitutionNodeA = statementSubstitutionNodeQuery(nonTerminalNodeA),
|
|
32
|
+
statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode =
|
|
34
33
|
|
|
35
|
-
this.
|
|
34
|
+
this.verifyStatementMetavariableNodeAgainstMetaArgumentStatementNode(statementMetavariableNodeA, metaArgumentStatementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead);
|
|
36
35
|
|
|
37
|
-
nonTerminalNodeVerified =
|
|
36
|
+
nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode; ///
|
|
38
37
|
|
|
39
38
|
return nonTerminalNodeVerified;
|
|
40
39
|
}
|
|
41
40
|
},
|
|
42
41
|
{
|
|
43
|
-
nodeQueryA:
|
|
42
|
+
nodeQueryA: statementMetavariableNodeQuery,
|
|
44
43
|
nodeQueryB: statementNodeQuery,
|
|
45
44
|
verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
|
|
46
45
|
let nonTerminalNodeVerified;
|
|
47
46
|
|
|
48
47
|
const statementNodeB = nodeB, ///
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
statementMetavariableNodeA = nodeA, ///
|
|
49
|
+
statementSubstitutionNodeA = statementSubstitutionNodeQuery(nonTerminalNodeA),
|
|
50
|
+
statementMetavariableNodeVerifiedAgainstStatementNode =
|
|
52
51
|
|
|
53
|
-
this.
|
|
52
|
+
this.verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead);
|
|
54
53
|
|
|
55
|
-
nonTerminalNodeVerified =
|
|
54
|
+
nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstStatementNode; ///
|
|
56
55
|
|
|
57
56
|
return nonTerminalNodeVerified;
|
|
58
57
|
}
|
|
59
58
|
},
|
|
60
59
|
{
|
|
61
|
-
nodeQueryA:
|
|
60
|
+
nodeQueryA: statementNodeQuery,
|
|
62
61
|
nodeQueryB: statementNodeQuery,
|
|
63
62
|
verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
|
|
64
63
|
let nonTerminalNodeVerified;
|
|
65
64
|
|
|
66
65
|
const statementNodeB = nodeB, ///
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
statementNodeA = nodeA, ///
|
|
67
|
+
statementNodeVerifiedAgainstStatementNode =
|
|
69
68
|
|
|
70
|
-
this.
|
|
69
|
+
this.verifyStatementNodeAgainstStatementNode(statementNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead);
|
|
71
70
|
|
|
72
|
-
nonTerminalNodeVerified =
|
|
71
|
+
nonTerminalNodeVerified = statementNodeVerifiedAgainstStatementNode; ///
|
|
73
72
|
|
|
74
73
|
return nonTerminalNodeVerified;
|
|
75
74
|
}
|
|
@@ -116,35 +115,35 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
116
115
|
return nonTerminalNodeVerified;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
|
-
|
|
120
|
-
let
|
|
118
|
+
verifyStatementMetavariableNodeAgainstMetaArgumentStatementNode(statementMetavariableNodeA, metaArgumentStatementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
|
|
119
|
+
let statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode;
|
|
121
120
|
|
|
122
121
|
const statementNodeB = metaArgumentStatementNodeB, ///
|
|
123
|
-
substitutionNode =
|
|
124
|
-
metavariableNodeA =
|
|
122
|
+
substitutionNode = statementSubstitutionNodeA, ///
|
|
123
|
+
metavariableNodeA = statementMetavariableNodeA, ///
|
|
125
124
|
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
128
127
|
|
|
129
|
-
return
|
|
128
|
+
return statementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode;
|
|
130
129
|
}
|
|
131
130
|
|
|
132
|
-
|
|
133
|
-
let
|
|
131
|
+
verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, statementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
|
|
132
|
+
let statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
134
133
|
|
|
135
|
-
const substitutionNode =
|
|
136
|
-
metavariableNodeA =
|
|
134
|
+
const substitutionNode = statementSubstitutionNodeA, ///
|
|
135
|
+
metavariableNodeA = statementMetavariableNodeA, ///
|
|
137
136
|
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
138
137
|
|
|
139
|
-
|
|
138
|
+
statementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
140
139
|
|
|
141
|
-
return
|
|
140
|
+
return statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
142
141
|
}
|
|
143
142
|
|
|
144
|
-
|
|
145
|
-
let
|
|
143
|
+
verifyStatementNodeAgainstStatementNode(statementNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
144
|
+
let statementNodeVerifiedAgainstStatementNode;
|
|
146
145
|
|
|
147
|
-
const nonTerminalNodeA =
|
|
146
|
+
const nonTerminalNodeA = statementNodeA, ///
|
|
148
147
|
nonTerminalNodeB = statementNodeB, ///
|
|
149
148
|
nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
|
|
150
149
|
nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
|
|
@@ -152,9 +151,9 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
152
151
|
childNodesB = nonTerminalNodeBChildNodes, ///
|
|
153
152
|
childNodesVerified = this.verifyChildNodes(childNodesA, childNodesB, substitutions, localContextA, localContextB, verifyAhead);
|
|
154
153
|
|
|
155
|
-
|
|
154
|
+
statementNodeVerifiedAgainstStatementNode = childNodesVerified; ///
|
|
156
155
|
|
|
157
|
-
return
|
|
156
|
+
return statementNodeVerifiedAgainstStatementNode;
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import NodesVerifier from "../../verifier/nodes";
|
|
4
4
|
import verifyVariableAgainstTerm from "../../verify/variableAgainstTerm";
|
|
5
|
-
import
|
|
5
|
+
import verifyMetavariableAgainstStatement from "../../verify/metavariableAgainstStatement";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../../utilities/query";
|
|
8
8
|
import { verifyNodes } from "../../utilities/verifier";
|
|
9
9
|
|
|
10
10
|
const termNodeQuery = nodeQuery("/term!"),
|
|
11
11
|
nonTerminalNodeQuery = nodeQuery("/*"),
|
|
12
|
+
statementNodeQuery = nodeQuery("/statement!"),
|
|
12
13
|
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
13
|
-
|
|
14
|
-
metastatementMetavariableNodeQuery = nodeQuery("/metastatement/metavariable!");
|
|
14
|
+
statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
|
|
15
15
|
|
|
16
16
|
class MetaLevelNodesVerifier extends NodesVerifier {
|
|
17
17
|
verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) {
|
|
@@ -19,18 +19,18 @@ class MetaLevelNodesVerifier extends NodesVerifier {
|
|
|
19
19
|
|
|
20
20
|
const nodeQueryMaps = [
|
|
21
21
|
{
|
|
22
|
-
nodeQueryA:
|
|
23
|
-
nodeQueryB:
|
|
22
|
+
nodeQueryA: statementMetavariableNodeQuery,
|
|
23
|
+
nodeQueryB: statementNodeQuery,
|
|
24
24
|
verifyNodes: (nodeA, nodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) => {
|
|
25
25
|
let nonTerminalNodeVerified;
|
|
26
26
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const statementNodeB = nodeB, ///
|
|
28
|
+
statementMetavariableNodeA = nodeA, ///
|
|
29
|
+
statementMetavariableNodeVerifiedAgainstStatementNode =
|
|
30
30
|
|
|
31
|
-
this.
|
|
31
|
+
this.verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
|
|
32
32
|
|
|
33
|
-
nonTerminalNodeVerified =
|
|
33
|
+
nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstStatementNode; ///
|
|
34
34
|
|
|
35
35
|
return nonTerminalNodeVerified;
|
|
36
36
|
}
|
|
@@ -77,16 +77,16 @@ class MetaLevelNodesVerifier extends NodesVerifier {
|
|
|
77
77
|
return nonTerminalNodeVerified;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
let
|
|
80
|
+
verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) {
|
|
81
|
+
let statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
82
82
|
|
|
83
|
-
const metavariableNode =
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
const metavariableNode = statementMetavariableNodeA, ///
|
|
84
|
+
statementNode = statementNodeB, ///
|
|
85
|
+
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutions, verifyAhead);
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
statementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
88
88
|
|
|
89
|
-
return
|
|
89
|
+
return statementMetavariableNodeVerifiedAgainstStatementNode;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
package/src/verify/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";
|
|
4
5
|
import verifyLabels from "../verify/labels";
|
|
5
6
|
import verifyConsequent from "../verify/consequent";
|
|
6
7
|
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,10 +16,9 @@ const labelNodesQuery = nodesQuery("/axiom/label"),
|
|
|
16
16
|
export default function verifyAxiom(axiomNode, fileContext) {
|
|
17
17
|
let axiomVerified = false;
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
labelNodes = labelNodesQuery(axiomNode),
|
|
19
|
+
const labelNodes = labelNodesQuery(axiomNode),
|
|
21
20
|
labelsString = fileContext.nodesAsString(labelNodes),
|
|
22
|
-
localContext =
|
|
21
|
+
localContext = LocalContext.fromFileContext(fileContext);
|
|
23
22
|
|
|
24
23
|
fileContext.trace(`Verifying the '${labelsString}' axiom...`, axiomNode);
|
|
25
24
|
|
package/src/verify/conclusion.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Conclusion from "../conclusion";
|
|
4
|
-
import verifyUnqualifiedStatement from "
|
|
5
|
-
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
4
|
+
import verifyUnqualifiedStatement from "../verify/statement/unqualified";
|
|
6
5
|
|
|
7
6
|
import { nodeQuery } from "../utilities/query";
|
|
8
7
|
|
|
9
8
|
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
10
|
-
|
|
11
|
-
unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement!"),
|
|
12
|
-
unqualifiedMetastatementNodeQuery = nodeQuery("/conclusion/unqualifiedMetastatement!");
|
|
9
|
+
unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement!");
|
|
13
10
|
|
|
14
11
|
export default function verifyConclusion(conclusionNode, conclusions, localContext) {
|
|
15
12
|
let conclusionVerified = false;
|
|
@@ -18,8 +15,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
|
|
|
18
15
|
|
|
19
16
|
localContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
|
|
20
17
|
|
|
21
|
-
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode)
|
|
22
|
-
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode);
|
|
18
|
+
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode);
|
|
23
19
|
|
|
24
20
|
if (unqualifiedStatementNode !== null) {
|
|
25
21
|
const derived = false,
|
|
@@ -29,12 +25,12 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
|
|
|
29
25
|
conclusionVerified = unqualifiedStatementVerified; ///
|
|
30
26
|
}
|
|
31
27
|
|
|
32
|
-
if (
|
|
28
|
+
if (unqualifiedStatementNode !== null) {
|
|
33
29
|
const derived = false,
|
|
34
30
|
assignments = [],
|
|
35
|
-
|
|
31
|
+
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
36
32
|
|
|
37
|
-
conclusionVerified =
|
|
33
|
+
conclusionVerified = unqualifiedStatementVerified; ///
|
|
38
34
|
}
|
|
39
35
|
|
|
40
36
|
if (conclusionVerified) {
|
|
@@ -46,10 +42,10 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
|
|
|
46
42
|
conclusion = Conclusion.fromStatementNode(statementNode);
|
|
47
43
|
}
|
|
48
44
|
|
|
49
|
-
if (
|
|
50
|
-
const
|
|
45
|
+
if (unqualifiedStatementNode !== null) {
|
|
46
|
+
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
51
47
|
|
|
52
|
-
conclusion = Conclusion.
|
|
48
|
+
conclusion = Conclusion.fromStatementNode(statementNode);
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
conclusions.push(conclusion);
|
package/src/verify/conjecture.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import Conjecture from "../conjecture";
|
|
4
4
|
import verifyProof from "../verify/proof";
|
|
5
5
|
import verifyLabels from "../verify/labels";
|
|
6
|
+
import LocalContext from "../context/local";
|
|
6
7
|
import verifyConsequent from "../verify/consequent";
|
|
7
8
|
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,10 +18,9 @@ const proofNodeQuery = nodeQuery("/conjecture/proof!"),
|
|
|
18
18
|
export default function verifyConjecture(conjectureNode, fileContext) {
|
|
19
19
|
let conjectureVerified = false;
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
labelNodes = labelNodesQuery(conjectureNode),
|
|
21
|
+
const labelNodes = labelNodesQuery(conjectureNode),
|
|
23
22
|
labelsString = fileContext.nodesAsString(labelNodes),
|
|
24
|
-
localContext =
|
|
23
|
+
localContext = LocalContext.fromFileContext(fileContext); ///
|
|
25
24
|
|
|
26
25
|
fileContext.trace(`Verifying the '${labelsString}' conjecture...`, conjectureNode);
|
|
27
26
|
|