occam-verify-cli 0.0.870 → 0.0.871
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 +13 -13
- package/lib/context/file.js +77 -73
- package/lib/label.js +5 -6
- package/lib/metaLemmaMetatheorem.js +13 -13
- package/lib/mixins/context.js +28 -28
- package/lib/rule.js +13 -13
- package/lib/ruleNames.js +4 -4
- package/lib/utilities/name.js +8 -8
- package/lib/utilities/node.js +14 -14
- package/lib/utilities/query.js +4 -9
- package/lib/utilities/tokens.js +6 -6
- package/lib/verify/axiom.js +4 -4
- package/lib/verify/conjecture.js +4 -4
- package/lib/verify/label.js +8 -9
- package/lib/verify/labels.js +15 -8
- package/lib/verify/lemma.js +4 -4
- package/lib/verify/metaLemma.js +4 -4
- package/lib/verify/metastatement/qualified.js +3 -3
- package/lib/verify/metatheorem.js +4 -4
- package/lib/verify/rule.js +4 -4
- package/lib/verify/statement/qualified.js +29 -29
- package/lib/verify/theorem.js +4 -4
- package/package.json +1 -1
- package/src/axiomLemmaTheoremConjecture.js +13 -13
- package/src/context/file.js +79 -73
- package/src/label.js +6 -7
- package/src/metaLemmaMetatheorem.js +13 -13
- package/src/mixins/context.js +17 -17
- package/src/rule.js +13 -13
- package/src/ruleNames.js +1 -1
- package/src/utilities/name.js +7 -7
- package/src/utilities/node.js +13 -13
- package/src/utilities/query.js +3 -9
- package/src/utilities/tokens.js +4 -4
- package/src/verify/axiom.js +4 -4
- package/src/verify/conjecture.js +4 -4
- package/src/verify/label.js +8 -9
- package/src/verify/labels.js +17 -7
- package/src/verify/lemma.js +4 -4
- package/src/verify/metaLemma.js +4 -4
- package/src/verify/metastatement/qualified.js +5 -4
- package/src/verify/metatheorem.js +4 -4
- package/src/verify/rule.js +4 -4
- package/src/verify/statement/qualified.js +35 -30
- package/src/verify/theorem.js +4 -4
|
@@ -32,19 +32,6 @@ export default class MetaLemmaMetatheorem {
|
|
|
32
32
|
return this.localContext;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
matchLabelNode(labelNode) {
|
|
36
|
-
const labelNodeMatches = this.labels.some((label) => {
|
|
37
|
-
const node = labelNode, ///
|
|
38
|
-
labelMatchesNode = label.matchNode(node);
|
|
39
|
-
|
|
40
|
-
if (labelMatchesNode) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
return labelNodeMatches;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
35
|
matchMetastatement(metastatementNode, metastatementLocalContext) {
|
|
49
36
|
let metastatementNatches;
|
|
50
37
|
|
|
@@ -79,6 +66,19 @@ export default class MetaLemmaMetatheorem {
|
|
|
79
66
|
return metastatementNatches;
|
|
80
67
|
}
|
|
81
68
|
|
|
69
|
+
matchLabelMetavariableNode(labelMetavariableNode) {
|
|
70
|
+
const labelMetavariableNodeMatches = this.labels.some((label) => {
|
|
71
|
+
const node = labelMetavariableNode, ///
|
|
72
|
+
labelMatchesNode = label.matchNode(node);
|
|
73
|
+
|
|
74
|
+
if (labelMatchesNode) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return labelMetavariableNodeMatches;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
82
|
toJSON(tokens) {
|
|
83
83
|
const labelsJSON = this.labels.map((label) => {
|
|
84
84
|
const labelJSON = label.toJSON(tokens);
|
package/src/mixins/context.js
CHANGED
|
@@ -26,25 +26,25 @@ function getConstructors() { return this.context.getConstructors(); }
|
|
|
26
26
|
|
|
27
27
|
function findTypeByTypeName(typeName) { return this.context.findTypeByTypeName(typeName); }
|
|
28
28
|
|
|
29
|
-
function findTypeByTypeNode(
|
|
29
|
+
function findTypeByTypeNode(labelMetavariableNode) { return this.context.findTypeByTypeNode(labelMetavariableNode); }
|
|
30
30
|
|
|
31
|
-
function
|
|
31
|
+
function isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
|
|
32
32
|
|
|
33
|
-
function
|
|
33
|
+
function isTypePresentByTypeNode(typeNode) { return this.context.isTypePresentByTypeNode(typeNode); }
|
|
34
34
|
|
|
35
|
-
function
|
|
35
|
+
function findLabelByLabelMetavariableNode(labelMetavariableNode) { return this.context.findLabelByLabelMetavariableNode(labelMetavariableNode); }
|
|
36
36
|
|
|
37
|
-
function
|
|
37
|
+
function findRuleByLabelMetavariableNode(labelMetavariableNode) { return this.context.findRuleByLabelMetavariableNode(labelMetavariableNode); }
|
|
38
38
|
|
|
39
|
-
function
|
|
39
|
+
function findAxiomByLabelMetavariableNode(labelMetavariableNode) { return this.context.findAxiomByLabelMetavariableNode(labelMetavariableNode); }
|
|
40
40
|
|
|
41
|
-
function
|
|
41
|
+
function findLemmaByLabelMetavariableNode(labelMetavariableNode) { return this.context.findLemmaByLabelMetavariableNode(labelMetavariableNode); }
|
|
42
42
|
|
|
43
|
-
function
|
|
43
|
+
function findTheoremByLabelMetavariableNode(labelMetavariableNode) { return this.context.findTheoremByLabelMetavariableNode(labelMetavariableNode); }
|
|
44
44
|
|
|
45
|
-
function
|
|
45
|
+
function findConjectureByLabelMetavariableNode(labelMetavariableNode) { return this.context.findConjectureByLabelMetavariableNode(labelMetavariableNode); }
|
|
46
46
|
|
|
47
|
-
function
|
|
47
|
+
function isLabelPresentByLabelMetavariableNode(labelMetavariableNode) { return this.context.isLabelPresentByLabelMetavariableNode(labelMetavariableNode); }
|
|
48
48
|
|
|
49
49
|
function nodeAsString(node) { return this.context.nodeAsString(node); }
|
|
50
50
|
|
|
@@ -65,15 +65,15 @@ const contextMixins = {
|
|
|
65
65
|
getConstructors,
|
|
66
66
|
findTypeByTypeName,
|
|
67
67
|
findTypeByTypeNode,
|
|
68
|
-
findLabelByLabelNode,
|
|
69
|
-
findRuleByLabelNode,
|
|
70
|
-
findAxiomByLabelNode,
|
|
71
|
-
findLemmaByLabelNode,
|
|
72
|
-
findTheoremByLabelNode,
|
|
73
|
-
findConjectureByLabelNode,
|
|
74
68
|
isTypePresentByTypeName,
|
|
75
69
|
isTypePresentByTypeNode,
|
|
76
|
-
|
|
70
|
+
findLabelByLabelMetavariableNode,
|
|
71
|
+
findRuleByLabelMetavariableNode,
|
|
72
|
+
findAxiomByLabelMetavariableNode,
|
|
73
|
+
findLemmaByLabelMetavariableNode,
|
|
74
|
+
findTheoremByLabelMetavariableNode,
|
|
75
|
+
findConjectureByLabelMetavariableNode,
|
|
76
|
+
isLabelPresentByLabelMetavariableNode,
|
|
77
77
|
nodeAsString,
|
|
78
78
|
nodesAsString
|
|
79
79
|
};
|
package/src/rule.js
CHANGED
|
@@ -31,19 +31,6 @@ export default class Rule {
|
|
|
31
31
|
return this.fileContext;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
matchLabelNode(labelNode) {
|
|
35
|
-
const labelNodeMatches = this.labels.some((label) => {
|
|
36
|
-
const node = labelNode, ///
|
|
37
|
-
labelMatchesNode = label.matchNode(node);
|
|
38
|
-
|
|
39
|
-
if (labelMatchesNode) {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
return labelNodeMatches;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
34
|
matchStatement(statementNode, statementLocalContext) {
|
|
48
35
|
let statementNatches;
|
|
49
36
|
|
|
@@ -112,6 +99,19 @@ export default class Rule {
|
|
|
112
99
|
return metastatementNatches;
|
|
113
100
|
}
|
|
114
101
|
|
|
102
|
+
matchLabelMetavariableNode(labelMetavariableNode) {
|
|
103
|
+
const labelMetavariableNodeMatches = this.labels.some((label) => {
|
|
104
|
+
const node = labelMetavariableNode, ///
|
|
105
|
+
labelMatchesNode = label.matchNode(node);
|
|
106
|
+
|
|
107
|
+
if (labelMatchesNode) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
return labelMetavariableNodeMatches;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
115
|
toJSON(tokens) {
|
|
116
116
|
const labelsJSON = this.labels.map((label) => {
|
|
117
117
|
const labelJSON = label.toJSON(tokens);
|
package/src/ruleNames.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
export const LABEL_RULE_NAME = "label";
|
|
4
3
|
export const SUBPROOF_RULE_NAME = "subproof";
|
|
4
|
+
export const METAVARIABLE_RULE_NAME = "metavariable";
|
|
5
5
|
export const RULE_SUBPROOF_RULE_NAME = "ruleSubproof";
|
|
6
6
|
export const META_SUBPROOF_RULE_NAME = "metaSubproof";
|
|
7
7
|
export const META_ARGUMENT_RULE_NAME = "metaArgument";
|
package/src/utilities/name.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import { nodeQuery } from "../utilities/query";
|
|
4
4
|
|
|
5
5
|
const typeTerminalNodeQuery = nodeQuery("/type/@type"),
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
nameTerminalNodeQuery = nodeQuery("/metavariable/@name"),
|
|
7
|
+
metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type");
|
|
8
8
|
|
|
9
9
|
export function typeNameFromTypeNode(typeNode) {
|
|
10
10
|
let typeName = null;
|
|
@@ -19,12 +19,12 @@ export function typeNameFromTypeNode(typeNode) {
|
|
|
19
19
|
return typeName;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export function
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
export function nameFromMetavariableNode(metavariableNode) {
|
|
23
|
+
const nameTerminalNode = nameTerminalNodeQuery(metavariableNode),
|
|
24
|
+
nameTerminalNodeContent = nameTerminalNode.getContent(),
|
|
25
|
+
name = nameTerminalNodeContent; ///
|
|
26
26
|
|
|
27
|
-
return
|
|
27
|
+
return name;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export function metaTypeNameFromMetaTypeNode(metaTypeNode) {
|
package/src/utilities/node.js
CHANGED
|
@@ -4,12 +4,12 @@ import { parsersUtilities } from "occam-custom-grammars";
|
|
|
4
4
|
|
|
5
5
|
import { nodeQuery } from "../utilities/query";
|
|
6
6
|
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
7
|
-
import {
|
|
7
|
+
import { METAVARIABLE_RULE_NAME,
|
|
8
8
|
VARIABLE_DECLARATION_RULE_NAME,
|
|
9
9
|
UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
10
10
|
CONSTRUCTOR_DECLARATION_RULE_NAME,
|
|
11
11
|
UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
12
|
-
import {
|
|
12
|
+
import { metavariableTokensFromMetavariableString,
|
|
13
13
|
variableDeclarationTokensFromVariableString,
|
|
14
14
|
unqualifiedStatementTokensFromStatementString,
|
|
15
15
|
unqualifiedMetastatementTokensFromMetastatementString } from "../utilities/tokens";
|
|
@@ -24,13 +24,6 @@ const termNodeQuery = nodeQuery("/constructorDeclaration/term!"),
|
|
|
24
24
|
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
|
|
25
25
|
metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
|
|
26
26
|
|
|
27
|
-
export function labelNodeFromLabelString(labelString, lexer, parser) {
|
|
28
|
-
const labelTokens = labelTokensFromLabelString(labelString, lexer),
|
|
29
|
-
labelNode = labelNodeFromLabelTokens(labelTokens, parser);
|
|
30
|
-
|
|
31
|
-
return labelNode;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
27
|
export function variableNodeFromVariableString(variableString, lexer, parser) {
|
|
35
28
|
const variableTDeclarationTokens = variableDeclarationTokensFromVariableString(variableString, lexer),
|
|
36
29
|
variableNode = variableNodeFromVariableVariableTDeclarationTokens(variableTDeclarationTokens, parser);
|
|
@@ -45,6 +38,13 @@ export function statementNodeFromStatementString(statementString, lexer, parser)
|
|
|
45
38
|
return statementNode;
|
|
46
39
|
}
|
|
47
40
|
|
|
41
|
+
export function metavariableNodeFromMetavariableString(metavariableString, lexer, parser) {
|
|
42
|
+
const metavariableTokens = metavariableTokensFromMetavariableString(metavariableString, lexer),
|
|
43
|
+
metavariableNode = metavariableNodeFromMetavariableTokens(metavariableTokens, parser);
|
|
44
|
+
|
|
45
|
+
return metavariableNode;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
48
|
export function metastatementNodeFromMetastatementString(metastatementString, lexer, parser) {
|
|
49
49
|
const unqualifiedMetastatementTokens = unqualifiedMetastatementTokensFromMetastatementString(metastatementString, lexer),
|
|
50
50
|
metastatementNode = metastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedMetastatementTokens, parser);
|
|
@@ -80,11 +80,11 @@ export function metastatementNodeFromUnqualifiedMetastatementTokens(unqualifiedM
|
|
|
80
80
|
return metastatementNode;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
export function
|
|
84
|
-
const ruleName =
|
|
85
|
-
|
|
83
|
+
export function metavariableNodeFromMetavariableTokens(metavariableTokens, parser) {
|
|
84
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
85
|
+
metavariableNode = nodeFromTokensRuleNameAndParser(metavariableTokens, ruleName, parser);
|
|
86
86
|
|
|
87
|
-
return
|
|
87
|
+
return metavariableNode;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
export function variableDeclarationNodeFromVariableTDeclarationTokens(variableTDeclarationTokens, parser) {
|
package/src/utilities/query.js
CHANGED
|
@@ -6,11 +6,9 @@ export function nodeQuery(expression) {
|
|
|
6
6
|
const query = Query.fromExpression(expression);
|
|
7
7
|
|
|
8
8
|
return function(node) {
|
|
9
|
-
|
|
10
|
-
const nodes = query.execute(node);
|
|
9
|
+
const nodes = query.execute(node);
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
}
|
|
11
|
+
node = nodes.shift() || null; ///
|
|
14
12
|
|
|
15
13
|
return node;
|
|
16
14
|
};
|
|
@@ -20,11 +18,7 @@ export function nodesQuery(expression) {
|
|
|
20
18
|
const query = Query.fromExpression(expression);
|
|
21
19
|
|
|
22
20
|
return function(node) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (node !== null) {
|
|
26
|
-
nodes = query.execute(node);
|
|
27
|
-
}
|
|
21
|
+
const nodes = query.execute(node);
|
|
28
22
|
|
|
29
23
|
return nodes;
|
|
30
24
|
};
|
package/src/utilities/tokens.js
CHANGED
|
@@ -9,11 +9,11 @@ const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities;
|
|
|
9
9
|
const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
10
10
|
florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
11
11
|
|
|
12
|
-
export function
|
|
13
|
-
const
|
|
14
|
-
|
|
12
|
+
export function metavariableTokensFromMetavariableString(metavariableString, lexer) {
|
|
13
|
+
const metavariableContent = `${metavariableString}`,
|
|
14
|
+
metavariableTokens = tokensFromContentAndLexer(metavariableContent, lexer);
|
|
15
15
|
|
|
16
|
-
return
|
|
16
|
+
return metavariableTokens;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function constructorDeclarationTokensFromTermString(termString, lexer) {
|
package/src/verify/axiom.js
CHANGED
|
@@ -9,21 +9,21 @@ import verifySuppositions from "../verify/suppositions";
|
|
|
9
9
|
import { first } from "../utilities/array";
|
|
10
10
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const labelsNodeQuery = nodeQuery("/axiom/labels!"),
|
|
13
13
|
consequentNodeQuery = nodeQuery("/axiom/consequent!"),
|
|
14
14
|
suppositionsNodeQuery = nodesQuery("/axiom/supposition");
|
|
15
15
|
|
|
16
16
|
export default function verifyAxiom(axiomNode, fileContext) {
|
|
17
17
|
let axiomVerified = false;
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
labelsString = fileContext.
|
|
19
|
+
const labelsNode = labelsNodeQuery(axiomNode),
|
|
20
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
21
21
|
localContext = LocalContext.fromFileContext(fileContext);
|
|
22
22
|
|
|
23
23
|
fileContext.trace(`Verifying the '${labelsString}' axiom...`, axiomNode);
|
|
24
24
|
|
|
25
25
|
const labels = [],
|
|
26
|
-
labelsVerified = verifyLabels(
|
|
26
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
27
27
|
|
|
28
28
|
if (labelsVerified) {
|
|
29
29
|
const suppositions = [],
|
package/src/verify/conjecture.js
CHANGED
|
@@ -11,21 +11,21 @@ import { first } from "../utilities/array";
|
|
|
11
11
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
12
12
|
|
|
13
13
|
const proofNodeQuery = nodeQuery("/conjecture/proof!"),
|
|
14
|
-
|
|
14
|
+
labelsNodeQuery = nodeQuery("/conjecture/labels!"),
|
|
15
15
|
consequentNodeQuery = nodeQuery("/conjecture/consequent!"),
|
|
16
16
|
suppositionsNodeQuery = nodesQuery("/conjecture/supposition");
|
|
17
17
|
|
|
18
18
|
export default function verifyConjecture(conjectureNode, fileContext) {
|
|
19
19
|
let conjectureVerified = false;
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
labelsString = fileContext.
|
|
21
|
+
const labelsNode = labelsNodeQuery(conjectureNode),
|
|
22
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
23
23
|
localContext = LocalContext.fromFileContext(fileContext);
|
|
24
24
|
|
|
25
25
|
fileContext.trace(`Verifying the '${labelsString}' conjecture...`, conjectureNode);
|
|
26
26
|
|
|
27
27
|
const labels = [],
|
|
28
|
-
labelsVerified = verifyLabels(
|
|
28
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
29
29
|
|
|
30
30
|
if (labelsVerified) {
|
|
31
31
|
const suppositions = [],
|
package/src/verify/label.js
CHANGED
|
@@ -2,21 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
import Label from "../label";
|
|
4
4
|
|
|
5
|
-
export default function verifyLabel(
|
|
5
|
+
export default function verifyLabel(labelsMetavariableNode, labels, fileContext) {
|
|
6
6
|
let labelVerified = false;
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const labelMetavariableString = fileContext.nodeAsString(labelsMetavariableNode);
|
|
9
9
|
|
|
10
|
-
fileContext.trace(`Verifying the '${
|
|
10
|
+
fileContext.trace(`Verifying the '${labelMetavariableString}' label...`, labelsMetavariableNode);
|
|
11
11
|
|
|
12
|
-
const labelPresent = fileContext.
|
|
12
|
+
const labelPresent = fileContext.isLabelPresentByLabelMetavariableNode(labelsMetavariableNode);
|
|
13
13
|
|
|
14
14
|
if (labelPresent) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
fileContext.debug(`The '${labelString}' label is already present.`, labelNode);
|
|
15
|
+
fileContext.debug(`The '${labelMetavariableString}' label is already present.`, labelsMetavariableNode);
|
|
18
16
|
} else {
|
|
19
|
-
const
|
|
17
|
+
const metavariableNode = labelsMetavariableNode, ///
|
|
18
|
+
label = Label.fromMetavariableNode(metavariableNode);
|
|
20
19
|
|
|
21
20
|
labels.push(label);
|
|
22
21
|
|
|
@@ -24,7 +23,7 @@ export default function verifyLabel(labelNode, labels, fileContext) {
|
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
if (labelVerified) {
|
|
27
|
-
fileContext.debug(`...verified the '${
|
|
26
|
+
fileContext.debug(`...verified the '${labelMetavariableString}' label.`, labelsMetavariableNode);
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
return labelVerified;
|
package/src/verify/labels.js
CHANGED
|
@@ -2,16 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyLabel from "../verify/label";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { nodesQuery } from "../utilities/query";
|
|
6
|
+
|
|
7
|
+
const labelsMetavariableNodesQuery = nodesQuery("/labels/metavariable");
|
|
8
|
+
|
|
9
|
+
export default function verifyLabels(labelsNode, labels, fileContext) {
|
|
6
10
|
let labelsVerified;
|
|
7
11
|
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
if (labelsNode === null) {
|
|
13
|
+
labelsVerified = true;
|
|
14
|
+
} else {
|
|
15
|
+
const labelsMetavariableNodes = labelsMetavariableNodesQuery(labelsNode);
|
|
16
|
+
|
|
17
|
+
labelsVerified = labelsMetavariableNodes.every((labelsMetavariableNode) => {
|
|
18
|
+
const labelVerified = verifyLabel(labelsMetavariableNode, labels, fileContext);
|
|
10
19
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
if (labelVerified) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
15
25
|
|
|
16
26
|
return labelsVerified;
|
|
17
27
|
}
|
package/src/verify/lemma.js
CHANGED
|
@@ -12,15 +12,15 @@ import { EMPTY_STRING } from "../constants";
|
|
|
12
12
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
13
13
|
|
|
14
14
|
const proofNodeQuery = nodeQuery("/lemma/proof!"),
|
|
15
|
-
|
|
15
|
+
labelsNodeQuery = nodeQuery("/lemma/labels!"),
|
|
16
16
|
consequentNodeQuery = nodeQuery("/lemma/consequent!"),
|
|
17
17
|
suppositionsNodeQuery = nodesQuery("/lemma/supposition");
|
|
18
18
|
|
|
19
19
|
export default function verifyLemma(lemmaNode, fileContext) {
|
|
20
20
|
let lemmaVerified = false;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
labelsString = fileContext.
|
|
22
|
+
const labelsNode = labelsNodeQuery(lemmaNode),
|
|
23
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
24
24
|
localContext = LocalContext.fromFileContext(fileContext);
|
|
25
25
|
|
|
26
26
|
(labelsString === EMPTY_STRING) ?
|
|
@@ -28,7 +28,7 @@ export default function verifyLemma(lemmaNode, fileContext) {
|
|
|
28
28
|
fileContext.trace(`Verifying the '${labelsString}' lemma...`, lemmaNode);
|
|
29
29
|
|
|
30
30
|
const labels = [],
|
|
31
|
-
labelsVerified = verifyLabels(
|
|
31
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
32
32
|
|
|
33
33
|
if (labelsVerified) {
|
|
34
34
|
const suppositions = [],
|
package/src/verify/metaLemma.js
CHANGED
|
@@ -11,7 +11,7 @@ import { first } from "../utilities/array";
|
|
|
11
11
|
import { EMPTY_STRING } from "../constants";
|
|
12
12
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
13
13
|
|
|
14
|
-
const
|
|
14
|
+
const labelsNodeQuery = nodeQuery("/metaLemma/labels!"),
|
|
15
15
|
metaproofNodeQuery = nodeQuery("/metaLemma/metaproof!"),
|
|
16
16
|
metaConsequentNodeQuery = nodeQuery("/metaLemma/metaConsequent!"),
|
|
17
17
|
metaSuppositionsNodeQuery = nodesQuery("/metaLemma/metaSupposition");
|
|
@@ -19,8 +19,8 @@ const labelNodesQuery = nodesQuery("/metaLemma//reference/label"),
|
|
|
19
19
|
export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
20
20
|
let metaLemmaVerified = false;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
labelsString = fileContext.
|
|
22
|
+
const labelsNode = labelsNodeQuery(metaLemmaNode),
|
|
23
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
24
24
|
localMetaContext = LocalMetaContext.fromFileContext(fileContext);
|
|
25
25
|
|
|
26
26
|
(labelsString === EMPTY_STRING) ?
|
|
@@ -28,7 +28,7 @@ export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
|
28
28
|
fileContext.trace(`Verifying the '${labelsString}' meta-lLemma...`, metaLemmaNode);
|
|
29
29
|
|
|
30
30
|
const labels = [],
|
|
31
|
-
labelsVerified = verifyLabels(
|
|
31
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
32
32
|
|
|
33
33
|
if (labelsVerified) {
|
|
34
34
|
const metaSuppositions = [],
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { nodeQuery } from "../../utilities/query";
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
5
|
+
const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement/metastatement!"),
|
|
6
|
+
referenceMetavariableNodeQuery = nodeQuery("/qualifiedMetastatement/reference!/metavariable!");
|
|
7
7
|
|
|
8
8
|
export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, derived, localMetaContext) {
|
|
9
9
|
let qualifiedMetastatementVerified = false;
|
|
@@ -16,8 +16,9 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
|
|
|
16
16
|
|
|
17
17
|
localMetaContext.trace(`Verifying the '${metastatementString}' qualified metastatement...`, qualifiedMetastatementNode);
|
|
18
18
|
|
|
19
|
-
const
|
|
20
|
-
|
|
19
|
+
const referenceMetavariableNode = referenceMetavariableNodeQuery(qualifiedMetastatementNode),
|
|
20
|
+
labelMetavariableNode = referenceMetavariableNode, ///
|
|
21
|
+
rule = localMetaContext.findRuleByLabelMetavariableNode(labelMetavariableNode);
|
|
21
22
|
|
|
22
23
|
if (rule !== null) {
|
|
23
24
|
const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, metastatementLocalMetaContext);
|
|
@@ -10,7 +10,7 @@ import verifyMetaSuppositions from "../verify/metaSuppositions";
|
|
|
10
10
|
import { first } from "../utilities/array";
|
|
11
11
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const labelsNodeQuery = nodeQuery("/metatheorem/labels!"),
|
|
14
14
|
metaproofNodeQuery = nodeQuery("/metatheorem/metaproof!"),
|
|
15
15
|
metaConsequentNodeQuery = nodeQuery("/metatheorem/metaConsequent!"),
|
|
16
16
|
metaSuppositionsNodeQuery = nodesQuery("/metatheorem/metaSupposition");
|
|
@@ -18,14 +18,14 @@ const labelNodesQuery = nodesQuery("/metatheorem//reference/label"),
|
|
|
18
18
|
export default function verifyMetatheorem(metatheoremNode, fileContext) {
|
|
19
19
|
let metatheoremVerified = false;
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
labelsString = fileContext.
|
|
21
|
+
const labelsNode = labelsNodeQuery(metatheoremNode),
|
|
22
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
23
23
|
localMetaContext = LocalMetaContext.fromFileContext(fileContext);
|
|
24
24
|
|
|
25
25
|
fileContext.trace(`Verifying the '${labelsString}' metatheorem...`, metatheoremNode);
|
|
26
26
|
|
|
27
27
|
const labels = [],
|
|
28
|
-
labelsVerified = verifyLabels(
|
|
28
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
29
29
|
|
|
30
30
|
if (labelsVerified) {
|
|
31
31
|
const metaSuppositions = [],
|
package/src/verify/rule.js
CHANGED
|
@@ -10,7 +10,7 @@ import verifyConclusion from "../verify/conclusion";
|
|
|
10
10
|
import { first } from "../utilities/array";
|
|
11
11
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const labelsNodeQuery = nodeQuery("/rule/labels!"),
|
|
14
14
|
premisesNodeQuery = nodesQuery("/rule/premise"),
|
|
15
15
|
ruleProofNodeQuery = nodeQuery("/rule/ruleProof!"),
|
|
16
16
|
conclusionNodeQuery = nodeQuery("/rule/conclusion!");
|
|
@@ -18,14 +18,14 @@ const labelNodesQuery = nodesQuery("/rule//reference/label"),
|
|
|
18
18
|
export default function verifyRule(ruleNode, fileContext) {
|
|
19
19
|
let ruleVerified = false;
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
labelsString = fileContext.
|
|
21
|
+
const labelsNode = labelsNodeQuery(ruleNode),
|
|
22
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
23
23
|
localMetaContext = LocalMetaContext.fromFileContext(fileContext);
|
|
24
24
|
|
|
25
25
|
fileContext.trace(`Verifying the '${labelsString}' rule...`, ruleNode);
|
|
26
26
|
|
|
27
27
|
const labels = [],
|
|
28
|
-
labelsVerified = verifyLabels(
|
|
28
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
29
29
|
|
|
30
30
|
if (labelsVerified) {
|
|
31
31
|
const premises = [],
|