occam-verify-cli 0.0.965 → 0.0.968
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/action/verify.js +0 -14
- package/bin/main.js +27 -0
- package/lib/metavariable.js +6 -37
- package/lib/unify/termWithTerm.js +10 -4
- package/lib/utilities/equivalences.js +20 -28
- package/lib/variable.js +1 -9
- package/lib/verifier/statementAsCombinator.js +2 -2
- package/lib/verify/assertion/contained.js +3 -9
- package/lib/verify/assertion/defined.js +3 -3
- package/lib/verify/assertion/type.js +2 -5
- package/lib/verify/equality.js +3 -1
- package/lib/verify/proofStep.js +14 -8
- package/lib/verify/statement/qualified.js +13 -38
- package/lib/verify/statement/unqualified.js +55 -14
- package/lib/verify/statement.js +25 -4
- package/lib/verify/statementGivenMetaType.js +16 -7
- package/package.json +1 -1
- package/src/metavariable.js +3 -42
- package/src/unify/termWithTerm.js +14 -6
- package/src/utilities/equivalences.js +14 -32
- package/src/variable.js +0 -8
- package/src/verifier/statementAsCombinator.js +1 -1
- package/src/verify/assertion/contained.js +2 -4
- package/src/verify/assertion/defined.js +2 -2
- package/src/verify/assertion/type.js +2 -7
- package/src/verify/equality.js +5 -0
- package/src/verify/proofStep.js +19 -9
- package/src/verify/statement/qualified.js +12 -54
- package/src/verify/statement/unqualified.js +16 -9
- package/src/verify/statement.js +24 -0
- package/src/verify/statementGivenMetaType.js +21 -10
|
@@ -7,12 +7,6 @@ import { nodeQuery } from "../../utilities/query";
|
|
|
7
7
|
const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
|
|
8
8
|
metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
|
|
9
9
|
|
|
10
|
-
const equalityNodeQuery = nodeQuery("/statement/equality!"),
|
|
11
|
-
judgementNodeQuery = nodeQuery("/statement/judgement!"),
|
|
12
|
-
typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
|
|
13
|
-
definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
|
|
14
|
-
containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
|
|
15
|
-
|
|
16
10
|
const unifyDerivedQualifiedStatementFunctions = [
|
|
17
11
|
unifyDerivedQualifiedStatementAWithRule,
|
|
18
12
|
unifyDerivedQualifiedStatementAWithAxiom,
|
|
@@ -33,13 +27,9 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
|
|
|
33
27
|
statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
|
|
34
28
|
|
|
35
29
|
if (statementVerified) {
|
|
36
|
-
|
|
37
|
-
const derivedQualifiedStatementVerified = verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
|
|
30
|
+
const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
|
|
38
31
|
|
|
39
|
-
|
|
40
|
-
} else {
|
|
41
|
-
qualifiedStatementVerified = true;
|
|
42
|
-
}
|
|
32
|
+
qualifiedStatementVerified = derivedQualifiedStatementUnified; ///
|
|
43
33
|
}
|
|
44
34
|
|
|
45
35
|
if (qualifiedStatementVerified) {
|
|
@@ -49,56 +39,24 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
|
|
|
49
39
|
return qualifiedStatementVerified;
|
|
50
40
|
}
|
|
51
41
|
|
|
52
|
-
function
|
|
53
|
-
let
|
|
42
|
+
function unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
|
|
43
|
+
let derivedQualifiedStatementUnified;
|
|
54
44
|
|
|
55
45
|
const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
56
46
|
|
|
57
|
-
localContext.trace(`
|
|
58
|
-
|
|
59
|
-
if (!derivedQualifiedStatementVerified) {
|
|
60
|
-
const derivedQualifiedStatementVerifiedTrivially = verifyDerivedQualifiedStatementATrivially(qualifiedStatementNode, substitutions, localContext);
|
|
61
|
-
|
|
62
|
-
derivedQualifiedStatementVerified = derivedQualifiedStatementVerifiedTrivially; ///
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (!derivedQualifiedStatementVerified) {
|
|
66
|
-
const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
|
|
67
|
-
const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
|
|
47
|
+
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement...`, qualifiedStatementNode);
|
|
68
48
|
|
|
69
|
-
|
|
70
|
-
|
|
49
|
+
derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
|
|
50
|
+
const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
|
|
71
51
|
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (derivedQualifiedStatementVerified) {
|
|
76
|
-
localContext.debug(`...verified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return derivedQualifiedStatementVerified;
|
|
80
|
-
}
|
|
52
|
+
return derivedQualifiedStatementUnified;
|
|
53
|
+
});
|
|
81
54
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode);
|
|
86
|
-
|
|
87
|
-
if (metavariableNode === null) {
|
|
88
|
-
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
89
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
90
|
-
|
|
91
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement trivially...`, qualifiedStatementNode);
|
|
92
|
-
|
|
93
|
-
debugger
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (derivedQualifiedStatementVerifiedTrivially) {
|
|
97
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement trivially.`, qualifiedStatementNode);
|
|
98
|
-
}
|
|
55
|
+
if (derivedQualifiedStatementUnified) {
|
|
56
|
+
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
|
|
99
57
|
}
|
|
100
58
|
|
|
101
|
-
return
|
|
59
|
+
return derivedQualifiedStatementUnified;
|
|
102
60
|
}
|
|
103
61
|
|
|
104
62
|
function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import verifyStatement from "../../verify/statement";
|
|
4
4
|
|
|
5
5
|
import { nodeQuery } from "../../utilities/query";
|
|
6
|
+
import { verifyStatementTrivially } from "../../verify/statement";
|
|
6
7
|
|
|
7
8
|
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
|
|
8
9
|
|
|
@@ -18,9 +19,15 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
|
|
|
18
19
|
|
|
19
20
|
if (statementVerified) {
|
|
20
21
|
if (derived) {
|
|
21
|
-
const
|
|
22
|
+
const statementVerifiedTrivially = verifyStatementTrivially(statementNode, localContext);
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
if (statementVerifiedTrivially) {
|
|
25
|
+
unqualifiedStatementVerified = true;
|
|
26
|
+
} else {
|
|
27
|
+
const derivedUnqualifiedStatementUnified = unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
|
|
28
|
+
|
|
29
|
+
unqualifiedStatementVerified = derivedUnqualifiedStatementUnified; ///
|
|
30
|
+
}
|
|
24
31
|
} else {
|
|
25
32
|
unqualifiedStatementVerified = true;
|
|
26
33
|
}
|
|
@@ -33,21 +40,21 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
|
|
|
33
40
|
return unqualifiedStatementVerified;
|
|
34
41
|
}
|
|
35
42
|
|
|
36
|
-
function
|
|
37
|
-
let
|
|
43
|
+
function unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
|
|
44
|
+
let derivedUnqualifiedStatementUnified;
|
|
38
45
|
|
|
39
46
|
const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
|
|
40
47
|
|
|
41
|
-
localContext.trace(`
|
|
48
|
+
localContext.trace(`Unifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
|
|
42
49
|
|
|
43
50
|
const statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
44
51
|
statementUnified = localContext.unifyStatement(statementNode, localContext);
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
derivedUnqualifiedStatementUnified = statementUnified; ///
|
|
47
54
|
|
|
48
|
-
if (
|
|
49
|
-
localContext.debug(`...
|
|
55
|
+
if (derivedUnqualifiedStatementUnified) {
|
|
56
|
+
localContext.debug(`...unified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
|
|
50
57
|
}
|
|
51
58
|
|
|
52
|
-
return
|
|
59
|
+
return derivedUnqualifiedStatementUnified;
|
|
53
60
|
}
|
package/src/verify/statement.js
CHANGED
|
@@ -89,6 +89,30 @@ Object.assign(shim, {
|
|
|
89
89
|
|
|
90
90
|
export default verifyStatement;
|
|
91
91
|
|
|
92
|
+
export function verifyStatementTrivially(statementNode, localContext) {
|
|
93
|
+
let statementVerifiedTrivially = false;
|
|
94
|
+
|
|
95
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
96
|
+
|
|
97
|
+
localContext.trace(`Verifying the '${statementString}' statement trivially...`, statementNode);
|
|
98
|
+
|
|
99
|
+
const equalityNode = equalityNodeQuery(statementNode),
|
|
100
|
+
judgementNode = judgementNodeQuery(statementNode),
|
|
101
|
+
typeAssertionNode = typeAssertionNodeQuery(statementNode),
|
|
102
|
+
definedAssertionNode = definedAssertionNodeQuery(statementNode),
|
|
103
|
+
containedAssertionNode = containedAssertionNodeQuery(statementNode);
|
|
104
|
+
|
|
105
|
+
if ((equalityNode !== null) || (judgementNode !== null) || (typeAssertionNode !== null) || (definedAssertionNode !== null) || (containedAssertionNode !== null)) {
|
|
106
|
+
statementVerifiedTrivially = true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (statementVerifiedTrivially) {
|
|
110
|
+
localContext.debug(`...verified the '${statementString}' statement trivially.`, statementNode);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return statementVerifiedTrivially;
|
|
114
|
+
}
|
|
115
|
+
|
|
92
116
|
function verifyStatementAsMetavariable(statementNode, assignments, derived, localContext) {
|
|
93
117
|
let statementVerifiedAsMetavariable = false;
|
|
94
118
|
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import shim from "../shim";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { nodeQuery } from "../utilities/query";
|
|
6
|
+
import { FRAME_META_TYPE_NAME, REFERENCE_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
|
|
7
|
+
|
|
8
|
+
const metavariableNodeQuery = nodeQuery("/statement/metavariable!");
|
|
6
9
|
|
|
7
10
|
export default function verifyStatementGivenMetaType(statementNode, metaType, assignments, derived, localContext) {
|
|
8
11
|
let statementVerifiedGivenMetaType;
|
|
@@ -10,9 +13,23 @@ export default function verifyStatementGivenMetaType(statementNode, metaType, as
|
|
|
10
13
|
const metaTypeName = metaType.getName();
|
|
11
14
|
|
|
12
15
|
switch (metaTypeName) {
|
|
13
|
-
case FRAME_META_TYPE_NAME:
|
|
16
|
+
case FRAME_META_TYPE_NAME:
|
|
17
|
+
case REFERENCE_META_TYPE_NAME: {
|
|
18
|
+
statementVerifiedGivenMetaType = false;
|
|
19
|
+
|
|
20
|
+
const metavariableNode = metavariableNodeQuery(statementNode);
|
|
21
|
+
|
|
22
|
+
if (metavariableNode !== null) {
|
|
23
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
|
|
24
|
+
|
|
25
|
+
if (metavariable !== null) {
|
|
26
|
+
const metavariableMetaType = metavariable.getMetaType();
|
|
14
27
|
|
|
15
|
-
|
|
28
|
+
if (metavariableMetaType === metaType) {
|
|
29
|
+
statementVerifiedGivenMetaType = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
16
33
|
|
|
17
34
|
break;
|
|
18
35
|
}
|
|
@@ -21,16 +38,10 @@ export default function verifyStatementGivenMetaType(statementNode, metaType, as
|
|
|
21
38
|
const { verifyStatement } = shim,
|
|
22
39
|
statementVerified = verifyStatement(statementNode, assignments, derived, localContext)
|
|
23
40
|
|
|
24
|
-
statementVerifiedGivenMetaType = statementVerified;
|
|
41
|
+
statementVerifiedGivenMetaType = statementVerified; ///
|
|
25
42
|
|
|
26
43
|
break;
|
|
27
44
|
}
|
|
28
|
-
|
|
29
|
-
default: {
|
|
30
|
-
|
|
31
|
-
debugger
|
|
32
|
-
|
|
33
|
-
}
|
|
34
45
|
}
|
|
35
46
|
|
|
36
47
|
return statementVerifiedGivenMetaType;
|