occam-verify-cli 0.0.943 → 0.0.945
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/equality.js +14 -1
- package/lib/proofStep.js +3 -3
- package/lib/substitution/statementForMetavariable.js +3 -3
- package/lib/substitution/termForVariable.js +2 -2
- package/lib/substitution.js +14 -1
- package/lib/substitutions.js +5 -9
- package/lib/verify/equality.js +12 -21
- package/lib/verify/statement/qualified.js +2 -5
- package/lib/verify/statement/unqualified.js +2 -5
- package/lib/verify/statement.js +2 -5
- package/lib/verify/type.js +4 -7
- package/package.json +1 -1
- package/src/equality.js +22 -0
- package/src/proofStep.js +3 -3
- package/src/substitution/statementForMetavariable.js +1 -3
- package/src/substitution/termForVariable.js +1 -1
- package/src/substitution.js +12 -0
- package/src/substitutions.js +8 -14
- package/src/verify/equality.js +12 -36
- package/src/verify/statement/qualified.js +1 -5
- package/src/verify/statement/unqualified.js +1 -5
- package/src/verify/statement.js +1 -5
- package/src/verify/type.js +3 -7
package/src/verify/equality.js
CHANGED
|
@@ -4,13 +4,11 @@ import Equality from "../equality";
|
|
|
4
4
|
import verifyTerms from "../verify/terms";
|
|
5
5
|
import EqualityAssignment from "../assignment/equality";
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import { first, second } from "../utilities/array";
|
|
7
|
+
import { nodesQuery } from "../utilities/query";
|
|
9
8
|
|
|
10
|
-
const
|
|
11
|
-
rightTermNodeQuery = nodeQuery("/equality/term[1]");
|
|
9
|
+
const termNodesQuery = nodesQuery("/equality/term");
|
|
12
10
|
|
|
13
|
-
export default function verifyEquality(equalityNode, assignments, derived, localContext
|
|
11
|
+
export default function verifyEquality(equalityNode, assignments, derived, localContext) {
|
|
14
12
|
let equalityVerified;
|
|
15
13
|
|
|
16
14
|
const equalityString = localContext.nodeAsString(equalityNode);
|
|
@@ -23,7 +21,7 @@ export default function verifyEquality(equalityNode, assignments, derived, local
|
|
|
23
21
|
];
|
|
24
22
|
|
|
25
23
|
equalityVerified = verifyEqualityFunctions.some((verifyEqualityFunction) => {
|
|
26
|
-
const equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, localContext
|
|
24
|
+
const equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, localContext);
|
|
27
25
|
|
|
28
26
|
if (equalityVerified) {
|
|
29
27
|
return true;
|
|
@@ -37,7 +35,7 @@ export default function verifyEquality(equalityNode, assignments, derived, local
|
|
|
37
35
|
return equalityVerified;
|
|
38
36
|
}
|
|
39
37
|
|
|
40
|
-
function verifyDerivedEquality(equalityNode, assignments, derived, localContext
|
|
38
|
+
function verifyDerivedEquality(equalityNode, assignments, derived, localContext) {
|
|
41
39
|
let derivedEqualityVerified = false;
|
|
42
40
|
|
|
43
41
|
if (derived) {
|
|
@@ -46,20 +44,11 @@ function verifyDerivedEquality(equalityNode, assignments, derived, localContext,
|
|
|
46
44
|
localContext.trace(`Verifying the '${equalityString}' derived equality...`, equalityNode);
|
|
47
45
|
|
|
48
46
|
const terms = [],
|
|
49
|
-
|
|
50
|
-
rightTermNode = rightTermNodeQuery(equalityNode),
|
|
51
|
-
termNodes = [
|
|
52
|
-
leftTermNode,
|
|
53
|
-
rightTermNode
|
|
54
|
-
],
|
|
47
|
+
termNodes = termNodesQuery(equalityNode),
|
|
55
48
|
termsVerified = verifyTerms(termNodes, terms, localContext, () => {
|
|
56
49
|
let verifiedAhead = false;
|
|
57
50
|
|
|
58
|
-
const
|
|
59
|
-
secondTerm = second(terms),
|
|
60
|
-
leftTerm = firstTerm, ///
|
|
61
|
-
rightTerm = secondTerm, ///
|
|
62
|
-
equality = Equality.fromLeftTermRightTermAndEqualityNode(leftTerm, rightTerm, equalityNode);
|
|
51
|
+
const equality = Equality.fromTermsAndEqualityNode(terms, equalityNode);
|
|
63
52
|
|
|
64
53
|
if (equality !== null) {
|
|
65
54
|
const equalityEqual = equality.isEqual(localContext);
|
|
@@ -70,9 +59,7 @@ function verifyDerivedEquality(equalityNode, assignments, derived, localContext,
|
|
|
70
59
|
|
|
71
60
|
assignments.push(assignment);
|
|
72
61
|
|
|
73
|
-
verifiedAhead =
|
|
74
|
-
|
|
75
|
-
assignments.pop();
|
|
62
|
+
verifiedAhead = true;
|
|
76
63
|
}
|
|
77
64
|
}
|
|
78
65
|
|
|
@@ -89,7 +76,7 @@ function verifyDerivedEquality(equalityNode, assignments, derived, localContext,
|
|
|
89
76
|
return derivedEqualityVerified;
|
|
90
77
|
}
|
|
91
78
|
|
|
92
|
-
function verifyStatedEquality(equalityNode, assignments, derived, localContext
|
|
79
|
+
function verifyStatedEquality(equalityNode, assignments, derived, localContext) {
|
|
93
80
|
let statedEqualityVerified = false;
|
|
94
81
|
|
|
95
82
|
if (!derived) {
|
|
@@ -98,20 +85,11 @@ function verifyStatedEquality(equalityNode, assignments, derived, localContext,
|
|
|
98
85
|
localContext.trace(`Verifying the '${equalityString}' stated equality...`, equalityNode);
|
|
99
86
|
|
|
100
87
|
const terms = [],
|
|
101
|
-
|
|
102
|
-
rightTermNode = rightTermNodeQuery(equalityNode),
|
|
103
|
-
termNodes = [
|
|
104
|
-
leftTermNode,
|
|
105
|
-
rightTermNode
|
|
106
|
-
],
|
|
88
|
+
termNodes = termNodesQuery(equalityNode),
|
|
107
89
|
termsVerified = verifyTerms(termNodes, terms, localContext, () => {
|
|
108
90
|
let verifiedAhead = false;
|
|
109
91
|
|
|
110
|
-
const
|
|
111
|
-
secondTerm = second(terms),
|
|
112
|
-
leftTerm = firstTerm, ///
|
|
113
|
-
rightTerm = secondTerm, ///
|
|
114
|
-
equality = Equality.fromLeftTermRightTermAndEqualityNode(leftTerm, rightTerm, equalityNode);
|
|
92
|
+
const equality = Equality.fromTermsAndEqualityNode(terms, equalityNode);
|
|
115
93
|
|
|
116
94
|
if (equality !== null) {
|
|
117
95
|
const equalityAssignment = EqualityAssignment.fromEquality(equality),
|
|
@@ -119,9 +97,7 @@ function verifyStatedEquality(equalityNode, assignments, derived, localContext,
|
|
|
119
97
|
|
|
120
98
|
assignments.push(assignment);
|
|
121
99
|
|
|
122
|
-
verifiedAhead =
|
|
123
|
-
|
|
124
|
-
assignments.pop();
|
|
100
|
+
verifiedAhead = true;
|
|
125
101
|
}
|
|
126
102
|
|
|
127
103
|
return verifiedAhead;
|
|
@@ -250,11 +250,7 @@ function verifyStatedStatementAsEquality(statementNode, assignments, derived, lo
|
|
|
250
250
|
|
|
251
251
|
localContext.trace(`Verifying the '${statementString}' stated statement as an equality...`, statementNode);
|
|
252
252
|
|
|
253
|
-
const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext
|
|
254
|
-
const verifiedAhead = true;
|
|
255
|
-
|
|
256
|
-
return verifiedAhead;
|
|
257
|
-
});
|
|
253
|
+
const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext);
|
|
258
254
|
|
|
259
255
|
statedStatementVerifiedAsEquality = equalityVerified; ///
|
|
260
256
|
|
|
@@ -126,11 +126,7 @@ function verifyDerivedStatementAsEquality(statementNode, assignments, derived, l
|
|
|
126
126
|
|
|
127
127
|
localContext.trace(`Verifying the '${statementString}' derived statement as an equality...`, statementNode);
|
|
128
128
|
|
|
129
|
-
const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext
|
|
130
|
-
const verifiedAhead = true;
|
|
131
|
-
|
|
132
|
-
return verifiedAhead;
|
|
133
|
-
});
|
|
129
|
+
const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext);
|
|
134
130
|
|
|
135
131
|
derivedStatementVerifiedAsEquality = equalityVerified; ///
|
|
136
132
|
|
package/src/verify/statement.js
CHANGED
|
@@ -98,11 +98,7 @@ function verifyStatementAsEquality(statementNode, assignments, derived, localCon
|
|
|
98
98
|
|
|
99
99
|
localContext.trace(`Verifying the '${statementString}' statement as an equality...`, statementNode);
|
|
100
100
|
|
|
101
|
-
const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext
|
|
102
|
-
const verifiedAhead = true;
|
|
103
|
-
|
|
104
|
-
return verifiedAhead;
|
|
105
|
-
});
|
|
101
|
+
const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext);
|
|
106
102
|
|
|
107
103
|
statementVerifiedAsEquality = equalityVerified; ///
|
|
108
104
|
|
package/src/verify/type.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
export default function verifyType(typeNode, localContext
|
|
4
|
-
let typeVerified
|
|
3
|
+
export default function verifyType(typeNode, localContext) {
|
|
4
|
+
let typeVerified;
|
|
5
5
|
|
|
6
6
|
const typeString = localContext.nodeAsString(typeNode);
|
|
7
7
|
|
|
@@ -9,11 +9,7 @@ export default function verifyType(typeNode, localContext, verifyAhead) {
|
|
|
9
9
|
|
|
10
10
|
const typePresent = localContext.isTypePresentByTypeNode(typeNode);
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
const verifiedAhead = verifyAhead();
|
|
14
|
-
|
|
15
|
-
typeVerified = verifiedAhead; ///
|
|
16
|
-
}
|
|
12
|
+
typeVerified = typePresent; ///
|
|
17
13
|
|
|
18
14
|
if (typeVerified) {
|
|
19
15
|
localContext.debug(`...verified the '${typeString}' type.`, typeNode);
|