occam-verify-cli 0.0.1059 → 0.0.1063
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/assertion/contained.js +185 -0
- package/lib/assertion/defined.js +187 -0
- package/lib/assertion/subproof.js +3 -3
- package/lib/assertion/type.js +13 -6
- package/lib/context/release.js +5 -5
- package/lib/declaration.js +6 -50
- package/lib/equality.js +6 -7
- package/lib/equivalence.js +3 -2
- package/lib/frame.js +160 -64
- package/lib/metavariable.js +20 -7
- package/lib/mixins/statement/verify.js +24 -32
- package/lib/statement.js +58 -4
- package/lib/substitution/statement.js +17 -2
- package/lib/term.js +46 -3
- package/lib/variable.js +6 -2
- package/lib/verifier/intrinsicLevel.js +4 -4
- package/lib/verifier/metaLevel.js +4 -4
- package/lib/verifier/substitution.js +161 -0
- package/lib/verifier/topLevel.js +4 -4
- package/package.json +3 -3
- package/src/assertion/contained.js +172 -0
- package/src/assertion/defined.js +188 -0
- package/src/assertion/subproof.js +3 -2
- package/src/assertion/type.js +18 -7
- package/src/context/release.js +5 -7
- package/src/declaration.js +49 -49
- package/src/equality.js +7 -8
- package/src/equivalence.js +3 -1
- package/src/frame.js +204 -59
- package/src/metavariable.js +35 -11
- package/src/mixins/statement/verify.js +30 -42
- package/src/statement.js +85 -4
- package/src/substitution/statement.js +22 -2
- package/src/term.js +61 -3
- package/src/variable.js +7 -2
- package/src/verifier/intrinsicLevel.js +3 -3
- package/src/verifier/metaLevel.js +3 -3
- package/src/verifier/substitution.js +75 -0
- package/src/verifier/topLevel.js +3 -3
- package/lib/verify/assertion/contained.js +0 -107
- package/lib/verify/assertion/defined.js +0 -98
- package/lib/verify/assertion/subproof.js +0 -16
- package/src/verify/assertion/contained.js +0 -134
- package/src/verify/assertion/defined.js +0 -120
- package/src/verify/assertion/subproof.js +0 -9
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import metaLevelVerifier from "../../verifier/metaLevel";
|
|
4
|
-
|
|
5
|
-
import { isAssertionNegated } from "../../utilities/assertion";
|
|
6
|
-
import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
7
|
-
|
|
8
|
-
const termVariableNodeQuery = nodeQuery("/containedAssertion/term/variable!"),
|
|
9
|
-
frameMetavariableNodeQuery = nodeQuery("/containedAssertion/frame/metavariable!"),
|
|
10
|
-
statementVariableNodesQuery = nodesQuery("/containedAssertion/statement//variable"),
|
|
11
|
-
statementMetavariableNodesQuery = nodesQuery("/containedAssertion/statement//metavariable");
|
|
12
|
-
|
|
13
|
-
const verifyContainedAssertionFunctions = [
|
|
14
|
-
verifyDerivedContainedAssertion,
|
|
15
|
-
verifyStatedContainedAssertion
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
export default function verifyContainedAssertion(containedAssertionNode, assignments, stated, localContext) {
|
|
19
|
-
let containedAssertionVerified = false;
|
|
20
|
-
|
|
21
|
-
const containedAssertionString = localContext.nodeAsString(containedAssertionNode),
|
|
22
|
-
savedStated = stated; ///
|
|
23
|
-
|
|
24
|
-
localContext.trace(`Verifying the '${containedAssertionString}' contained assertion...`, containedAssertionNode);
|
|
25
|
-
|
|
26
|
-
assignments = null; ///
|
|
27
|
-
|
|
28
|
-
stated = true; ///
|
|
29
|
-
|
|
30
|
-
const verified = metaLevelVerifier.verify(containedAssertionNode, assignments, stated, localContext);
|
|
31
|
-
|
|
32
|
-
stated = savedStated; ///
|
|
33
|
-
|
|
34
|
-
if (verified) {
|
|
35
|
-
containedAssertionVerified = verifyContainedAssertionFunctions.some((verifyContainedAssertionFunction) => {
|
|
36
|
-
const containedAssertionVerified = verifyContainedAssertionFunction(containedAssertionNode, assignments, stated, localContext);
|
|
37
|
-
|
|
38
|
-
if (containedAssertionVerified) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (containedAssertionVerified) {
|
|
45
|
-
localContext.debug(`...verified the '${containedAssertionString}' contained assertion.`, containedAssertionNode);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return containedAssertionVerified;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function verifyDerivedContainedAssertion(containedAssertionNode, assignments, stated, localContext) {
|
|
52
|
-
let derivedContainedAssertionVerified = false;
|
|
53
|
-
|
|
54
|
-
if (!stated) {
|
|
55
|
-
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
56
|
-
|
|
57
|
-
localContext.trace(`Verifying the '${containedAssertionString}' derived contained assertion...`, containedAssertionNode);
|
|
58
|
-
|
|
59
|
-
const assertionNegated = isAssertionNegated(containedAssertionNode),
|
|
60
|
-
frameMetavariableNode = frameMetavariableNodeQuery(containedAssertionNode),
|
|
61
|
-
termVariableNode = termVariableNodeQuery(containedAssertionNode),
|
|
62
|
-
negated = assertionNegated; ///
|
|
63
|
-
|
|
64
|
-
if (false) {
|
|
65
|
-
///
|
|
66
|
-
} else if (frameMetavariableNode !== null) {
|
|
67
|
-
const statementMetavariableNodes = statementMetavariableNodesQuery(containedAssertionNode),
|
|
68
|
-
frameMetavariableNodeMatchesStatementMetavariableNode = statementMetavariableNodes.some((statementMetavariableNode) => {
|
|
69
|
-
const frameMetavariableNodeMatchesStatementMetavariableNode = frameMetavariableNode.match(statementMetavariableNode);
|
|
70
|
-
|
|
71
|
-
if (frameMetavariableNodeMatchesStatementMetavariableNode) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
if (!negated) {
|
|
77
|
-
if (frameMetavariableNodeMatchesStatementMetavariableNode) {
|
|
78
|
-
derivedContainedAssertionVerified = true;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (negated) {
|
|
83
|
-
if (!frameMetavariableNodeMatchesStatementMetavariableNode) {
|
|
84
|
-
derivedContainedAssertionVerified = true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
} else if (termVariableNode !== null) {
|
|
88
|
-
const statementVariableNodes = statementVariableNodesQuery(containedAssertionNode),
|
|
89
|
-
termVariableNodeMatchesStatementVariableNode = statementVariableNodes.some((statementVariableNode) => {
|
|
90
|
-
const termVariableNodeMatchesStatementVariableNode = termVariableNode.match(statementVariableNode);
|
|
91
|
-
|
|
92
|
-
if (termVariableNodeMatchesStatementVariableNode) {
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
if (!negated) {
|
|
98
|
-
if (termVariableNodeMatchesStatementVariableNode) {
|
|
99
|
-
derivedContainedAssertionVerified = true;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (negated) {
|
|
104
|
-
if (!termVariableNodeMatchesStatementVariableNode) {
|
|
105
|
-
derivedContainedAssertionVerified = true;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (derivedContainedAssertionVerified) {
|
|
111
|
-
localContext.debug(`...verified the '${containedAssertionString}' derived contained assertion.`, containedAssertionNode);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return derivedContainedAssertionVerified;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function verifyStatedContainedAssertion(containedAssertionNode, assignments, stated, localContext) {
|
|
119
|
-
let statedContainedAssertionVerified;
|
|
120
|
-
|
|
121
|
-
if (stated) {
|
|
122
|
-
const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
123
|
-
|
|
124
|
-
localContext.trace(`Verifying the '${containedAssertionString}' stated contained assertion...`, containedAssertionNode);
|
|
125
|
-
|
|
126
|
-
statedContainedAssertionVerified = true;
|
|
127
|
-
|
|
128
|
-
if (statedContainedAssertionVerified) {
|
|
129
|
-
localContext.debug(`...verified the '${containedAssertionString}' stated contained assertion.`, containedAssertionNode);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return statedContainedAssertionVerified;
|
|
134
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import metaLevelVerifier from "../../verifier/metaLevel";
|
|
4
|
-
|
|
5
|
-
import { nodeQuery } from "../../utilities/query";
|
|
6
|
-
import { isAssertionNegated } from "../../utilities/assertion";
|
|
7
|
-
import { metavariableNameFromMetavariableNode } from "../../utilities/name";
|
|
8
|
-
|
|
9
|
-
const variableNodeQuery = nodeQuery("/definedAssertion/term/variable!"),
|
|
10
|
-
metavariableNodeQuery = nodeQuery("/definedAssertion/frame/metavariable!");
|
|
11
|
-
|
|
12
|
-
const verifyDefinedAssertionFunctions = [
|
|
13
|
-
verifyDerivedDefinedAssertion,
|
|
14
|
-
verifyStatedDefinedAssertion
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
export default function verifyDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
|
|
18
|
-
let definedAssertionVerified;
|
|
19
|
-
|
|
20
|
-
const definedAssertionString = localContext.nodeAsString(definedAssertionNode),
|
|
21
|
-
savedStated = stated; ///;
|
|
22
|
-
|
|
23
|
-
localContext.trace(`Verifying the '${definedAssertionString}' defined assertion...`, definedAssertionNode);
|
|
24
|
-
|
|
25
|
-
assignments = null; ///
|
|
26
|
-
|
|
27
|
-
stated = true; ///
|
|
28
|
-
|
|
29
|
-
const verified = metaLevelVerifier.verify(definedAssertionNode, assignments, stated, localContext);
|
|
30
|
-
|
|
31
|
-
stated = savedStated; ///
|
|
32
|
-
|
|
33
|
-
if (verified) {
|
|
34
|
-
definedAssertionVerified = verifyDefinedAssertionFunctions.some((verifyDefinedAssertionFunction) => {
|
|
35
|
-
const definedAssertionVerified = verifyDefinedAssertionFunction(definedAssertionNode, assignments, stated, localContext);
|
|
36
|
-
|
|
37
|
-
if (definedAssertionVerified) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (definedAssertionVerified) {
|
|
44
|
-
localContext.debug(`...verified the '${definedAssertionString}' defined assertion.`, definedAssertionNode);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return definedAssertionVerified;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
|
|
51
|
-
let derivedDefinedAssertionVerified = false;
|
|
52
|
-
|
|
53
|
-
if (!stated) {
|
|
54
|
-
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
55
|
-
|
|
56
|
-
localContext.trace(`Verifying the '${definedAssertionString}' derived defined assertion...`, definedAssertionNode);
|
|
57
|
-
|
|
58
|
-
const assertionNegated = isAssertionNegated(definedAssertionNode),
|
|
59
|
-
metavariableNode = metavariableNodeQuery(definedAssertionNode),
|
|
60
|
-
variableNode = variableNodeQuery(definedAssertionNode);
|
|
61
|
-
|
|
62
|
-
if (false) {
|
|
63
|
-
///
|
|
64
|
-
} else if (metavariableNode !== null) {
|
|
65
|
-
const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
66
|
-
metavariableDefinedByMetavariableName = localContext.isMetavariableDefinedByMetavariableName(metavariableName);
|
|
67
|
-
|
|
68
|
-
if (!assertionNegated) {
|
|
69
|
-
if (metavariableDefinedByMetavariableName) {
|
|
70
|
-
derivedDefinedAssertionVerified = true;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (assertionNegated) {
|
|
75
|
-
if (!metavariableDefinedByMetavariableName) {
|
|
76
|
-
derivedDefinedAssertionVerified = true;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
} else if (variableNode !== null) {
|
|
80
|
-
const variable = localContext.findVariableByVariableNode(variableNode),
|
|
81
|
-
variableDefined = localContext.isVariableDefined(variable);
|
|
82
|
-
|
|
83
|
-
if (!assertionNegated) {
|
|
84
|
-
if (variableDefined) {
|
|
85
|
-
derivedDefinedAssertionVerified = true;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (assertionNegated) {
|
|
90
|
-
if (!variableDefined) {
|
|
91
|
-
derivedDefinedAssertionVerified = true;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (derivedDefinedAssertionVerified) {
|
|
97
|
-
localContext.debug(`...verified the '${definedAssertionString}' derived defined assertion.`, definedAssertionNode);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return derivedDefinedAssertionVerified;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function verifyStatedDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
|
|
105
|
-
let statedDefinedAssertionVerified;
|
|
106
|
-
|
|
107
|
-
if (stated) {
|
|
108
|
-
const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
109
|
-
|
|
110
|
-
localContext.trace(`Verifying the '${definedAssertionString}' stated defined assertion...`, definedAssertionNode);
|
|
111
|
-
|
|
112
|
-
statedDefinedAssertionVerified = true;
|
|
113
|
-
|
|
114
|
-
if (statedDefinedAssertionVerified) {
|
|
115
|
-
localContext.debug(`...verified the '${definedAssertionString}' stated defined assertion.`, definedAssertionNode);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return statedDefinedAssertionVerified;
|
|
120
|
-
}
|