occam-verify-cli 0.0.909 → 0.0.911
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 +6 -6
- package/lib/conclusion.js +7 -7
- package/lib/consequent.js +3 -3
- package/lib/context/file.js +7 -35
- package/lib/context/local.js +14 -19
- package/lib/context/localMeta.js +16 -21
- package/lib/declaration.js +10 -10
- package/lib/equivalence.js +15 -15
- package/lib/frame.js +5 -5
- package/lib/frameAssertion.js +3 -3
- package/lib/metaConsequent.js +4 -4
- package/lib/metaLemmaMetatheorem.js +10 -10
- package/lib/metaSupposition.js +10 -10
- package/lib/metaType.js +7 -7
- package/lib/metavariable.js +7 -7
- package/lib/mixins/nodesVerifier/intrinsiclevel.js +3 -3
- package/lib/mixins/nodesVerifier/metaLevel.js +3 -3
- package/lib/premise.js +19 -19
- package/lib/rule.js +21 -21
- package/lib/step/metaproof.js +14 -53
- package/lib/step/proof.js +10 -22
- package/lib/substitution/metastatementForMetavariable.js +11 -11
- package/lib/substitution/statementForMetavariable.js +9 -8
- package/lib/substitution/termForVariable.js +9 -9
- package/lib/substitution.js +11 -11
- package/lib/supposition.js +3 -3
- package/lib/type.js +7 -7
- package/lib/utilities/match.js +96 -0
- package/lib/variable.js +8 -8
- package/lib/verify/containedAssertion.js +54 -20
- package/lib/verify/definedAssertion.js +67 -33
- package/lib/verify/frame.js +2 -2
- package/lib/verify/frameAssertion.js +3 -3
- package/lib/verify/metaDerivation.js +7 -7
- package/lib/verify/metaSubDerivation.js +6 -6
- package/lib/verify/metaproofStep.js +98 -0
- package/lib/verify/metastatement/unqualified.js +4 -7
- package/lib/verify/metastatement.js +35 -6
- package/lib/verify/ruleProofStep.js +25 -14
- package/lib/verify/statement/unqualified.js +3 -3
- package/lib/verify/statement.js +4 -7
- package/package.json +2 -2
- package/src/axiomLemmaTheoremConjecture.js +6 -6
- package/src/conclusion.js +6 -6
- package/src/consequent.js +2 -2
- package/src/context/file.js +6 -30
- package/src/context/local.js +13 -19
- package/src/context/localMeta.js +15 -21
- package/src/declaration.js +12 -12
- package/src/equivalence.js +14 -14
- package/src/frame.js +4 -4
- package/src/frameAssertion.js +2 -2
- package/src/metaConsequent.js +3 -3
- package/src/metaLemmaMetatheorem.js +10 -10
- package/src/metaSupposition.js +9 -9
- package/src/metaType.js +7 -7
- package/src/metavariable.js +6 -6
- package/src/mixins/nodesVerifier/intrinsiclevel.js +2 -2
- package/src/mixins/nodesVerifier/metaLevel.js +2 -2
- package/src/premise.js +18 -18
- package/src/rule.js +22 -22
- package/src/step/metaproof.js +12 -73
- package/src/step/proof.js +8 -26
- package/src/substitution/metastatementForMetavariable.js +10 -10
- package/src/substitution/statementForMetavariable.js +6 -4
- package/src/substitution/termForVariable.js +8 -8
- package/src/substitution.js +10 -10
- package/src/supposition.js +2 -2
- package/src/type.js +7 -7
- package/src/utilities/match.js +100 -0
- package/src/variable.js +11 -11
- package/src/verify/containedAssertion.js +76 -27
- package/src/verify/definedAssertion.js +90 -41
- package/src/verify/frame.js +1 -1
- package/src/verify/frameAssertion.js +2 -2
- package/src/verify/metaDerivation.js +6 -6
- package/src/verify/metaSubDerivation.js +6 -6
- package/src/verify/{metaProofStep.js → metaproofStep.js} +60 -19
- package/src/verify/metastatement/unqualified.js +3 -7
- package/src/verify/metastatement.js +46 -5
- package/src/verify/ruleProofStep.js +22 -1
- package/src/verify/statement/unqualified.js +2 -2
- package/src/verify/statement.js +2 -6
- package/lib/utilities/metaproof.js +0 -59
- package/lib/utilities/proof.js +0 -59
- package/lib/verify/metaProofStep.js +0 -76
- package/src/utilities/metaproof.js +0 -53
- package/src/utilities/proof.js +0 -53
package/src/supposition.js
CHANGED
|
@@ -24,9 +24,9 @@ export default class Supposition {
|
|
|
24
24
|
|
|
25
25
|
return verifiedAhead;
|
|
26
26
|
}),
|
|
27
|
-
|
|
27
|
+
matchesStatementNode = nonTerminalNodeVerified; ///
|
|
28
28
|
|
|
29
|
-
return
|
|
29
|
+
return matchesStatementNode;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
toJSON(tokens) {
|
package/src/type.js
CHANGED
|
@@ -92,23 +92,23 @@ export default class Type {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
matchName(name) {
|
|
95
|
-
const
|
|
95
|
+
const matchesName = (this.name === name);
|
|
96
96
|
|
|
97
|
-
return
|
|
97
|
+
return matchesName;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
matchTypeName(typeName) {
|
|
101
|
-
const
|
|
101
|
+
const matchesTypeName = (this.name === typeName);
|
|
102
102
|
|
|
103
|
-
return
|
|
103
|
+
return matchesTypeName;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
matchTypeNode(typeNode) {
|
|
107
107
|
const typeName = typeNameFromTypeNode(typeNode),
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
matchesTypeName = this.matchTypeName(typeName),
|
|
109
|
+
matchesTypeNode = matchesTypeName; ///
|
|
110
110
|
|
|
111
|
-
return
|
|
111
|
+
return matchesTypeNode;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
asString(tokens, noSuperType = false) {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import bracketedStatementNode from "../node/statement/bracketed";
|
|
4
|
+
import bracketedMetastatementNode from "../node/metastatement/bracketed";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
import { BRACKETED_STATEMENT_DEPTH, BRACKETED_METASTATEMENT_DEPTH } from "../constants";
|
|
8
|
+
|
|
9
|
+
const bracketedStatementChildNodeQuery = nodeQuery("/statement/metaArgument!/statement!"),
|
|
10
|
+
bracketedMetastatementChildNodeQuery = nodeQuery("/metastatement/metastatement!");
|
|
11
|
+
|
|
12
|
+
export function matchStatementModuloBrackets(statementNodeA, statementNodeB) {
|
|
13
|
+
let statementMatchesModuloBrackets = false;
|
|
14
|
+
|
|
15
|
+
if (!statementMatchesModuloBrackets) {
|
|
16
|
+
const statementNodeAMatchesStatementNodeB = statementNodeA.match(statementNodeB);
|
|
17
|
+
|
|
18
|
+
statementMatchesModuloBrackets = statementNodeAMatchesStatementNodeB; ///
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!statementMatchesModuloBrackets) {
|
|
22
|
+
const bracketedStatementChildNodeA = bracketedStatementChildNodeFromStatementNode(statementNodeA);
|
|
23
|
+
|
|
24
|
+
if (bracketedStatementChildNodeA !== null) {
|
|
25
|
+
const bracketedStatementChildNodeAMatchStatementNodeB = bracketedStatementChildNodeA.match(statementNodeB);
|
|
26
|
+
|
|
27
|
+
statementMatchesModuloBrackets = bracketedStatementChildNodeAMatchStatementNodeB; ///
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (!statementMatchesModuloBrackets) {
|
|
32
|
+
const bracketedStatementChildNodeB = bracketedStatementChildNodeFromStatementNode(statementNodeB);
|
|
33
|
+
|
|
34
|
+
if (bracketedStatementChildNodeB !== null) {
|
|
35
|
+
const statementNodeAMatchBracketedStatementChildNodeB = statementNodeA.match(bracketedStatementChildNodeB);
|
|
36
|
+
|
|
37
|
+
statementMatchesModuloBrackets = statementNodeAMatchBracketedStatementChildNodeB; ///
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return statementMatchesModuloBrackets;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB) {
|
|
45
|
+
let metastatementMatches = false;
|
|
46
|
+
|
|
47
|
+
if (!metastatementMatches) {
|
|
48
|
+
const metastatementNodeMatches = metastatementNodeA.match(metastatementNodeB);
|
|
49
|
+
|
|
50
|
+
metastatementMatches = metastatementNodeMatches; ///
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (!metastatementMatches) {
|
|
54
|
+
const bracketedMetastatementChildNodeA = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeA);
|
|
55
|
+
|
|
56
|
+
if (bracketedMetastatementChildNodeA !== null) {
|
|
57
|
+
const bracketedMetastatementChildNodeAMatchesMetastatementNodeB = bracketedMetastatementChildNodeA.match(metastatementNodeB);
|
|
58
|
+
|
|
59
|
+
metastatementMatches = bracketedMetastatementChildNodeAMatchesMetastatementNodeB; ///
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (!metastatementMatches) {
|
|
64
|
+
const bracketedMetastatementChildNodeB = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeB);
|
|
65
|
+
|
|
66
|
+
if (bracketedMetastatementChildNodeB !== null) {
|
|
67
|
+
const metastatementNodeAMatchesBracketedMetastatementChildNodeB = metastatementNodeA.match(bracketedMetastatementChildNodeB);
|
|
68
|
+
|
|
69
|
+
metastatementMatches = metastatementNodeAMatchesBracketedMetastatementChildNodeB; ///
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return metastatementMatches;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
77
|
+
let bracketedStatementChildNode = null;
|
|
78
|
+
|
|
79
|
+
const depth = BRACKETED_STATEMENT_DEPTH,
|
|
80
|
+
statementNodeMatchBracketedStatementNode = statementNode.match(bracketedStatementNode, depth);
|
|
81
|
+
|
|
82
|
+
if (statementNodeMatchBracketedStatementNode) {
|
|
83
|
+
bracketedStatementChildNode = bracketedStatementChildNodeQuery(statementNode);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return bracketedStatementChildNode;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode) {
|
|
90
|
+
let bracketedMetastatementChildNode = null;
|
|
91
|
+
|
|
92
|
+
const depth = BRACKETED_METASTATEMENT_DEPTH,
|
|
93
|
+
metastatementNodeMatchesBracketedMetastatementNode = metastatementNode.match(bracketedMetastatementNode, depth);
|
|
94
|
+
|
|
95
|
+
if (metastatementNodeMatchesBracketedMetastatementNode) {
|
|
96
|
+
bracketedMetastatementChildNode = bracketedMetastatementChildNodeQuery(metastatementNode);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return bracketedMetastatementChildNode;
|
|
100
|
+
}
|
package/src/variable.js
CHANGED
|
@@ -21,31 +21,31 @@ export default class Variable {
|
|
|
21
21
|
match(variable) {
|
|
22
22
|
const type = variable.getType(),
|
|
23
23
|
node = variable.getNode(),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
matches =
|
|
24
|
+
matchesType = this.matchType(type),
|
|
25
|
+
matchesNode = this.matchNode(node),
|
|
26
|
+
matches = matchesNode && matchesType;
|
|
27
27
|
|
|
28
28
|
return matches;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
matchNode(node) {
|
|
32
|
-
const
|
|
32
|
+
const matchesNode = this.node.match(node);
|
|
33
33
|
|
|
34
|
-
return
|
|
34
|
+
return matchesNode;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
matchType(type) {
|
|
38
|
-
const
|
|
38
|
+
const matchesType = this.type.match(type);
|
|
39
39
|
|
|
40
|
-
return
|
|
40
|
+
return matchesType;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
matchNodeAndType(node, type) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const matchesNode = this.matchNode(node),
|
|
45
|
+
matchesType = this.matchType(type),
|
|
46
|
+
matchesNodeAndType = matchesNode && matchesType;
|
|
47
47
|
|
|
48
|
-
return
|
|
48
|
+
return matchesNodeAndType;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
asString(tokens) {
|
|
@@ -6,37 +6,86 @@ import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
|
6
6
|
const variableNodeQuery = nodeQuery("/containedAssertion/term/variable!"),
|
|
7
7
|
metastatementVariableNodesQuery = nodesQuery("/containedAssertion/statement//variable");
|
|
8
8
|
|
|
9
|
-
export default function verifyContainedAssertion(containedAssertionNode) {
|
|
10
|
-
let containedAssertionVerified
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
if (!negated) {
|
|
29
|
-
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
30
|
-
containedAssertionVerified = true;
|
|
31
|
-
}
|
|
9
|
+
export default function verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
10
|
+
let containedAssertionVerified;
|
|
11
|
+
|
|
12
|
+
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
13
|
+
|
|
14
|
+
localContext.trace(`Verifying the '${containedAssertionString}' contained assertion...`, containedAssertionNode);
|
|
15
|
+
|
|
16
|
+
const containedAssertionFunctions = [
|
|
17
|
+
verifyDerivedContainedAssertion,
|
|
18
|
+
verifyStatedContainedAssertion
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
containedAssertionVerified = containedAssertionFunctions.some((containedAssertionFunction) => {
|
|
22
|
+
const containedAssertionVerified = containedAssertionFunction(containedAssertionNode, assignments, derived, localContext);
|
|
23
|
+
|
|
24
|
+
if (containedAssertionVerified) {
|
|
25
|
+
return true;
|
|
32
26
|
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
if (containedAssertionVerified) {
|
|
30
|
+
localContext.debug(`...verified the '${containedAssertionString}' contained assertion.`, containedAssertionNode);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return containedAssertionVerified;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function verifyDerivedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
37
|
+
let derivedContainedAssertionVerified = false;
|
|
38
|
+
|
|
39
|
+
if (derived) {
|
|
40
|
+
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
41
|
+
|
|
42
|
+
localContext.trace(`Verifying the derived '${containedAssertionString}' contained assertion...`, containedAssertionNode);
|
|
33
43
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
const containedAssertionNegated = isAssertionNegated(containedAssertionNode),
|
|
45
|
+
variableNode = variableNodeQuery(containedAssertionNode),
|
|
46
|
+
negated = containedAssertionNegated; ///
|
|
47
|
+
|
|
48
|
+
if (false) {
|
|
49
|
+
///
|
|
50
|
+
} else if (variableNode !== null) {
|
|
51
|
+
const metastatementVariableNodes = metastatementVariableNodesQuery(containedAssertionNode),
|
|
52
|
+
variableNodeMatchesMetaArgumentVariableNode = metastatementVariableNodes.some((metastatementVariableNode) => {
|
|
53
|
+
const variableNodeMatchesMetaArgumentVariableNode = variableNode.match(metastatementVariableNode);
|
|
54
|
+
|
|
55
|
+
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
if (!negated) {
|
|
61
|
+
if (variableNodeMatchesMetaArgumentVariableNode) {
|
|
62
|
+
derivedContainedAssertionVerified = true;
|
|
63
|
+
}
|
|
37
64
|
}
|
|
65
|
+
|
|
66
|
+
if (negated) {
|
|
67
|
+
if (!variableNodeMatchesMetaArgumentVariableNode) {
|
|
68
|
+
derivedContainedAssertionVerified = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (derivedContainedAssertionVerified) {
|
|
74
|
+
localContext.debug(`...verified the derived '${containedAssertionString}' contained assertion.`, containedAssertionNode);
|
|
38
75
|
}
|
|
39
76
|
}
|
|
40
77
|
|
|
41
|
-
return
|
|
78
|
+
return derivedContainedAssertionVerified;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function verifyStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
82
|
+
let derivedStatedAssertionVerified = false;
|
|
83
|
+
|
|
84
|
+
if (!derived) {
|
|
85
|
+
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
86
|
+
|
|
87
|
+
localContext.debug(`The stated '${containedAssertionString}' contained assertion cannot be verified.`, containedAssertionNode);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return derivedStatedAssertionVerified;
|
|
42
91
|
}
|
|
@@ -9,60 +9,109 @@ import { isAssertionNegated } from "../utilities/verify";
|
|
|
9
9
|
const termNodeQuery = nodeQuery("/definedAssertion/term!"),
|
|
10
10
|
variableNodeQuery = nodeQuery("/definedAssertion/term/variable!");
|
|
11
11
|
|
|
12
|
-
export default function verifyDefinedAssertion(definedAssertionNode, localContext) {
|
|
13
|
-
let definedAssertionVerified
|
|
12
|
+
export default function verifyDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
13
|
+
let definedAssertionVerified;
|
|
14
14
|
|
|
15
|
-
const
|
|
16
|
-
variableNode = variableNodeQuery(definedAssertionNode),
|
|
17
|
-
termNode = termNodeQuery(definedAssertionNode),
|
|
18
|
-
negated = definedAssertionNegated; ///
|
|
15
|
+
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
///
|
|
22
|
-
} else if (variableNode !== null) {
|
|
23
|
-
const variable = localContext.findVariableByVariableNode(variableNode);
|
|
17
|
+
localContext.trace(`Verifying the '${definedAssertionString}' defined assertion...`, definedAssertionNode);
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
const definedAssertionFunctions = [
|
|
20
|
+
verifyDerivedDefinedAssertion,
|
|
21
|
+
verifyStatedDefinedAssertion
|
|
22
|
+
];
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
definedAssertionVerified = definedAssertionFunctions.some((definedAssertionFunction) => {
|
|
25
|
+
const definedAssertionVerified = definedAssertionFunction(definedAssertionNode, assignments, derived, localContext);
|
|
26
|
+
|
|
27
|
+
if (definedAssertionVerified) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
if (definedAssertionVerified) {
|
|
33
|
+
localContext.debug(`...verified the '${definedAssertionString}' defined assertion.`, definedAssertionNode);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return definedAssertionVerified;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
40
|
+
let derivedDefinedAssertionVerified = false;
|
|
41
|
+
|
|
42
|
+
if (derived) {
|
|
43
|
+
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
44
|
+
|
|
45
|
+
localContext.trace(`Verifying the derived '${definedAssertionString}' defined assertion...`, definedAssertionNode);
|
|
46
|
+
|
|
47
|
+
const definedAssertionNegated = isAssertionNegated(definedAssertionNode),
|
|
48
|
+
variableNode = variableNodeQuery(definedAssertionNode),
|
|
49
|
+
termNode = termNodeQuery(definedAssertionNode),
|
|
50
|
+
negated = definedAssertionNegated; ///
|
|
51
|
+
|
|
52
|
+
if (false) {
|
|
53
|
+
///
|
|
54
|
+
} else if (variableNode !== null) {
|
|
55
|
+
const variable = localContext.findVariableByVariableNode(variableNode);
|
|
56
|
+
|
|
57
|
+
if (variable !== null) {
|
|
58
|
+
const variableDefined = localContext.isVariableDefined(variable);
|
|
59
|
+
|
|
60
|
+
if (!negated) {
|
|
61
|
+
if (variableDefined) {
|
|
62
|
+
derivedDefinedAssertionVerified = true;
|
|
63
|
+
}
|
|
31
64
|
}
|
|
32
|
-
}
|
|
33
65
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
66
|
+
if (negated) {
|
|
67
|
+
if (!variableDefined) {
|
|
68
|
+
derivedDefinedAssertionVerified = true;
|
|
69
|
+
}
|
|
37
70
|
}
|
|
38
71
|
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
72
|
+
} else if (termNode !== null) {
|
|
73
|
+
const terms = [],
|
|
74
|
+
termVerified = verifyTerm(termNode, terms, localContext, () => {
|
|
75
|
+
const verifiedAhead = true;
|
|
76
|
+
|
|
77
|
+
return verifiedAhead;
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
if (termVerified) {
|
|
81
|
+
const firstTerm = first(terms),
|
|
82
|
+
term = firstTerm, ///
|
|
83
|
+
termGrounded = localContext.isTermGrounded(term);
|
|
84
|
+
|
|
85
|
+
if (!negated) {
|
|
86
|
+
if (termGrounded) {
|
|
87
|
+
derivedDefinedAssertionVerified = true;
|
|
88
|
+
}
|
|
56
89
|
}
|
|
57
|
-
}
|
|
58
90
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
91
|
+
if (negated) {
|
|
92
|
+
if (!termGrounded) {
|
|
93
|
+
derivedDefinedAssertionVerified = true;
|
|
94
|
+
}
|
|
62
95
|
}
|
|
63
96
|
}
|
|
64
97
|
}
|
|
98
|
+
|
|
99
|
+
if (derivedDefinedAssertionVerified) {
|
|
100
|
+
localContext.debug(`...verified the derived '${definedAssertionString}' defined assertion.`, definedAssertionNode);
|
|
101
|
+
}
|
|
65
102
|
}
|
|
66
103
|
|
|
67
|
-
return
|
|
104
|
+
return derivedDefinedAssertionVerified;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
108
|
+
let derivedStatedAssertionVerified = false;
|
|
109
|
+
|
|
110
|
+
if (!derived) {
|
|
111
|
+
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
112
|
+
|
|
113
|
+
localContext.debug(`The stated '${definedAssertionString}' defined assertion cannot be verified.`, definedAssertionNode);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return derivedStatedAssertionVerified;
|
|
68
117
|
}
|
package/src/verify/frame.js
CHANGED
|
@@ -10,7 +10,7 @@ import { nodesQuery } from "../utilities/query";
|
|
|
10
10
|
const declarationNodesQuery = nodesQuery("/frame/declaration"),
|
|
11
11
|
metavariableNodesQuery = nodesQuery("/frame/metavariable");
|
|
12
12
|
|
|
13
|
-
export default function verifyFrame(frameNode, frames, derived, localMetaContext) {
|
|
13
|
+
export default function verifyFrame(frameNode, frames, assignments, derived, localMetaContext) {
|
|
14
14
|
let frameVerified;
|
|
15
15
|
|
|
16
16
|
const frameString = localMetaContext.nodeAsString(frameNode);
|
|
@@ -55,7 +55,7 @@ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, l
|
|
|
55
55
|
if (frameAssertion !== null) {
|
|
56
56
|
const frames = [],
|
|
57
57
|
frameNode = frameNodeQuery(frameAssertionNode),
|
|
58
|
-
frameVerified = verifyFrame(frameNode, frames, derived, localMetaContext);
|
|
58
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localMetaContext);
|
|
59
59
|
|
|
60
60
|
if (frameVerified) {
|
|
61
61
|
const firstFrame = first(frames),
|
|
@@ -114,7 +114,7 @@ function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived, lo
|
|
|
114
114
|
if (metavariableVerified) {
|
|
115
115
|
const frames = [],
|
|
116
116
|
frameNode = frameNodeQuery(frameAssertionNode),
|
|
117
|
-
frameVerified = verifyFrame(frameNode, frames, derived, localMetaContext);
|
|
117
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, derived, localMetaContext);
|
|
118
118
|
|
|
119
119
|
if (frameVerified) {
|
|
120
120
|
const firstFrame = first(frames),
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import verifyMetaproofStep from "../verify/metaproofStep";
|
|
4
4
|
|
|
5
5
|
import { nodesQuery } from "../utilities/query";
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const metaproofStepNodesQuery = nodesQuery("/metaDerivation/metaproofStep|lastMetaproofStep");
|
|
8
8
|
|
|
9
9
|
export default function verifyMetaDerivation(metaDerivationNode, substitutions, localMetaContext) {
|
|
10
10
|
let metaDerivationVerified;
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const metaproofStepNodes = metaproofStepNodesQuery(metaDerivationNode);
|
|
13
13
|
|
|
14
|
-
metaDerivationVerified =
|
|
15
|
-
const
|
|
14
|
+
metaDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
|
|
15
|
+
const metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localMetaContext);
|
|
16
16
|
|
|
17
|
-
if (
|
|
17
|
+
if (metaproofStepVerified) {
|
|
18
18
|
return true;
|
|
19
19
|
}
|
|
20
20
|
});
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import { nodesQuery } from "../utilities/query";
|
|
4
4
|
|
|
5
|
-
const
|
|
5
|
+
const metaproofStepNodesQuery = nodesQuery("/metaSubDerivation/metaproofStep|lastMetaproofStep");
|
|
6
6
|
|
|
7
7
|
export default function verifyMetaSubDerivation(metaSubDerivationNode, substitutions, localMetaContext) {
|
|
8
8
|
let metaSubDerivationVerified;
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const metaproofStepNodes = metaproofStepNodesQuery(metaSubDerivationNode);
|
|
11
11
|
|
|
12
|
-
metaSubDerivationVerified =
|
|
13
|
-
const {
|
|
14
|
-
|
|
12
|
+
metaSubDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
|
|
13
|
+
const { verifyMetaproofStep } = verifyMetaSubDerivation,
|
|
14
|
+
metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localMetaContext);
|
|
15
15
|
|
|
16
|
-
if (
|
|
16
|
+
if (metaproofStepVerified) {
|
|
17
17
|
return true;
|
|
18
18
|
}
|
|
19
19
|
});
|
|
@@ -11,21 +11,21 @@ import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified"
|
|
|
11
11
|
import { nodeQuery } from "../utilities/query";
|
|
12
12
|
import { assignAssignment } from "../utilities/assignments";
|
|
13
13
|
|
|
14
|
-
const metaSubproofNodeQuery = nodeQuery("/
|
|
14
|
+
const metaSubproofNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/metaSubproof!"),
|
|
15
15
|
metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!"),
|
|
16
|
-
qualifiedStatementNodeQuery = nodeQuery("/
|
|
17
|
-
unqualifiedStatementNodeQuery = nodeQuery("/
|
|
18
|
-
qualifiedMetastatementNodeQuery = nodeQuery("/
|
|
19
|
-
unqualifiedMetastatementNodeQuery = nodeQuery("/
|
|
16
|
+
qualifiedStatementNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/qualifiedStatement!"),
|
|
17
|
+
unqualifiedStatementNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/unqualifiedStatement!"),
|
|
18
|
+
qualifiedMetastatementNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/qualifiedMetastatement!"),
|
|
19
|
+
unqualifiedMetastatementNodeQuery = nodeQuery("/metaproofStep|lastMetaproofStep/unqualifiedMetastatement!");
|
|
20
20
|
|
|
21
|
-
export default function
|
|
22
|
-
let
|
|
21
|
+
export default function verifyMetaproofStep(metaproofStepNode, substitutions, localMetaContext) {
|
|
22
|
+
let metaproofStepVerified = false;
|
|
23
23
|
|
|
24
|
-
const metaSubproofNode = metaSubproofNodeQuery(
|
|
25
|
-
qualifiedStatementNode = qualifiedStatementNodeQuery(
|
|
26
|
-
unqualifiedStatementNode = unqualifiedStatementNodeQuery(
|
|
27
|
-
qualifiedMetastatementNode = qualifiedMetastatementNodeQuery(
|
|
28
|
-
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(
|
|
24
|
+
const metaSubproofNode = metaSubproofNodeQuery(metaproofStepNode),
|
|
25
|
+
qualifiedStatementNode = qualifiedStatementNodeQuery(metaproofStepNode),
|
|
26
|
+
unqualifiedStatementNode = unqualifiedStatementNodeQuery(metaproofStepNode),
|
|
27
|
+
qualifiedMetastatementNode = qualifiedMetastatementNodeQuery(metaproofStepNode),
|
|
28
|
+
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaproofStepNode);
|
|
29
29
|
|
|
30
30
|
if (false) {
|
|
31
31
|
///
|
|
@@ -39,12 +39,53 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
|
|
|
39
39
|
|
|
40
40
|
localMetaContext.addMetaproofStep(metaproofStep);
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
metaproofStepVerified = true;
|
|
43
43
|
}
|
|
44
44
|
} else if (qualifiedStatementNode !== null) {
|
|
45
|
-
|
|
45
|
+
let qualifiedStatementVerified;
|
|
46
|
+
|
|
47
|
+
const assignments = [],
|
|
48
|
+
localContext = localMetaContext; ///
|
|
49
|
+
|
|
50
|
+
qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assignments, localContext);
|
|
51
|
+
|
|
52
|
+
if (qualifiedStatementVerified) {
|
|
53
|
+
const assignmentAssigned = assignAssignment(assignments, localContext);
|
|
54
|
+
|
|
55
|
+
qualifiedStatementVerified = assignmentAssigned; ///
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (qualifiedStatementVerified) {
|
|
59
|
+
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
60
|
+
metaproofStep = MetaproofStep.fromStatementNode(statementNode);
|
|
61
|
+
|
|
62
|
+
localMetaContext.addMetaproofStep(metaproofStep);
|
|
63
|
+
|
|
64
|
+
metaproofStepVerified = true;
|
|
65
|
+
}
|
|
46
66
|
} else if (unqualifiedStatementNode !== null) {
|
|
47
|
-
|
|
67
|
+
let qualifiedStatementVerified;
|
|
68
|
+
|
|
69
|
+
const assignments = [],
|
|
70
|
+
localContext = localMetaContext, ///
|
|
71
|
+
substitutions = null;
|
|
72
|
+
|
|
73
|
+
qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, localContext);
|
|
74
|
+
|
|
75
|
+
if (qualifiedStatementVerified) {
|
|
76
|
+
const assignmentAssigned = assignAssignment(assignments, localContext);
|
|
77
|
+
|
|
78
|
+
qualifiedStatementVerified = assignmentAssigned; ///
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (qualifiedStatementVerified) {
|
|
82
|
+
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
83
|
+
metaproofStep = MetaproofStep.fromStatementNode(statementNode);
|
|
84
|
+
|
|
85
|
+
localMetaContext.addMetaproofStep(metaproofStep);
|
|
86
|
+
|
|
87
|
+
metaproofStepVerified = qualifiedStatementVerified; ///
|
|
88
|
+
}
|
|
48
89
|
} else if (qualifiedMetastatementNode !== null) {
|
|
49
90
|
let qualifiedMetastatementVerified;
|
|
50
91
|
|
|
@@ -65,7 +106,7 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
|
|
|
65
106
|
|
|
66
107
|
localMetaContext.addMetaproofStep(metaproofStep);
|
|
67
108
|
|
|
68
|
-
|
|
109
|
+
metaproofStepVerified = qualifiedMetastatementVerified; ///
|
|
69
110
|
}
|
|
70
111
|
} else if (unqualifiedMetastatementNode !== null) {
|
|
71
112
|
let unqualifiedMetastatementVerified;
|
|
@@ -88,13 +129,13 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
|
|
|
88
129
|
|
|
89
130
|
localMetaContext.addMetaproofStep(metaproofStep);
|
|
90
131
|
|
|
91
|
-
|
|
132
|
+
metaproofStepVerified = true;
|
|
92
133
|
}
|
|
93
134
|
}
|
|
94
135
|
|
|
95
|
-
return
|
|
136
|
+
return metaproofStepVerified;
|
|
96
137
|
}
|
|
97
138
|
|
|
98
139
|
Object.assign(verifyMetaSubDerivation, {
|
|
99
|
-
|
|
140
|
+
verifyMetaproofStep
|
|
100
141
|
});
|