occam-verify-cli 0.0.471 → 0.0.472
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/constants.js +4 -8
- package/lib/context/metaproof.js +9 -2
- package/lib/context/proof.js +9 -2
- package/lib/equality.js +22 -0
- package/lib/metaSubstitution.js +12 -52
- package/lib/step/metaproof.js +7 -7
- package/lib/substitution.js +16 -56
- package/lib/utilities/node.js +57 -4
- package/lib/verify/derivation.js +4 -6
- package/lib/verify/metaDerivation.js +4 -6
- package/lib/verify/metaproof.js +3 -6
- package/lib/verify/metastatement/qualified.js +1 -7
- package/lib/verify/metastatement/unqualified.js +1 -7
- package/lib/verify/proof.js +3 -6
- package/lib/verify/statement/qualified.js +1 -7
- package/lib/verify/statement/unqualified.js +1 -7
- package/package.json +1 -1
- package/src/constants.js +1 -2
- package/src/context/metaproof.js +5 -1
- package/src/context/proof.js +5 -1
- package/src/equality.js +8 -0
- package/src/metaSubstitution.js +16 -87
- package/src/step/metaproof.js +13 -14
- package/src/substitution.js +19 -90
- package/src/utilities/node.js +78 -1
- package/src/verify/derivation.js +3 -8
- package/src/verify/metaDerivation.js +3 -8
- package/src/verify/metaproof.js +2 -8
- package/src/verify/metastatement/qualified.js +0 -9
- package/src/verify/metastatement/unqualified.js +0 -9
- package/src/verify/proof.js +2 -8
- package/src/verify/statement/qualified.js +0 -9
- package/src/verify/statement/unqualified.js +0 -9
- package/lib/utilities/metaAssertion.js +0 -117
- package/lib/utilities/statement.js +0 -45
- package/src/utilities/metaAssertion.js +0 -176
- package/src/utilities/statement.js +0 -50
package/src/metaSubstitution.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { matchNodes, bracketedChildNodeFromChildNodes } from "./utilities/node";
|
|
4
4
|
|
|
5
5
|
export default class MetaSubstitution {
|
|
6
6
|
constructor(metavariableName, nodes) {
|
|
@@ -19,34 +19,34 @@ export default class MetaSubstitution {
|
|
|
19
19
|
matchNodes(nodes) {
|
|
20
20
|
let matches;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
|
|
22
|
+
const nodesA = this.nodes, ///
|
|
23
|
+
nodesB = nodes,
|
|
24
|
+
metaSubstitutionNodesMatch = matchNodes(nodesA, nodesB);
|
|
24
25
|
|
|
25
|
-
matches =
|
|
26
|
+
matches = metaSubstitutionNodesMatch; ///
|
|
26
27
|
|
|
27
28
|
if (!matches) {
|
|
28
29
|
const childNodes = nodes, ///
|
|
29
|
-
|
|
30
|
-
const nonTerminalNode = bracketedMetastatementChildNode, ///
|
|
31
|
-
childNodes = nonTerminalNode.getChildNodes(),
|
|
32
|
-
nodes = childNodes, ///
|
|
33
|
-
metaAssertionNonTerminalNodeMatches = matchMetaSubstitutionNodes(metaSubstitutionNodes, nodes),
|
|
34
|
-
bracketedMetastatementChildNodeMatches = metaAssertionNonTerminalNodeMatches; ///
|
|
30
|
+
bracketedChildNode = bracketedChildNodeFromChildNodes(childNodes);
|
|
35
31
|
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
if (bracketedChildNode !== null) {
|
|
33
|
+
const nonTerminalNode = bracketedChildNode, ///
|
|
34
|
+
childNodes = nonTerminalNode.getChildNodes(),
|
|
35
|
+
nodesB = childNodes, ///
|
|
36
|
+
nodesMatch = matchNodes(nodesA, nodesB);
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
matches = nodesMatch; ///
|
|
39
|
+
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
return matches;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
static fromMetavariableNameAndNodes(metavariableName, nodes) {
|
|
46
|
-
const
|
|
46
|
+
const bracketedChildNode = bracketedChildNodeFromChildNodes(nodes);
|
|
47
47
|
|
|
48
|
-
if (
|
|
49
|
-
const nonTerminalNode =
|
|
48
|
+
if (bracketedChildNode !== null) {
|
|
49
|
+
const nonTerminalNode = bracketedChildNode, ///
|
|
50
50
|
childNodes = nonTerminalNode.getChildNodes();
|
|
51
51
|
|
|
52
52
|
nodes = childNodes; ///
|
|
@@ -57,74 +57,3 @@ export default class MetaSubstitution {
|
|
|
57
57
|
return metaSubstitution;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
function matchMetaSubstitutionNode(metaSubstitutionNode, node) {
|
|
62
|
-
let metaSubstitutionNodeMatches = false;
|
|
63
|
-
|
|
64
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
65
|
-
ruleNodeTerminalNode = metaSubstitutionNode.isTerminalNode();
|
|
66
|
-
|
|
67
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
68
|
-
if (nodeTerminalNode) {
|
|
69
|
-
const terminalNode = node, ///
|
|
70
|
-
metaSubstitutionTerminalNode = metaSubstitutionNode, ///
|
|
71
|
-
metaSubstitutionTerminalNodeMatches = matchMetaSubstitutionTerminalNode(metaSubstitutionTerminalNode, terminalNode);
|
|
72
|
-
|
|
73
|
-
metaSubstitutionNodeMatches = metaSubstitutionTerminalNodeMatches; ///
|
|
74
|
-
} else {
|
|
75
|
-
const nonTerminalNode = node, ///
|
|
76
|
-
metaSubstitutionNonTerminalNode = metaSubstitutionNode, ///
|
|
77
|
-
metaSubstitutionNonTerminalNodeMatches = matchMetaSubstitutionNonTerminalNode(metaSubstitutionNonTerminalNode, nonTerminalNode);
|
|
78
|
-
|
|
79
|
-
metaSubstitutionNodeMatches = metaSubstitutionNonTerminalNodeMatches; ///
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return metaSubstitutionNodeMatches;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function matchMetaSubstitutionNodes(metaSubstitutionNodes, nodes) {
|
|
87
|
-
let metaSubstitutionNodesMatches = false;
|
|
88
|
-
|
|
89
|
-
const nodesLength = nodes.length,
|
|
90
|
-
metaSubstitutionNodesLength = metaSubstitutionNodes.length;
|
|
91
|
-
|
|
92
|
-
if (nodesLength === metaSubstitutionNodesLength) {
|
|
93
|
-
metaSubstitutionNodesMatches = nodes.every((node, index) => {
|
|
94
|
-
const metaSubstitutionNode = metaSubstitutionNodes[index],
|
|
95
|
-
metaSubstitutionNodeMatches = matchMetaSubstitutionNode(metaSubstitutionNode, node);
|
|
96
|
-
|
|
97
|
-
if (metaSubstitutionNodeMatches) {
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return metaSubstitutionNodesMatches;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function matchMetaSubstitutionTerminalNode(metaSubstitutionTerminalNode, terminalNode) {
|
|
107
|
-
const matches = metaSubstitutionTerminalNode.match(terminalNode),
|
|
108
|
-
metaSubstitutionTerminalNodeMatches = matches; ///
|
|
109
|
-
|
|
110
|
-
return metaSubstitutionTerminalNodeMatches;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function matchMetaSubstitutionNonTerminalNode(metaSubstitutionNonTerminalNode, nonTerminalNode) {
|
|
114
|
-
let metaSubstitutionNonTerminalNodeMatches = false;
|
|
115
|
-
|
|
116
|
-
const ruleName = nonTerminalNode.getRuleName(),
|
|
117
|
-
metaSubstitutionRuleName = metaSubstitutionNonTerminalNode.getRuleName(); ///
|
|
118
|
-
|
|
119
|
-
if (ruleName === metaSubstitutionRuleName) {
|
|
120
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
121
|
-
metaSubstitutionChildNodes = metaSubstitutionNonTerminalNode.getChildNodes(),
|
|
122
|
-
nodes = childNodes, ///
|
|
123
|
-
metaSubstitutionNodes = metaSubstitutionChildNodes, ///
|
|
124
|
-
metaSubstitutionNodesMatches = matchMetaSubstitutionNodes(metaSubstitutionNodes, nodes);
|
|
125
|
-
|
|
126
|
-
metaSubstitutionNonTerminalNodeMatches = metaSubstitutionNodesMatches; ///
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return metaSubstitutionNonTerminalNodeMatches;
|
|
130
|
-
}
|
package/src/step/metaproof.js
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { first, second } from "../utilities/array";
|
|
4
4
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
5
|
-
|
|
6
|
-
import { matchTopmostMetaAssertionMetastatementNode } from "../utilities/metaAssertion";
|
|
5
|
+
import { matchBracketedNonTerminalNode } from "../utilities/node";
|
|
7
6
|
|
|
8
7
|
const metastatementNodesQuery = nodesQuery("/metaSubproofAssertion/metastatement"),
|
|
9
8
|
metaSubproofAssertionNodeQuery = nodeQuery("/metastatement/metaSubproofAssertion"),
|
|
@@ -45,10 +44,10 @@ export default class MetaproofStep {
|
|
|
45
44
|
let metastatementsMatch = false;
|
|
46
45
|
|
|
47
46
|
if (this.metastatementNode !== null) {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
metastatementNodeMatches =
|
|
47
|
+
const nonTerminalNodeA = metastatementNode, ///
|
|
48
|
+
nonTerminalNodeB = this.metastatementNode, ///
|
|
49
|
+
bracketedNodeMatches = matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB),
|
|
50
|
+
metastatementNodeMatches = bracketedNodeMatches; ///
|
|
52
51
|
|
|
53
52
|
return metastatementNodeMatches;
|
|
54
53
|
}
|
|
@@ -65,19 +64,19 @@ export default class MetaproofStep {
|
|
|
65
64
|
qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.metaSubproofNode),
|
|
66
65
|
firstQualifiedOrUnqualifiedMetastatementMetastatementNode = first(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
67
66
|
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
const nonTerminalNodeA = firstMetaSubproofAssertionMetastatementNode, ///
|
|
68
|
+
nonTerminalNodeB = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
69
|
+
bracketedNodeMatches = matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
|
|
71
70
|
|
|
72
|
-
if (
|
|
71
|
+
if (bracketedNodeMatches) {
|
|
73
72
|
const secondMetaSubproofAssertionMetastatementNode = second(metaSubproofAssertionMetastatementNodes),
|
|
74
73
|
secondQualifiedOrUnqualifiedMetastatementMetastatementNode = second(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
75
74
|
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
const nonTerminalNodeA = secondMetaSubproofAssertionMetastatementNode, ///
|
|
76
|
+
nonTerminalNodeB = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
77
|
+
bracketedNodeMatches = matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
|
|
79
78
|
|
|
80
|
-
metaSubproofAssertionMatches =
|
|
79
|
+
metaSubproofAssertionMatches = bracketedNodeMatches; ///
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
82
|
|
package/src/substitution.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { matchNodes, bracketedChildNodeFromChildNodes } from "./utilities/node";
|
|
4
4
|
|
|
5
5
|
export default class Substitution {
|
|
6
6
|
constructor(variableName, nodes) {
|
|
@@ -19,112 +19,41 @@ export default class Substitution {
|
|
|
19
19
|
matchNodes(nodes) {
|
|
20
20
|
let matches;
|
|
21
21
|
|
|
22
|
-
const
|
|
23
|
-
|
|
22
|
+
const nodesA = this.nodes, ///
|
|
23
|
+
nodesB = nodes,
|
|
24
|
+
metaSubstitutionNodesMatch = matchNodes(nodesA, nodesB);
|
|
24
25
|
|
|
25
|
-
matches =
|
|
26
|
+
matches = metaSubstitutionNodesMatch; ///
|
|
26
27
|
|
|
27
28
|
if (!matches) {
|
|
28
29
|
const childNodes = nodes, ///
|
|
29
|
-
|
|
30
|
-
const nonTerminalNode = bracketedStatementChildNode, ///
|
|
31
|
-
childNodes = nonTerminalNode.getChildNodes(),
|
|
32
|
-
nodes = childNodes, ///
|
|
33
|
-
assertionNonTerminalNodeMatches = matchSubstitutionNodes(substitutionNodes, nodes),
|
|
34
|
-
bracketedStatementChildNodeMatches = assertionNonTerminalNodeMatches; ///
|
|
30
|
+
bracketedChildNode = bracketedChildNodeFromChildNodes(childNodes);
|
|
35
31
|
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
if (bracketedChildNode !== null) {
|
|
33
|
+
const nonTerminalNode = bracketedChildNode, ///
|
|
34
|
+
childNodes = nonTerminalNode.getChildNodes(),
|
|
35
|
+
nodesB = childNodes, ///
|
|
36
|
+
nodesMatch = matchNodes(nodesA, nodesB);
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
matches = nodesMatch; ///
|
|
39
|
+
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
return matches;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
static
|
|
46
|
-
const
|
|
45
|
+
static fromMetavariableNameAndNodes(variableName, nodes) {
|
|
46
|
+
const bracketedChildNode = bracketedChildNodeFromChildNodes(nodes);
|
|
47
47
|
|
|
48
|
-
if (
|
|
49
|
-
const nonTerminalNode =
|
|
48
|
+
if (bracketedChildNode !== null) {
|
|
49
|
+
const nonTerminalNode = bracketedChildNode, ///
|
|
50
50
|
childNodes = nonTerminalNode.getChildNodes();
|
|
51
51
|
|
|
52
52
|
nodes = childNodes; ///
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
return substitution;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function matchSubstitutionNode(substitutionNode, node) {
|
|
62
|
-
let substitutionNodeMatches = false;
|
|
63
|
-
|
|
64
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
65
|
-
ruleNodeTerminalNode = substitutionNode.isTerminalNode();
|
|
66
|
-
|
|
67
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
68
|
-
if (nodeTerminalNode) {
|
|
69
|
-
const terminalNode = node, ///
|
|
70
|
-
substitutionTerminalNode = substitutionNode, ///
|
|
71
|
-
substitutionTerminalNodeMatches = matchSubstitutionTerminalNode(substitutionTerminalNode, terminalNode);
|
|
72
|
-
|
|
73
|
-
substitutionNodeMatches = substitutionTerminalNodeMatches; ///
|
|
74
|
-
} else {
|
|
75
|
-
const nonTerminalNode = node, ///
|
|
76
|
-
substitutionNonTerminalNode = substitutionNode, ///
|
|
77
|
-
substitutionNonTerminalNodeMatches = matchSubstitutionNonTerminalNode(substitutionNonTerminalNode, nonTerminalNode);
|
|
78
|
-
|
|
79
|
-
substitutionNodeMatches = substitutionNonTerminalNodeMatches; ///
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return substitutionNodeMatches;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function matchSubstitutionNodes(substitutionNodes, nodes) {
|
|
87
|
-
let substitutionNodesMatches = false;
|
|
55
|
+
const metaSubstitution = new Substitution(variableName, nodes);
|
|
88
56
|
|
|
89
|
-
|
|
90
|
-
substitutionNodesLength = substitutionNodes.length;
|
|
91
|
-
|
|
92
|
-
if (nodesLength === substitutionNodesLength) {
|
|
93
|
-
substitutionNodesMatches = nodes.every((node, index) => {
|
|
94
|
-
const substitutionNode = substitutionNodes[index],
|
|
95
|
-
substitutionNodeMatches = matchSubstitutionNode(substitutionNode, node);
|
|
96
|
-
|
|
97
|
-
if (substitutionNodeMatches) {
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return substitutionNodesMatches;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function matchSubstitutionTerminalNode(substitutionTerminalNode, terminalNode) {
|
|
107
|
-
const matches = substitutionTerminalNode.match(terminalNode),
|
|
108
|
-
substitutionTerminalNodeMatches = matches; ///
|
|
109
|
-
|
|
110
|
-
return substitutionTerminalNodeMatches;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function matchSubstitutionNonTerminalNode(substitutionNonTerminalNode, nonTerminalNode) {
|
|
114
|
-
let substitutionNonTerminalNodeMatches = false;
|
|
115
|
-
|
|
116
|
-
const ruleName = nonTerminalNode.getRuleName(),
|
|
117
|
-
substitutionRuleName = substitutionNonTerminalNode.getRuleName(); ///
|
|
118
|
-
|
|
119
|
-
if (ruleName === substitutionRuleName) {
|
|
120
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
121
|
-
substitutionChildNodes = substitutionNonTerminalNode.getChildNodes(),
|
|
122
|
-
nodes = childNodes, ///
|
|
123
|
-
substitutionNodes = substitutionChildNodes, ///
|
|
124
|
-
substitutionNodesMatches = matchSubstitutionNodes(substitutionNodes, nodes);
|
|
125
|
-
|
|
126
|
-
substitutionNonTerminalNodeMatches = substitutionNodesMatches; ///
|
|
57
|
+
return metaSubstitution;
|
|
127
58
|
}
|
|
128
|
-
|
|
129
|
-
return substitutionNonTerminalNodeMatches;
|
|
130
59
|
}
|
package/src/utilities/node.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { first, second, third } from "./array";
|
|
4
|
+
import { METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
5
|
+
import { BRACKETED_CHILD_NODES_LENGTH, LEFT_BRACKET, RIGHT_BRACKET } from "../constants";
|
|
6
|
+
|
|
3
7
|
export function matchNode(nodeA, nodeB) {
|
|
4
8
|
let nodeMatches = false;
|
|
5
9
|
|
|
@@ -25,7 +29,7 @@ export function matchNode(nodeA, nodeB) {
|
|
|
25
29
|
return nodeMatches;
|
|
26
30
|
}
|
|
27
31
|
|
|
28
|
-
function matchNodes(nodesA, nodesB) {
|
|
32
|
+
export function matchNodes(nodesA, nodesB) {
|
|
29
33
|
let nodesMatch = false;
|
|
30
34
|
|
|
31
35
|
const nodesALength = nodesA.length,
|
|
@@ -45,6 +49,79 @@ function matchNodes(nodesA, nodesB) {
|
|
|
45
49
|
return nodesMatch;
|
|
46
50
|
}
|
|
47
51
|
|
|
52
|
+
export function matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
|
|
53
|
+
let bracketedNodeMatches = false;
|
|
54
|
+
|
|
55
|
+
if (!bracketedNodeMatches) {
|
|
56
|
+
const nonTerminalNodeMatches = matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
|
|
57
|
+
|
|
58
|
+
bracketedNodeMatches = nonTerminalNodeMatches; ///
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (!bracketedNodeMatches) {
|
|
62
|
+
const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
|
|
63
|
+
childNodesA = nonTerminalNodeAChildNodes, ///
|
|
64
|
+
bracketedChildNodeA = bracketedChildNodeFromChildNodes(childNodesA);
|
|
65
|
+
|
|
66
|
+
if (bracketedChildNodeA !== null) {
|
|
67
|
+
const nodeA = bracketedChildNodeA, ///
|
|
68
|
+
nodeB = nonTerminalNodeB, ///
|
|
69
|
+
nodeMatches = matchNode(nodeA, nodeB);
|
|
70
|
+
|
|
71
|
+
bracketedNodeMatches = nodeMatches; ///
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (!bracketedNodeMatches) {
|
|
76
|
+
const nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
|
|
77
|
+
childNodesB = nonTerminalNodeBChildNodes, ///
|
|
78
|
+
bracketedChildNodeB = bracketedChildNodeFromChildNodes(childNodesB);
|
|
79
|
+
|
|
80
|
+
if (bracketedChildNodeB !== null) {
|
|
81
|
+
const nodeB = bracketedChildNodeB, ///
|
|
82
|
+
nodeA = nonTerminalNodeA, ///
|
|
83
|
+
nodeMatches = matchNode(nodeA, nodeB);
|
|
84
|
+
|
|
85
|
+
bracketedNodeMatches = nodeMatches; ///
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return bracketedNodeMatches;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function bracketedChildNodeFromChildNodes(childNodes) {
|
|
93
|
+
let bracketedChildNode = null;
|
|
94
|
+
|
|
95
|
+
const childNodesLength = childNodes.length;
|
|
96
|
+
|
|
97
|
+
if (childNodesLength === BRACKETED_CHILD_NODES_LENGTH) {
|
|
98
|
+
const firstChildNode = first(childNodes),
|
|
99
|
+
thirdChildNode = third(childNodes),
|
|
100
|
+
secondChildNode = second(childNodes),
|
|
101
|
+
firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
|
|
102
|
+
thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
|
|
103
|
+
secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
|
|
104
|
+
|
|
105
|
+
if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
|
|
106
|
+
const nonTerminalNode = secondChildNode, ///
|
|
107
|
+
firstTerminalNode = firstChildNode, ///
|
|
108
|
+
secondTerminalNode = thirdChildNode, ///
|
|
109
|
+
nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
|
|
110
|
+
firstTerminalNodeContent = firstTerminalNode.getContent(),
|
|
111
|
+
secondTerminalNodeContent = secondTerminalNode.getContent(),
|
|
112
|
+
firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
|
|
113
|
+
secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
|
|
114
|
+
nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
|
|
115
|
+
|
|
116
|
+
if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
|
|
117
|
+
bracketedChildNode = nonTerminalNode; ///
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return bracketedChildNode;
|
|
123
|
+
}
|
|
124
|
+
|
|
48
125
|
function matchTerminalNode(terminalNodeA, terminalNodeB) {
|
|
49
126
|
const matches = terminalNodeA.match(terminalNodeB),
|
|
50
127
|
terminalNodeMatches = matches; ///
|
package/src/verify/derivation.js
CHANGED
|
@@ -14,14 +14,11 @@ const statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/s
|
|
|
14
14
|
unqualifiedStatementNodesQuery = nodesQuery("/subproof/unqualifiedStatement")
|
|
15
15
|
|
|
16
16
|
export default function verifyDerivation(derivationNode, proofContext) {
|
|
17
|
-
let derivationVerified
|
|
18
|
-
derived;
|
|
17
|
+
let derivationVerified;
|
|
19
18
|
|
|
20
19
|
proofContext.begin(derivationNode);
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
proofContext.setDerived(derived);
|
|
21
|
+
proofContext.setDerived();
|
|
25
22
|
|
|
26
23
|
const derivationChildNodes = derivationChildNodesQuery(derivationNode);
|
|
27
24
|
|
|
@@ -33,9 +30,7 @@ export default function verifyDerivation(derivationNode, proofContext) {
|
|
|
33
30
|
}
|
|
34
31
|
});
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
proofContext.setDerived(derived);
|
|
33
|
+
proofContext.setDerived();
|
|
39
34
|
|
|
40
35
|
derivationVerified ?
|
|
41
36
|
proofContext.complete(derivationNode) :
|
|
@@ -14,14 +14,11 @@ const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMet
|
|
|
14
14
|
unqualifiedMetastatementNodesQuery = nodesQuery("/metaSubproof/unqualifiedMetastatement")
|
|
15
15
|
|
|
16
16
|
export default function verifyMetaDerivation(metaDerivationNode, metaproofContext) {
|
|
17
|
-
let metaDerivationVerified
|
|
18
|
-
derived;
|
|
17
|
+
let metaDerivationVerified;
|
|
19
18
|
|
|
20
19
|
metaproofContext.begin(metaDerivationNode);
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
metaproofContext.setDerived(derived);
|
|
21
|
+
metaproofContext.setDerived();
|
|
25
22
|
|
|
26
23
|
const metaDerivationChildNodes = metaDerivationChildNodesQuery(metaDerivationNode);
|
|
27
24
|
|
|
@@ -33,9 +30,7 @@ export default function verifyMetaDerivation(metaDerivationNode, metaproofContex
|
|
|
33
30
|
}
|
|
34
31
|
});
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
metaproofContext.setDerived(derived);
|
|
33
|
+
metaproofContext.resetDerived();
|
|
39
34
|
|
|
40
35
|
metaDerivationVerified ?
|
|
41
36
|
metaproofContext.complete(metaDerivationNode) :
|
package/src/verify/metaproof.js
CHANGED
|
@@ -27,17 +27,11 @@ export default function verifyMetaproof(metaproofNode, conclusion, metaproofCont
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
if (qualifiedMetastatementNode !== null) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
derived = true;
|
|
33
|
-
|
|
34
|
-
metaproofContext.setDerived(derived);
|
|
30
|
+
metaproofContext.setDerived();
|
|
35
31
|
|
|
36
32
|
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
metaproofContext.setDerived(derived);
|
|
34
|
+
metaproofContext.resetDerived();
|
|
41
35
|
|
|
42
36
|
if (qualifiedMetastatementVerified) {
|
|
43
37
|
const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { nodeAsString } from "../../utilities/string";
|
|
4
3
|
import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
|
|
5
4
|
|
|
6
5
|
const referenceNodeQuery = nodeQuery("/qualifiedMetastatement/qualification!/reference!"),
|
|
@@ -11,10 +10,6 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
|
|
|
11
10
|
|
|
12
11
|
metaproofContext.begin(qualifiedMetastatementNode);
|
|
13
12
|
|
|
14
|
-
const qualifiedMetastatementString = nodeAsString(qualifiedMetastatementNode);
|
|
15
|
-
|
|
16
|
-
metaproofContext.debug(`Verifying the '${qualifiedMetastatementString}' qualified metastatement...`);
|
|
17
|
-
|
|
18
13
|
const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
|
|
19
14
|
|
|
20
15
|
if (metastatementNode !== null) {
|
|
@@ -29,10 +24,6 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
|
|
|
29
24
|
}
|
|
30
25
|
}
|
|
31
26
|
|
|
32
|
-
if (qualifiedMetastatementVerified) {
|
|
33
|
-
metaproofContext.info(`Verified the '${qualifiedMetastatementString}' qualified metastatement.`);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
27
|
qualifiedMetastatementVerified ?
|
|
37
28
|
metaproofContext.complete(qualifiedMetastatementNode) :
|
|
38
29
|
metaproofContext.halt(qualifiedMetastatementNode);
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import verifyMetastatement from "../../verify/metastatement";
|
|
4
4
|
|
|
5
5
|
import { nodeQuery } from "../../utilities/query";
|
|
6
|
-
import { nodeAsString } from "../../utilities/string";
|
|
7
6
|
|
|
8
7
|
const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
|
|
9
8
|
|
|
@@ -12,10 +11,6 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
|
|
|
12
11
|
|
|
13
12
|
metaproofContext.begin(unqualifiedMetastatementNode);
|
|
14
13
|
|
|
15
|
-
const unqualifiedMetastatementString = nodeAsString(unqualifiedMetastatementNode);
|
|
16
|
-
|
|
17
|
-
metaproofContext.debug(`Verifying the '${unqualifiedMetastatementString}' unqualified metastatement...`);
|
|
18
|
-
|
|
19
14
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
20
15
|
|
|
21
16
|
if (metastatementNode !== null) {
|
|
@@ -34,10 +29,6 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
|
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
31
|
|
|
37
|
-
if (unqualifiedMetastatementVerified) {
|
|
38
|
-
metaproofContext.info(`Verified the '${unqualifiedMetastatementString}' unqualified metastatement.`);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
32
|
unqualifiedMetastatementVerified ?
|
|
42
33
|
metaproofContext.complete(unqualifiedMetastatementNode) :
|
|
43
34
|
metaproofContext.halt(unqualifiedMetastatementNode);
|
package/src/verify/proof.js
CHANGED
|
@@ -27,17 +27,11 @@ export default function verifyProof(proofNode, conclusion, proofContext) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
if (qualifiedStatementNode !== null) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
derived = true;
|
|
33
|
-
|
|
34
|
-
proofContext.setDerived(derived);
|
|
30
|
+
proofContext.setDerived();
|
|
35
31
|
|
|
36
32
|
qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
proofContext.setDerived(derived);
|
|
34
|
+
proofContext.resetDerived();
|
|
41
35
|
|
|
42
36
|
if (qualifiedStatementVerified) {
|
|
43
37
|
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyStatement from "../../verify/statement";
|
|
4
4
|
|
|
5
|
-
import { nodeAsString } from "../../utilities/string";
|
|
6
5
|
import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
|
|
7
6
|
|
|
8
7
|
const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
|
|
@@ -13,10 +12,6 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, proofCo
|
|
|
13
12
|
|
|
14
13
|
proofContext.begin(qualifiedStatementNode);
|
|
15
14
|
|
|
16
|
-
const qualifiedStatementString = nodeAsString(qualifiedStatementNode);
|
|
17
|
-
|
|
18
|
-
proofContext.debug(`Verifying the '${qualifiedStatementString}' qualified statement...`);
|
|
19
|
-
|
|
20
15
|
const statementNode = statementNodeQuery(qualifiedStatementNode);
|
|
21
16
|
|
|
22
17
|
if (statementNode !== null) {
|
|
@@ -33,10 +28,6 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, proofCo
|
|
|
33
28
|
}
|
|
34
29
|
}
|
|
35
30
|
|
|
36
|
-
if (qualifiedStatementVerified) {
|
|
37
|
-
proofContext.info(`Verified the '${qualifiedStatementString}' qualified statement.`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
31
|
qualifiedStatementVerified ?
|
|
41
32
|
proofContext.complete(qualifiedStatementNode) :
|
|
42
33
|
proofContext.halt(qualifiedStatementNode);
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import verifyStatement from "../../verify/statement";
|
|
4
4
|
|
|
5
5
|
import { nodeQuery } from "../../utilities/query";
|
|
6
|
-
import { nodeAsString } from "../../utilities/string";
|
|
7
6
|
|
|
8
7
|
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
|
|
9
8
|
|
|
@@ -12,10 +11,6 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
|
|
|
12
11
|
|
|
13
12
|
proofContext.begin(unqualifiedStatementNode);
|
|
14
13
|
|
|
15
|
-
const unqualifiedStatementString = nodeAsString(unqualifiedStatementNode);
|
|
16
|
-
|
|
17
|
-
proofContext.debug(`Verifying the '${unqualifiedStatementString}' unqualified statement...`);
|
|
18
|
-
|
|
19
14
|
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
20
15
|
|
|
21
16
|
if (statementNode !== null) {
|
|
@@ -34,10 +29,6 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
|
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
31
|
|
|
37
|
-
if (unqualifiedStatementVerified) {
|
|
38
|
-
proofContext.info(`Verified the '${unqualifiedStatementString}' unqualified statement.`);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
32
|
unqualifiedStatementVerified ?
|
|
42
33
|
proofContext.complete(unqualifiedStatementNode) :
|
|
43
34
|
proofContext.halt(unqualifiedStatementNode);
|