occam-verify-cli 0.0.267 → 0.0.269
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/bin/context/file.js +6 -10
- package/bin/context/metaproof.js +16 -24
- package/bin/metaAssertion.js +137 -0
- package/bin/ruleNames.js +2 -2
- package/bin/verify/metaAntecedent.js +10 -1
- package/bin/verify/metaDerivation.js +47 -29
- package/bin/verify/metaproof.js +1 -1
- package/bin/verify/metastatement/qualified.js +8 -6
- package/bin/verify/metastatement/unqualified.js +9 -8
- package/bin/verify/premiseOrPremises.js +4 -0
- package/bin/verify/unconditionalInference.js +13 -15
- package/package.json +3 -3
package/bin/context/file.js
CHANGED
|
@@ -186,6 +186,12 @@ class FileContext {
|
|
|
186
186
|
return labelPresent;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
isMetaAssertionPresent(metaAssertion) {
|
|
190
|
+
const metaAssertionPresent = false;
|
|
191
|
+
|
|
192
|
+
return metaAssertionPresent;
|
|
193
|
+
}
|
|
194
|
+
|
|
189
195
|
isTypePresentByTypeName(typeName) {
|
|
190
196
|
const type = this.findTypeByTypeName(typeName),
|
|
191
197
|
typePresent = (type !== null);
|
|
@@ -193,12 +199,6 @@ class FileContext {
|
|
|
193
199
|
return typePresent;
|
|
194
200
|
}
|
|
195
201
|
|
|
196
|
-
isMetastatementNodePresent(metaStatementNode) {
|
|
197
|
-
const metastatementNodePresent = false;
|
|
198
|
-
|
|
199
|
-
return metastatementNodePresent;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
202
|
isVariablePresentByVariableName(variableName) {
|
|
203
203
|
const variable = this.findVariableByVariableName(variableName),
|
|
204
204
|
variablePresent = (variable !== null);
|
|
@@ -230,10 +230,6 @@ class FileContext {
|
|
|
230
230
|
this.constructors.push(constructor);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
setInAntecedent(inAntecedent) {
|
|
234
|
-
///
|
|
235
|
-
}
|
|
236
|
-
|
|
237
233
|
static fromPackageContextAndFilePath(packageContext, filePath) {
|
|
238
234
|
const fileContent = packageContext.getFileContent(filePath),
|
|
239
235
|
content = fileContent, ///
|
package/bin/context/metaproof.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const { nodeAsString } = require("../utilities/string");
|
|
4
|
-
|
|
5
3
|
class MetaproofContext {
|
|
6
|
-
constructor(context, derived,
|
|
4
|
+
constructor(context, derived, metaAssertions) {
|
|
7
5
|
this.context = context;
|
|
8
6
|
this.derived = derived;
|
|
9
|
-
this.
|
|
7
|
+
this.metaAssertions = metaAssertions;
|
|
10
8
|
}
|
|
11
9
|
|
|
12
10
|
getContext() {
|
|
@@ -17,8 +15,8 @@ class MetaproofContext {
|
|
|
17
15
|
return this.derived;
|
|
18
16
|
}
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
return this.
|
|
18
|
+
getMetaAssertions() {
|
|
19
|
+
return this.metaAssertions;
|
|
22
20
|
}
|
|
23
21
|
|
|
24
22
|
getRules() { return this.context.getRules(); }
|
|
@@ -41,47 +39,41 @@ class MetaproofContext {
|
|
|
41
39
|
|
|
42
40
|
isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
const
|
|
42
|
+
isMetaAssertionPresent(metaAssertion) {
|
|
43
|
+
const metaAssertionA = metaAssertion; ///
|
|
46
44
|
|
|
47
|
-
let
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
metastatementNodeBString = nodeAsString(metastatementNodeB),
|
|
51
|
-
matches = (metastatementNodeAString === metastatementNodeBString);
|
|
45
|
+
let metaAssertionPresent = this.metaAssertions.some((metaAssertion) => {
|
|
46
|
+
const metaAssertionB = metaAssertion, ///
|
|
47
|
+
matches = metaAssertionA.match(metaAssertionB);
|
|
52
48
|
|
|
53
49
|
if (matches) {
|
|
54
50
|
return true;
|
|
55
51
|
}
|
|
56
52
|
});
|
|
57
53
|
|
|
58
|
-
if (!
|
|
59
|
-
|
|
54
|
+
if (!metaAssertionPresent) {
|
|
55
|
+
metaAssertionPresent = this.context.isMetaAssertionPresent(metaAssertion);
|
|
60
56
|
}
|
|
61
57
|
|
|
62
|
-
return
|
|
58
|
+
return metaAssertionPresent;
|
|
63
59
|
}
|
|
64
60
|
|
|
65
61
|
isVariablePresentByVariableName(variableName) { return this.context.isVariablePresentByVariableName(variableName); }
|
|
66
62
|
|
|
67
63
|
setDerived(derived) {
|
|
68
|
-
if (derived) {
|
|
69
|
-
this.metastatementNodes.pop();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
64
|
this.derived = derived;
|
|
73
65
|
}
|
|
74
66
|
|
|
75
67
|
addRule(rule) { this.context.addRule(rule); }
|
|
76
68
|
|
|
77
|
-
|
|
78
|
-
this.
|
|
69
|
+
addMetaAssertion(metaAssertion) {
|
|
70
|
+
this.metaAssertions.push(metaAssertion);
|
|
79
71
|
}
|
|
80
72
|
|
|
81
73
|
static fromContext(context) {
|
|
82
74
|
const derived = false,
|
|
83
|
-
|
|
84
|
-
metaproofContext = new MetaproofContext(context, derived,
|
|
75
|
+
metaAssertions = [],
|
|
76
|
+
metaproofContext = new MetaproofContext(context, derived, metaAssertions);
|
|
85
77
|
|
|
86
78
|
return metaproofContext;
|
|
87
79
|
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const { nodeQuery } = require("./utilities/query");
|
|
4
|
+
|
|
5
|
+
const metastatementNodeQuery = nodeQuery("/*/metastatement!");
|
|
6
|
+
|
|
7
|
+
class MetaAssertion {
|
|
8
|
+
constructor(metaSubproofNode, metastatementNode) {
|
|
9
|
+
this.metaSubproofNode = metaSubproofNode;
|
|
10
|
+
this.metastatementNode = metastatementNode;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
getMetaSubproofNode() {
|
|
14
|
+
return this.metaSubproofNode;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
getMetastatementNode() {
|
|
18
|
+
return this.metastatementNode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
match(metaAssertion) {
|
|
22
|
+
let matches = false;
|
|
23
|
+
|
|
24
|
+
const metastatementNode = metaAssertion.getMetastatementNode();
|
|
25
|
+
|
|
26
|
+
if ((metastatementNode !== null) && (this.metastatementNode !== null)) {
|
|
27
|
+
const nonTerminalNode = this.metastatementNode, ///
|
|
28
|
+
metaAssertionNonTerminalNode = metastatementNode, ///
|
|
29
|
+
metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
|
|
30
|
+
|
|
31
|
+
matches = metaAssertionNonTerminalNodeMatches; ///
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return matches;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static fromMetaSubproofNode(metaSubproofNode) {
|
|
38
|
+
const metastatementNode = null,
|
|
39
|
+
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
40
|
+
|
|
41
|
+
return metaAssertion;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static fromQualifiedMetastatementNode(qualifiedMetastatementNode) {
|
|
45
|
+
const metaSubproofNode = null,
|
|
46
|
+
metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
|
|
47
|
+
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
48
|
+
|
|
49
|
+
return metaAssertion;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode) {
|
|
53
|
+
const metaSubproofNode = null,
|
|
54
|
+
metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
55
|
+
metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
|
|
56
|
+
|
|
57
|
+
return metaAssertion;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
module.exports = MetaAssertion;
|
|
62
|
+
|
|
63
|
+
function matchMetaAssertionNode(metaAssertionNode, node) {
|
|
64
|
+
let metaAssertionNodeMatches = false;
|
|
65
|
+
|
|
66
|
+
const nodeTerminalNode = node.isTerminalNode(),
|
|
67
|
+
ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
|
|
68
|
+
|
|
69
|
+
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
70
|
+
if (nodeTerminalNode) {
|
|
71
|
+
const terminalNode = node, ///
|
|
72
|
+
metaAssertionTerminalNode = metaAssertionNode, ///
|
|
73
|
+
metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
|
|
74
|
+
|
|
75
|
+
metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
|
|
76
|
+
} else {
|
|
77
|
+
const nonTerminalNode = node, ///
|
|
78
|
+
metaAssertionNonTerminalNode = metaAssertionNode, ///
|
|
79
|
+
metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
|
|
80
|
+
|
|
81
|
+
metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return metaAssertionNodeMatches;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function matchMetaAssertionChildNodes(metaAssertionChildNodes, childNodes) {
|
|
89
|
+
let metaAssertionChildNodesMatches = false;
|
|
90
|
+
|
|
91
|
+
const childNodesLength = childNodes.length,
|
|
92
|
+
metaAssertionChildNodesLength = metaAssertionChildNodes.length;
|
|
93
|
+
|
|
94
|
+
if (childNodesLength === metaAssertionChildNodesLength) {
|
|
95
|
+
metaAssertionChildNodesMatches = childNodes.every((childNode, index) => {
|
|
96
|
+
const metaAssertionChildNode = metaAssertionChildNodes[index],
|
|
97
|
+
metaAssertionNode = metaAssertionChildNode, ///
|
|
98
|
+
node = childNode, ///
|
|
99
|
+
metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
|
|
100
|
+
|
|
101
|
+
if (metaAssertionNodeMatches) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return metaAssertionChildNodesMatches;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
|
|
111
|
+
let metaAssertionTerminalNodeMatches = false;
|
|
112
|
+
|
|
113
|
+
const matches = metaAssertionTerminalNode.match(terminalNode);
|
|
114
|
+
|
|
115
|
+
if (matches) {
|
|
116
|
+
metaAssertionTerminalNodeMatches = true;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return metaAssertionTerminalNodeMatches;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
|
|
123
|
+
let metaAssertionNonTerminalNodeMatches = false;
|
|
124
|
+
|
|
125
|
+
const ruleName = nonTerminalNode.getRuleName(),
|
|
126
|
+
metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
|
|
127
|
+
|
|
128
|
+
if (ruleName === metaAssertionRuleName) {
|
|
129
|
+
const childNodes = nonTerminalNode.getChildNodes(),
|
|
130
|
+
metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
|
|
131
|
+
metaAssertionChildNodesMatches = matchMetaAssertionChildNodes(metaAssertionChildNodes, childNodes);
|
|
132
|
+
|
|
133
|
+
metaAssertionNonTerminalNodeMatches = metaAssertionChildNodesMatches; ///
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return metaAssertionNonTerminalNodeMatches;
|
|
137
|
+
}
|
package/bin/ruleNames.js
CHANGED
|
@@ -4,7 +4,7 @@ const TERM_RULE_NAME = "term",
|
|
|
4
4
|
TYPE_RULE_NAME = "type",
|
|
5
5
|
ARGUMENT_RULE_NAME = "argument",
|
|
6
6
|
METAVARIABLE_RULE_NAME = "metavariable",
|
|
7
|
-
|
|
7
|
+
META_SUBPROOF_RULE_NAME = "metaSubproof",
|
|
8
8
|
QUALIFIED_METASTATEMENT_RULE_NAME = "qualifiedMetastatement",
|
|
9
9
|
UNQUALIFIED_METASTATEMENT_RULE_NAME = "unqualifiedMetastatement";
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ module.exports = {
|
|
|
13
13
|
TYPE_RULE_NAME,
|
|
14
14
|
ARGUMENT_RULE_NAME,
|
|
15
15
|
METAVARIABLE_RULE_NAME,
|
|
16
|
-
|
|
16
|
+
META_SUBPROOF_RULE_NAME,
|
|
17
17
|
QUALIFIED_METASTATEMENT_RULE_NAME,
|
|
18
18
|
UNQUALIFIED_METASTATEMENT_RULE_NAME
|
|
19
19
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const MetaAssertion = require("../metaAssertion"),
|
|
4
|
+
verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
|
|
4
5
|
|
|
5
6
|
const { nodesQuery } = require("../utilities/query");
|
|
6
7
|
|
|
@@ -16,6 +17,14 @@ function verifyMetaAntecedent(metaAntecedentNode, context) {
|
|
|
16
17
|
}
|
|
17
18
|
});
|
|
18
19
|
|
|
20
|
+
if (metaAntecedentVerified) {
|
|
21
|
+
unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
|
|
22
|
+
const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
|
|
23
|
+
|
|
24
|
+
context.addMetaAssertion(metaAssertion);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
19
28
|
return metaAntecedentVerified;
|
|
20
29
|
}
|
|
21
30
|
|
|
@@ -1,104 +1,122 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const MetaAssertion = require("../metaAssertion"),
|
|
4
|
+
MetaproofContext = require("../context/metaproof"),
|
|
4
5
|
verifyMetaAntecedent = require("../verify/metaAntecedent"),
|
|
5
6
|
verifyQualifiedMetastatement = require("../verify/metastatement/qualified"),
|
|
6
7
|
verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
|
|
7
8
|
|
|
8
9
|
const { nodeQuery, nodesQuery } = require("../utilities/query"),
|
|
9
|
-
{
|
|
10
|
+
{ META_SUBPROOF_RULE_NAME, QUALIFIED_METASTATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } = require("../ruleNames");
|
|
10
11
|
|
|
11
|
-
const metaAntecedentNodeQuery = nodeQuery("/
|
|
12
|
-
metaDerivationNodeQuery = nodeQuery("/
|
|
12
|
+
const metaAntecedentNodeQuery = nodeQuery("/metaSubproof/metaAntecedent!"),
|
|
13
|
+
metaDerivationNodeQuery = nodeQuery("/metaSubproof/metaDerivation!"),
|
|
13
14
|
metaDerivationChildNodesQuery = nodesQuery("/metaDerivation/*"),
|
|
14
|
-
qualifiedMetastatementNodeQuery = nodeQuery("/
|
|
15
|
-
unqualifiedMetastatementNodeQuery = nodeQuery("/
|
|
15
|
+
qualifiedMetastatementNodeQuery = nodeQuery("/metaSubproof/qualifiedMetastatement!"),
|
|
16
|
+
unqualifiedMetastatementNodeQuery = nodeQuery("/metaSubproof/unqualifiedMetastatement!");
|
|
16
17
|
|
|
17
18
|
function verifyMetaDerivation(metaDerivationNode, context) {
|
|
18
19
|
const derived = true;
|
|
19
20
|
|
|
20
21
|
context.setDerived(derived);
|
|
21
22
|
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
let
|
|
23
|
+
const metaDerivationChildNodes = metaDerivationChildNodesQuery(metaDerivationNode),
|
|
24
|
+
metaDerivationChildNodesVerified = metaDerivationChildNodes.every((metaDerivationChildNode) => {
|
|
25
|
+
let metaDerivationChildNodeVerified;
|
|
25
26
|
|
|
26
|
-
const ruleName =
|
|
27
|
+
const ruleName = metaDerivationChildNode.getRuleName();
|
|
27
28
|
|
|
28
29
|
switch (ruleName) {
|
|
29
|
-
case
|
|
30
|
-
const
|
|
31
|
-
|
|
30
|
+
case META_SUBPROOF_RULE_NAME: {
|
|
31
|
+
const metaSubproofNode = metaDerivationChildNode, ///
|
|
32
|
+
metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, context);
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
if (metaSubproofVerified) {
|
|
35
|
+
const metaAssertion = MetaAssertion.fromMetaSubproofNode(metaSubproofNode);
|
|
36
|
+
|
|
37
|
+
context.addMetaAssertion(metaAssertion);
|
|
38
|
+
|
|
39
|
+
metaDerivationChildNodeVerified = true;
|
|
40
|
+
}
|
|
34
41
|
|
|
35
42
|
break;
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
case QUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
39
|
-
const qualifiedMetastatementNode =
|
|
46
|
+
const qualifiedMetastatementNode = metaDerivationChildNode, ///
|
|
40
47
|
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, context);
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
if (qualifiedMetastatementVerified) {
|
|
50
|
+
const metaAssertion = MetaAssertion.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
|
|
51
|
+
|
|
52
|
+
context.addMetaAssertion(metaAssertion);
|
|
53
|
+
|
|
54
|
+
metaDerivationChildNodeVerified = qualifiedMetastatementVerified; ///
|
|
55
|
+
}
|
|
43
56
|
|
|
44
57
|
break;
|
|
45
58
|
}
|
|
46
59
|
|
|
47
60
|
case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
48
|
-
const unqualifiedMetastatementNode =
|
|
61
|
+
const unqualifiedMetastatementNode = metaDerivationChildNode, ///
|
|
49
62
|
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
|
|
50
63
|
|
|
51
|
-
|
|
64
|
+
if (unqualifiedMetastatementVerified) {
|
|
65
|
+
const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
|
|
66
|
+
|
|
67
|
+
context.addMetaAssertion(metaAssertion);
|
|
52
68
|
|
|
69
|
+
metaDerivationChildNodeVerified = true;
|
|
70
|
+
}
|
|
53
71
|
break;
|
|
54
72
|
}
|
|
55
73
|
}
|
|
56
74
|
|
|
57
|
-
return
|
|
75
|
+
return metaDerivationChildNodeVerified;
|
|
58
76
|
}),
|
|
59
|
-
metaDerivationVerified =
|
|
77
|
+
metaDerivationVerified = metaDerivationChildNodesVerified; ///
|
|
60
78
|
|
|
61
79
|
return metaDerivationVerified;
|
|
62
80
|
}
|
|
63
81
|
|
|
64
82
|
module.exports = verifyMetaDerivation;
|
|
65
83
|
|
|
66
|
-
function
|
|
67
|
-
let
|
|
84
|
+
function verifyMetaSubproof(metaSubproofNode, context) {
|
|
85
|
+
let metaSubproofVerified = false;
|
|
68
86
|
|
|
69
87
|
const metaproofContext = MetaproofContext.fromContext(context);
|
|
70
88
|
|
|
71
89
|
context = metaproofContext; ///
|
|
72
90
|
|
|
73
|
-
const metaAntecedentNode = metaAntecedentNodeQuery(
|
|
91
|
+
const metaAntecedentNode = metaAntecedentNodeQuery(metaSubproofNode),
|
|
74
92
|
metaAntecedentVerified = verifyMetaAntecedent(metaAntecedentNode, context);
|
|
75
93
|
|
|
76
94
|
if (metaAntecedentVerified) {
|
|
77
95
|
let metaDerivationVerified = true;
|
|
78
96
|
|
|
79
|
-
const metaDerivationNode = metaDerivationNodeQuery(
|
|
97
|
+
const metaDerivationNode = metaDerivationNodeQuery(metaSubproofNode);
|
|
80
98
|
|
|
81
99
|
if (metaDerivationNode !== null) {
|
|
82
100
|
metaDerivationVerified = verifyMetaDerivation(metaDerivationNode, context);
|
|
83
101
|
}
|
|
84
102
|
|
|
85
103
|
if (metaDerivationVerified) {
|
|
86
|
-
const qualifiedMetastatementNode = qualifiedMetastatementNodeQuery(
|
|
87
|
-
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(
|
|
104
|
+
const qualifiedMetastatementNode = qualifiedMetastatementNodeQuery(metaSubproofNode),
|
|
105
|
+
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaSubproofNode);
|
|
88
106
|
|
|
89
107
|
if (qualifiedMetastatementNode !== null) {
|
|
90
108
|
const qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, context);
|
|
91
109
|
|
|
92
|
-
|
|
110
|
+
metaSubproofVerified = qualifiedMetastatementVerified; ///
|
|
93
111
|
}
|
|
94
112
|
|
|
95
113
|
if (unqualifiedMetastatementNode !== null) {
|
|
96
114
|
const unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
|
|
97
115
|
|
|
98
|
-
|
|
116
|
+
metaSubproofVerified = unqualifiedMetastatementVerified; ///
|
|
99
117
|
}
|
|
100
118
|
}
|
|
101
119
|
}
|
|
102
120
|
|
|
103
|
-
return
|
|
121
|
+
return metaSubproofVerified;
|
|
104
122
|
}
|
package/bin/verify/metaproof.js
CHANGED
|
@@ -11,7 +11,7 @@ const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement!/metastatement
|
|
|
11
11
|
metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
|
|
12
12
|
qualifiedStatementNodeQuery = nodeQuery("/metaproof/qualifiedMetastatement!");
|
|
13
13
|
|
|
14
|
-
function verifyMetaproof(metaproofNode,
|
|
14
|
+
function verifyMetaproof(metaproofNode, context) {
|
|
15
15
|
let metaproofVerified = false;
|
|
16
16
|
|
|
17
17
|
const metaDerivationNode = metaDerivationNodeQuery(metaproofNode);
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
const { loggingUtilities } = require("necessary");
|
|
4
4
|
|
|
5
|
+
const MetaAssertion = require("../../metaAssertion");
|
|
6
|
+
|
|
5
7
|
const { nodeAsString } = require("../../utilities/string"),
|
|
6
8
|
{ nodeQuery, referenceNameFromReferenceNode } = require("../../utilities/query");
|
|
7
9
|
|
|
@@ -24,17 +26,17 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, context) {
|
|
|
24
26
|
const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, context);
|
|
25
27
|
|
|
26
28
|
if (ruleMatchesMetastatement) {
|
|
27
|
-
context.addMetastatementNode(metastatementNode);
|
|
28
|
-
|
|
29
|
-
const metastatementString = nodeAsString(metastatementNode);
|
|
30
|
-
|
|
31
|
-
log.info(`Verified the '${metastatementString}' qualified metastatement.`);
|
|
32
|
-
|
|
33
29
|
qualifiedMetastatementVerified = true;
|
|
34
30
|
}
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
33
|
|
|
34
|
+
if (qualifiedMetastatementVerified) {
|
|
35
|
+
const metastatementString = nodeAsString(metastatementNode);
|
|
36
|
+
|
|
37
|
+
log.info(`Verified the '${metastatementString}' qualified metastatement.`);
|
|
38
|
+
}
|
|
39
|
+
|
|
38
40
|
return qualifiedMetastatementVerified;
|
|
39
41
|
}
|
|
40
42
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
const { loggingUtilities } = require("necessary");
|
|
4
4
|
|
|
5
|
+
const MetaAssertion = require("../../metaAssertion");
|
|
6
|
+
|
|
5
7
|
const { nodeQuery } = require("../../utilities/query"),
|
|
6
8
|
{ nodeAsString } = require("../../utilities/string");
|
|
7
9
|
|
|
@@ -17,21 +19,20 @@ function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context) {
|
|
|
17
19
|
if (metastatementNode !== null) {
|
|
18
20
|
const derived = context.isDerived();
|
|
19
21
|
|
|
20
|
-
let metastatementPresent = true; ///
|
|
21
|
-
|
|
22
22
|
if (derived) {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
|
|
24
|
+
metaAssertionPresent = context.isMetaAssertionPresent(metaAssertion);
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
unqualifiedMetastatementVerified = metaAssertionPresent; ///
|
|
27
|
+
} else {
|
|
28
|
+
unqualifiedMetastatementVerified = true;
|
|
28
29
|
}
|
|
30
|
+
}
|
|
29
31
|
|
|
32
|
+
if (unqualifiedMetastatementVerified) {
|
|
30
33
|
const metastatementString = nodeAsString(metastatementNode);
|
|
31
34
|
|
|
32
35
|
log.info(`Verified the '${metastatementString}' unqualified metastatement.`);
|
|
33
|
-
|
|
34
|
-
unqualifiedMetastatementVerified = true;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
return unqualifiedMetastatementVerified;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
const Premise = require("../premise"),
|
|
4
|
+
MetaAssertion = require("../metaAssertion"),
|
|
4
5
|
verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
|
|
5
6
|
|
|
6
7
|
const { nodeQuery, nodesQuery } = require("../utilities/query");
|
|
@@ -21,8 +22,11 @@ function verifyPremiseOrPremises(premiseOrPremisesNode, premises, context) {
|
|
|
21
22
|
if (premiseOrPremisesVerified) {
|
|
22
23
|
unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
|
|
23
24
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
25
|
+
metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
|
|
24
26
|
premise = Premise.fromMetastatementNode(metastatementNode);
|
|
25
27
|
|
|
28
|
+
context.addMetaAssertion(metaAssertion);
|
|
29
|
+
|
|
26
30
|
premises.push(premise);
|
|
27
31
|
});
|
|
28
32
|
}
|
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const Conclusion = require("
|
|
4
|
-
verifyUnqualifiedMetastatement = require("
|
|
3
|
+
const Conclusion = require("../conclusion"),
|
|
4
|
+
verifyUnqualifiedMetastatement = require("../verify/metastatement/unqualified");
|
|
5
5
|
|
|
6
|
-
const { nodeQuery } = require("
|
|
6
|
+
const { nodeQuery } = require("../utilities/query");
|
|
7
7
|
|
|
8
|
-
const metastatementNodeQuery = nodeQuery("
|
|
9
|
-
unqualifiedMetastatementNodeQuery = nodeQuery("/
|
|
8
|
+
const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
|
|
9
|
+
unqualifiedMetastatementNodeQuery = nodeQuery("/unconditionalInference/unqualifiedMetastatement!");
|
|
10
10
|
|
|
11
|
-
function verifyUnconditionalInference(
|
|
11
|
+
function verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, context) {
|
|
12
12
|
let unconditionalInferenceVerified = false;
|
|
13
13
|
|
|
14
|
-
const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(
|
|
14
|
+
const unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode);
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
const unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
|
|
16
|
+
const unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, context);
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
if (unqualifiedMetastatementVerified) {
|
|
19
|
+
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
20
|
+
conclusion = Conclusion.fromMetastatementNode(metastatementNode);
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
conclusions.push(conclusion);
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
}
|
|
24
|
+
unconditionalInferenceVerified = true;
|
|
27
25
|
}
|
|
28
26
|
|
|
29
27
|
return unconditionalInferenceVerified;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.269",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.15",
|
|
14
14
|
"necessary": "^11.0.40",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
15
|
+
"occam-custom-grammars": "^5.0.350",
|
|
16
16
|
"occam-dom": "^3.0.171",
|
|
17
17
|
"occam-grammar-utilities": "^7.0.66",
|
|
18
|
-
"occam-grammars": "^1.0.
|
|
18
|
+
"occam-grammars": "^1.0.317",
|
|
19
19
|
"occam-open-cli": "^5.0.37",
|
|
20
20
|
"occam-parsers": "^16.0.122"
|
|
21
21
|
},
|