occam-verify-cli 0.0.504 → 0.0.506
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/metaSupposition.js +1 -48
- package/lib/premise.js +21 -21
- package/lib/rule.js +5 -5
- package/lib/ruleNames.js +1 -5
- package/lib/step/metaproof.js +19 -33
- package/lib/theorem.js +3 -3
- package/lib/verify/metaDerivation.js +6 -48
- package/lib/verify/ruleProof.js +3 -3
- package/package.json +3 -3
- package/src/metaSupposition.js +0 -39
- package/src/premise.js +31 -31
- package/src/rule.js +4 -4
- package/src/ruleNames.js +0 -1
- package/src/step/metaproof.js +22 -37
- package/src/theorem.js +1 -1
- package/src/verify/metaDerivation.js +2 -70
- package/src/verify/ruleProof.js +1 -1
package/src/step/metaproof.js
CHANGED
|
@@ -4,14 +4,13 @@ import { first, second } from "../utilities/array";
|
|
|
4
4
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
5
5
|
import { matchBracketedNonTerminalNode } from "../utilities/node";
|
|
6
6
|
|
|
7
|
-
const metastatementNodesQuery = nodesQuery("/
|
|
8
|
-
|
|
9
|
-
qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = nodesQuery("/
|
|
7
|
+
const metastatementNodesQuery = nodesQuery("/ruleSubproofAssertion/metastatement"),
|
|
8
|
+
ruleSubproofAssertionNodeQuery = nodeQuery("/metastatement/ruleSubproofAssertion"),
|
|
9
|
+
qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = nodesQuery("/ruleSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
|
|
10
10
|
|
|
11
11
|
export default class MetaproofStep {
|
|
12
|
-
constructor(ruleSubproofNode,
|
|
12
|
+
constructor(ruleSubproofNode, metastatementNode) {
|
|
13
13
|
this.ruleSubproofNode = ruleSubproofNode;
|
|
14
|
-
this.metaSubproofNode = metaSubproofNode;
|
|
15
14
|
this.metastatementNode = metastatementNode;
|
|
16
15
|
}
|
|
17
16
|
|
|
@@ -19,10 +18,6 @@ export default class MetaproofStep {
|
|
|
19
18
|
return this.ruleSubproofNode;
|
|
20
19
|
}
|
|
21
20
|
|
|
22
|
-
getMetaSubproofNode() {
|
|
23
|
-
return this.metaSubproofNode;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
21
|
getMetastatementNode() {
|
|
27
22
|
return this.metastatementNode;
|
|
28
23
|
}
|
|
@@ -30,12 +25,12 @@ export default class MetaproofStep {
|
|
|
30
25
|
matchMetastatement(metastatementNode) {
|
|
31
26
|
let metastatementMatches;
|
|
32
27
|
|
|
33
|
-
const
|
|
28
|
+
const ruleSubproofAssertionNode = ruleSubproofAssertionNodeQuery(metastatementNode);
|
|
34
29
|
|
|
35
|
-
if (
|
|
36
|
-
const
|
|
30
|
+
if (ruleSubproofAssertionNode !== null) {
|
|
31
|
+
const ruleSubproofAssertionMatches = this.matchRuleSubproofAssertion(ruleSubproofAssertionNode);
|
|
37
32
|
|
|
38
|
-
metastatementMatches =
|
|
33
|
+
metastatementMatches = ruleSubproofAssertionMatches; ///
|
|
39
34
|
} else {
|
|
40
35
|
const metastatementsMatch = this.matchMetastatements(metastatementNode);
|
|
41
36
|
|
|
@@ -60,54 +55,44 @@ export default class MetaproofStep {
|
|
|
60
55
|
return metastatementsMatch;
|
|
61
56
|
}
|
|
62
57
|
|
|
63
|
-
|
|
64
|
-
let
|
|
58
|
+
matchRuleSubproofAssertion(ruleSubproofAssertionNode) {
|
|
59
|
+
let ruleSubproofAssertionMatches = false;
|
|
65
60
|
|
|
66
|
-
if (this.
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.
|
|
61
|
+
if (this.ruleSubproofNode !== null) {
|
|
62
|
+
const ruleSubproofAssertionMetastatementNodes = metastatementNodesQuery(ruleSubproofAssertionNode),
|
|
63
|
+
firstRuleSubproofAssertionMetastatementNode = first(ruleSubproofAssertionMetastatementNodes),
|
|
64
|
+
qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.ruleSubproofNode),
|
|
70
65
|
firstQualifiedOrUnqualifiedMetastatementMetastatementNode = first(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
71
66
|
|
|
72
|
-
const nonTerminalNodeA =
|
|
67
|
+
const nonTerminalNodeA = firstRuleSubproofAssertionMetastatementNode, ///
|
|
73
68
|
nonTerminalNodeB = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
74
69
|
bracketedNodeMatches = matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
|
|
75
70
|
|
|
76
71
|
if (bracketedNodeMatches) {
|
|
77
|
-
const
|
|
72
|
+
const secondRuleSubproofAssertionMetastatementNode = second(ruleSubproofAssertionMetastatementNodes),
|
|
78
73
|
secondQualifiedOrUnqualifiedMetastatementMetastatementNode = second(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
79
74
|
|
|
80
|
-
const nonTerminalNodeA =
|
|
75
|
+
const nonTerminalNodeA = secondRuleSubproofAssertionMetastatementNode, ///
|
|
81
76
|
nonTerminalNodeB = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
82
77
|
bracketedNodeMatches = matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
|
|
83
78
|
|
|
84
|
-
|
|
79
|
+
ruleSubproofAssertionMatches = bracketedNodeMatches; ///
|
|
85
80
|
}
|
|
86
81
|
}
|
|
87
82
|
|
|
88
|
-
return
|
|
83
|
+
return ruleSubproofAssertionMatches;
|
|
89
84
|
}
|
|
90
85
|
|
|
91
86
|
static fromRuleSubproofNode(ruleSubproofNode) {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
metaProofStep = new MetaproofStep(ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
95
|
-
|
|
96
|
-
return metaProofStep;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
static fromMetaSubproofNode(metaSubproofNode) {
|
|
100
|
-
const ruleSubproofNode = null,
|
|
101
|
-
metastatementNode = null,
|
|
102
|
-
metaProofStep = new MetaproofStep(ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
87
|
+
const metastatementNode = null,
|
|
88
|
+
metaProofStep = new MetaproofStep(ruleSubproofNode, metastatementNode);
|
|
103
89
|
|
|
104
90
|
return metaProofStep;
|
|
105
91
|
}
|
|
106
92
|
|
|
107
93
|
static fromMetastatementNode(metastatementNode) {
|
|
108
94
|
const ruleSubproofNode = null,
|
|
109
|
-
|
|
110
|
-
metaProofStep = new MetaproofStep(ruleSubproofNode, metaSubproofNode, metastatementNode);
|
|
95
|
+
metaProofStep = new MetaproofStep(ruleSubproofNode, metastatementNode);
|
|
111
96
|
|
|
112
97
|
return metaProofStep;
|
|
113
98
|
}
|
package/src/theorem.js
CHANGED
|
@@ -9,5 +9,5 @@ export default class Theorem extends AxiomLemmaTheorem {
|
|
|
9
9
|
|
|
10
10
|
static fromJSON(json, releaseContext) { return AxiomLemmaTheorem.fromJSON(Theorem, json, releaseContext); }
|
|
11
11
|
|
|
12
|
-
static fromLabelsSuppositionsAndConsequence(labels,
|
|
12
|
+
static fromLabelsSuppositionsAndConsequence(labels, suppositions, consequence) { return AxiomLemmaTheorem.fromLabelsSuppositionsAndConsequence(Theorem, labels, suppositions, consequence); }
|
|
13
13
|
}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import MetaproofStep from "../step/metaproof";
|
|
4
|
-
import MetaproofContext from "../context/metaproof";
|
|
5
|
-
import verifyMetaSupposition from "../verify/metaSupposition";
|
|
6
4
|
import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
|
|
7
5
|
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
8
6
|
|
|
9
7
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
10
|
-
import {
|
|
8
|
+
import { QUALIFIED_METASTATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
11
9
|
|
|
12
10
|
const childNodesQuery = nodesQuery("/metaDerivation|metaSubDerivation/*"),
|
|
13
|
-
metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!")
|
|
14
|
-
metaSuppositionNodesQuery = nodesQuery("/metaSubproof/metaSupposition"),
|
|
15
|
-
metaSubDerivationNodeQuery = nodeQuery("/metaSubproof/metaSubDerivation");
|
|
11
|
+
metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
|
|
16
12
|
|
|
17
13
|
export default function verifyMetaDerivation(metaDerivationNode, metaproofContext) {
|
|
18
14
|
let metaDerivationVerified;
|
|
@@ -36,76 +32,12 @@ export default function verifyMetaDerivation(metaDerivationNode, metaproofContex
|
|
|
36
32
|
return metaDerivationVerified;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
function verifyMetaSubDerivation(metaSubDerivationNode, metaproofContext) {
|
|
40
|
-
let metaSubDerivationVerified;
|
|
41
|
-
|
|
42
|
-
metaproofContext.begin(metaSubDerivationNode);
|
|
43
|
-
|
|
44
|
-
const childNodes = childNodesQuery(metaSubDerivationNode);
|
|
45
|
-
|
|
46
|
-
metaSubDerivationVerified = childNodes.every((childNode) => {
|
|
47
|
-
const childVerified = verifyChild(childNode, metaproofContext);
|
|
48
|
-
|
|
49
|
-
if (childVerified) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
metaSubDerivationVerified ?
|
|
55
|
-
metaproofContext.complete(metaSubDerivationNode) :
|
|
56
|
-
metaproofContext.halt(metaSubDerivationNode);
|
|
57
|
-
|
|
58
|
-
return metaSubDerivationVerified;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function verifyMetaSubproof(metaSubproofNode, metaproofContext) {
|
|
62
|
-
let metaSubproofVerified = false;
|
|
63
|
-
|
|
64
|
-
metaproofContext = MetaproofContext.fromMetaproofContext(metaproofContext); ///
|
|
65
|
-
|
|
66
|
-
const metaSuppositions = [],
|
|
67
|
-
metaSuppositionNodes = metaSuppositionNodesQuery(metaSubproofNode),
|
|
68
|
-
metaSuppositionsVerified = metaSuppositionNodes.every((metaSuppositionNode) => {
|
|
69
|
-
const metaSuppositionVerified = verifyMetaSupposition(metaSuppositionNode, metaSuppositions, metaproofContext);
|
|
70
|
-
|
|
71
|
-
if (metaSuppositionVerified) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
if (metaSuppositionsVerified) {
|
|
77
|
-
const metaSubDerivationNode = metaSubDerivationNodeQuery(metaSubproofNode),
|
|
78
|
-
metaSubDerivationVerified = verifyMetaSubDerivation(metaSubDerivationNode, metaproofContext);
|
|
79
|
-
|
|
80
|
-
if (metaSubDerivationVerified) {
|
|
81
|
-
metaSubproofVerified = true;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return metaSubproofVerified;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
35
|
function verifyChild(childNode, metaproofContext) {
|
|
89
36
|
let childVerified;
|
|
90
37
|
|
|
91
38
|
const childNodeRuleName = childNode.getRuleName();
|
|
92
39
|
|
|
93
40
|
switch (childNodeRuleName) {
|
|
94
|
-
case META_SUBPROOF_RULE_NAME: {
|
|
95
|
-
const metaSubproofNode = childNode, ///
|
|
96
|
-
metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, metaproofContext);
|
|
97
|
-
|
|
98
|
-
if (metaSubproofVerified) {
|
|
99
|
-
const metaproofStep = MetaproofStep.fromMetaSubproofNode(metaSubproofNode);
|
|
100
|
-
|
|
101
|
-
metaproofContext.addMetaproofStep(metaproofStep);
|
|
102
|
-
|
|
103
|
-
childVerified = true;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
41
|
case QUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
110
42
|
const qualifiedMetastatementNode = childNode, ///
|
|
111
43
|
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
|
package/src/verify/ruleProof.js
CHANGED
|
@@ -7,7 +7,7 @@ import { nodeQuery } from "../utilities/query";
|
|
|
7
7
|
|
|
8
8
|
const ruleDerivationNodeQuery = nodeQuery("/ruleProof/ruleDerivation!");
|
|
9
9
|
|
|
10
|
-
export default function
|
|
10
|
+
export default function verifyRuleProof(ruleProofNode, conclusion, metaproofContext) {
|
|
11
11
|
let ruleProofVerified = false;
|
|
12
12
|
|
|
13
13
|
metaproofContext.begin(ruleProofNode);
|