occam-verify-cli 0.0.532 → 0.0.534
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/assignment.js +60 -0
- package/lib/conclusion.js +3 -3
- package/lib/consequence.js +2 -2
- package/lib/constants.js +1 -5
- package/lib/context/proof.js +1 -20
- package/lib/equality.js +22 -81
- package/lib/log.js +3 -2
- package/lib/premise.js +7 -7
- package/lib/supposition.js +4 -4
- package/lib/variable.js +23 -3
- package/lib/verifier/metastatementForMetavariable.js +23 -23
- package/lib/verifier/statement.js +199 -0
- package/lib/verifier/statementForMetavariable.js +25 -25
- package/lib/verifier/termForVariable.js +23 -23
- package/lib/verifier.js +27 -26
- package/lib/verify/assertion/type.js +56 -68
- package/lib/verify/conclusion.js +2 -2
- package/lib/verify/consequence.js +2 -2
- package/lib/verify/derivation.js +3 -3
- package/lib/verify/metastatement/qualified.js +3 -3
- package/lib/verify/metastatement/unqualified.js +3 -3
- package/lib/verify/metastatement.js +2 -2
- package/lib/verify/premise.js +2 -2
- package/lib/verify/ruleDerivation.js +3 -3
- package/lib/verify/statement/qualified.js +3 -3
- package/lib/verify/statement/unqualified.js +3 -3
- package/lib/verify/statement.js +87 -132
- package/lib/verify/statementAsCombinator.js +2 -2
- package/lib/verify/supposition.js +4 -4
- package/package.json +1 -1
- package/src/{assertion/type.js → assignment.js} +4 -4
- package/src/conclusion.js +4 -4
- package/src/consequence.js +2 -2
- package/src/constants.js +0 -1
- package/src/context/proof.js +0 -25
- package/src/equality.js +20 -109
- package/src/log.js +1 -1
- package/src/premise.js +15 -15
- package/src/supposition.js +11 -11
- package/src/variable.js +18 -2
- package/src/verifier/metastatementForMetavariable.js +19 -19
- package/src/verifier/statement.js +135 -0
- package/src/verifier/statementForMetavariable.js +21 -21
- package/src/verifier/termForVariable.js +19 -19
- package/src/verifier.js +21 -21
- package/src/verify/assertion/type.js +83 -82
- package/src/verify/conclusion.js +2 -2
- package/src/verify/consequence.js +2 -2
- package/src/verify/derivation.js +4 -4
- package/src/verify/metastatement/qualified.js +2 -2
- package/src/verify/metastatement/unqualified.js +2 -2
- package/src/verify/metastatement.js +1 -1
- package/src/verify/premise.js +2 -2
- package/src/verify/ruleDerivation.js +4 -4
- package/src/verify/statement/qualified.js +2 -2
- package/src/verify/statement/unqualified.js +2 -2
- package/src/verify/statement.js +87 -200
- package/src/verify/statementAsCombinator.js +2 -2
- package/src/verify/supposition.js +4 -4
- package/lib/assertion/type.js +0 -60
- package/lib/node/statement/equality.js +0 -16
- package/src/node/statement/equality.js +0 -10
|
@@ -7,7 +7,7 @@ import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query
|
|
|
7
7
|
const referenceNodeQuery = nodeQuery("/qualifiedStatement/qualification!/reference!"),
|
|
8
8
|
statementNodeQuery = nodeQuery("/qualifiedStatement/statement!");
|
|
9
9
|
|
|
10
|
-
export default function verifyQualifiedStatement(qualifiedStatementNode,
|
|
10
|
+
export default function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived, proofContext) {
|
|
11
11
|
let qualifiedStatementVerified = false;
|
|
12
12
|
|
|
13
13
|
const statementNode = statementNodeQuery(qualifiedStatementNode);
|
|
@@ -21,7 +21,7 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, asserti
|
|
|
21
21
|
|
|
22
22
|
if (referenceNode === null) {
|
|
23
23
|
const context = proofContext,
|
|
24
|
-
statementVerified = verifyStatement(statementNode,
|
|
24
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, context);
|
|
25
25
|
|
|
26
26
|
qualifiedStatementVerified = statementVerified; ///
|
|
27
27
|
} else {
|
|
@@ -6,7 +6,7 @@ import { nodeQuery } from "../../utilities/query";
|
|
|
6
6
|
|
|
7
7
|
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
|
|
8
8
|
|
|
9
|
-
export default function verifyUnqualifiedStatement(unqualifiedStatementNode,
|
|
9
|
+
export default function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, proofContext) {
|
|
10
10
|
let unqualifiedStatementVerified = false;
|
|
11
11
|
|
|
12
12
|
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
@@ -24,7 +24,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
|
|
|
24
24
|
|
|
25
25
|
if (statementMatches) {
|
|
26
26
|
const context = proofContext, ///
|
|
27
|
-
statementVerified = verifyStatement(statementNode,
|
|
27
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, context);
|
|
28
28
|
|
|
29
29
|
unqualifiedStatementVerified = statementVerified; ///
|
|
30
30
|
}
|
package/src/verify/statement.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Equality from "../equality";
|
|
4
|
+
import Variable from "../variable";
|
|
5
|
+
import Assignment from "../assignment";
|
|
4
6
|
import verifyTerm from "../verify/term";
|
|
7
|
+
import statementVerifier from "../verifier/statement";
|
|
8
|
+
import equalityCombinator from "../ocmbinator/equality";
|
|
5
9
|
import bracketedCombinator from "../ocmbinator/bracketed";
|
|
6
10
|
import verifyTypeAssertion from "../verify/assertion/type";
|
|
7
11
|
|
|
8
12
|
import { first } from "../utilities/array";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
statementNodeQuery = nodeQuery("/metaArgument/statement!"),
|
|
19
|
-
typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
|
|
20
|
-
metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type");
|
|
21
|
-
|
|
22
|
-
export default function verifyStatement(statementNode, assertions, derived, context) {
|
|
13
|
+
import { nodeQuery } from "../utilities/query";
|
|
14
|
+
import { nodeAsString } from "../utilities/string";
|
|
15
|
+
import { verifyTermAsVariable } from "../verify/term";
|
|
16
|
+
|
|
17
|
+
const leftTermNodeQuery = nodeQuery("/statement/argument[0]/term!"),
|
|
18
|
+
rightTermNodeQuery = nodeQuery("/statement/argument[1]/term!"),
|
|
19
|
+
typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!");
|
|
20
|
+
|
|
21
|
+
export default function verifyStatement(statementNode, assignments, derived, context) {
|
|
23
22
|
let statementVerified = false;
|
|
24
23
|
|
|
25
24
|
if (!statementVerified) {
|
|
@@ -29,13 +28,13 @@ export default function verifyStatement(statementNode, assertions, derived, cont
|
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
if (!statementVerified) {
|
|
32
|
-
const statementVerifiedAsTypeAssertion = verifyStatementAsTypeAssertion(statementNode,
|
|
31
|
+
const statementVerifiedAsTypeAssertion = verifyStatementAsTypeAssertion(statementNode, assignments, derived, context);
|
|
33
32
|
|
|
34
33
|
statementVerified = statementVerifiedAsTypeAssertion; ///
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
if (!statementVerified) {
|
|
38
|
-
const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, derived, context);
|
|
37
|
+
const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, assignments, derived, context);
|
|
39
38
|
|
|
40
39
|
statementVerified = statementVerifiedAsEquality; //
|
|
41
40
|
}
|
|
@@ -43,16 +42,6 @@ export default function verifyStatement(statementNode, assertions, derived, cont
|
|
|
43
42
|
return statementVerified;
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
export function verifyStatementAgainstCombinator(statementNode, combinator, context) {
|
|
47
|
-
const combinatorStatementNode = combinator.getStatementNode(),
|
|
48
|
-
node = statementNode, ///
|
|
49
|
-
combinatorNode = combinatorStatementNode, ///
|
|
50
|
-
nodeVerified = verifyNode(node, combinatorNode, context),
|
|
51
|
-
statementVerifiedAgainstCombinator = nodeVerified; ///
|
|
52
|
-
|
|
53
|
-
return statementVerifiedAgainstCombinator;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
45
|
function verifyStatementAgainstCombinators(statementNode, context) {
|
|
57
46
|
let statementVerifiedAgainstCombinators = false;
|
|
58
47
|
|
|
@@ -78,13 +67,24 @@ function verifyStatementAgainstCombinators(statementNode, context) {
|
|
|
78
67
|
return statementVerifiedAgainstCombinators;
|
|
79
68
|
}
|
|
80
69
|
|
|
81
|
-
function
|
|
70
|
+
function verifyStatementAgainstCombinator(statementNode, combinator, context) {
|
|
71
|
+
const combinatorStatementNode = combinator.getStatementNode(),
|
|
72
|
+
nonTerminalNodeA = statementNode, ///
|
|
73
|
+
nonTerminalNodeB = combinatorStatementNode, ///
|
|
74
|
+
substitutions = null,
|
|
75
|
+
nodeVerified = statementVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context),
|
|
76
|
+
statementVerifiedAgainstCombinator = nodeVerified; ///
|
|
77
|
+
|
|
78
|
+
return statementVerifiedAgainstCombinator;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function verifyStatementAsTypeAssertion(statementNode, assignments, derived, context) {
|
|
82
82
|
let statementVerifiedAsTypeAssertion = false;
|
|
83
83
|
|
|
84
84
|
const typeAssertionNode = typeAssertionNodeQuery(statementNode);
|
|
85
85
|
|
|
86
86
|
if (typeAssertionNode !== null) {
|
|
87
|
-
const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode,
|
|
87
|
+
const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, context);
|
|
88
88
|
|
|
89
89
|
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
90
90
|
}
|
|
@@ -92,189 +92,76 @@ function verifyStatementAsTypeAssertion(statementNode, assertions, derived, cont
|
|
|
92
92
|
return statementVerifiedAsTypeAssertion;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
function verifyStatementAsEquality(statementNode, derived, context) {
|
|
95
|
+
function verifyStatementAsEquality(statementNode, assignments, derived, context) {
|
|
96
96
|
let statementVerifiedAsEquality = false;
|
|
97
97
|
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
if (equality !== null) {
|
|
101
|
-
statementVerifiedAsEquality = true; ///
|
|
102
|
-
|
|
103
|
-
if (derived) {
|
|
104
|
-
const equalities = context.getEqualities();
|
|
98
|
+
const statementString = context.nodeAsString(statementNode);
|
|
105
99
|
|
|
106
|
-
|
|
107
|
-
|
|
100
|
+
const combinator = equalityCombinator, ///
|
|
101
|
+
statementVerifiedAgainstCombinator = verifyStatementAgainstCombinator(statementNode, combinator, context);
|
|
108
102
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
103
|
+
if (statementVerifiedAgainstCombinator) {
|
|
104
|
+
const leftTermNode = leftTermNodeQuery(statementNode),
|
|
105
|
+
rightTermNode = rightTermNodeQuery(statementNode);
|
|
113
106
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
function verifyNode(node, combinatorNode, context) {
|
|
118
|
-
let nodeVerified;
|
|
119
|
-
|
|
120
|
-
const nodeTerminalNode = node.isTerminalNode(),
|
|
121
|
-
combinatorNodeTerminalNode = combinatorNode.isTerminalNode();
|
|
122
|
-
|
|
123
|
-
if (nodeTerminalNode === combinatorNodeTerminalNode) {
|
|
124
|
-
if (nodeTerminalNode) {
|
|
125
|
-
const terminalNode = node, ///
|
|
126
|
-
combinatorTerminalNode = combinatorNode, ///
|
|
127
|
-
terminalNodeVerified = verifyTerminalNode(terminalNode, combinatorTerminalNode, context);
|
|
107
|
+
if (derived) {
|
|
108
|
+
const equality = Equality.fromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode),
|
|
109
|
+
equalityEquates = equality.equate(context);
|
|
128
110
|
|
|
129
|
-
|
|
111
|
+
statementVerifiedAsEquality = equalityEquates; ///
|
|
130
112
|
} else {
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const ruleName = nonTerminalNode.getRuleName(), ///
|
|
178
|
-
combinatorRuleName = combinatorNonTerminalNode.getRuleName(); ///
|
|
179
|
-
|
|
180
|
-
if (ruleName === combinatorRuleName) {
|
|
181
|
-
switch (ruleName) {
|
|
182
|
-
case ARGUMENT_RULE_NAME: {
|
|
183
|
-
const argumentNode = nonTerminalNode, ///
|
|
184
|
-
combinatorArgumentNode = combinatorNonTerminalNode, ///
|
|
185
|
-
argumentNodeVerified = verifyArgumentNode(argumentNode, combinatorArgumentNode, context);
|
|
186
|
-
|
|
187
|
-
nonTerminalNodeVerified = argumentNodeVerified; ///
|
|
188
|
-
|
|
189
|
-
break;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
case META_ARGUMENT_RULE_NAME: {
|
|
193
|
-
const metaArgumentNode = nonTerminalNode, ///
|
|
194
|
-
combinatorMetaargumentNode = combinatorNonTerminalNode, ///
|
|
195
|
-
metaArgumentNodeVerified = verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context);
|
|
196
|
-
|
|
197
|
-
nonTerminalNodeVerified = metaArgumentNodeVerified; ///
|
|
198
|
-
|
|
199
|
-
break;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
default: {
|
|
203
|
-
const childNodes = nonTerminalNode.getChildNodes(),
|
|
204
|
-
combinatorChildNodes = combinatorNonTerminalNode.getChildNodes(),
|
|
205
|
-
nodes = childNodes, ///
|
|
206
|
-
combinatorNodes = combinatorChildNodes, ///
|
|
207
|
-
nodesVerified = verifyNodes(nodes, combinatorNodes, context);
|
|
208
|
-
|
|
209
|
-
nonTerminalNodeVerified = nodesVerified; ///
|
|
210
|
-
|
|
211
|
-
break;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
return nonTerminalNodeVerified;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
function verifyArgumentNode(argumentNode, combinatorArgumentNode, context) {
|
|
220
|
-
let argumentNodeVerified = false;
|
|
221
|
-
|
|
222
|
-
const termNode = termNodeQuery(argumentNode);
|
|
223
|
-
|
|
224
|
-
if (termNode === null) {
|
|
225
|
-
const argumentString = context.nodeAsString(argumentNode);
|
|
226
|
-
|
|
227
|
-
context.error(`The ${argumentString} argument should be a term, not a type`, argumentNode);
|
|
228
|
-
} else {
|
|
229
|
-
const types = [],
|
|
230
|
-
termVerified = verifyTerm(termNode, types, context);
|
|
231
|
-
|
|
232
|
-
if (termVerified) {
|
|
233
|
-
const firstType = first(types),
|
|
234
|
-
termType = firstType, ///
|
|
235
|
-
typeNode = typeNodeQuery(combinatorArgumentNode),
|
|
236
|
-
typeName = typeNameFromTypeNode(typeNode),
|
|
237
|
-
type = (typeName === OBJECT_TYPE_NAME) ?
|
|
238
|
-
objectType : ///
|
|
239
|
-
context.findTypeByTypeName(typeName),
|
|
240
|
-
statementTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
241
|
-
|
|
242
|
-
if (statementTypeEqualToOrSubTypeOfType) {
|
|
243
|
-
argumentNodeVerified = true;
|
|
113
|
+
const types = [],
|
|
114
|
+
variables = [],
|
|
115
|
+
leftTermVerifiedAsVariable = verifyTermAsVariable(leftTermNode, variables, context);
|
|
116
|
+
|
|
117
|
+
if (leftTermVerifiedAsVariable) {
|
|
118
|
+
verifyTerm(rightTermNode, types, context);
|
|
119
|
+
|
|
120
|
+
const firstVariable = first(variables),
|
|
121
|
+
leftVariable = firstVariable, ///
|
|
122
|
+
firstType = first(types),
|
|
123
|
+
rightTermType = firstType, ///
|
|
124
|
+
leftVariableType = leftVariable.getType(),
|
|
125
|
+
leftVariableName = leftVariable.getName(),
|
|
126
|
+
leftVariableTypeEqualToOrSuperTypeOfRightTermType = leftVariableType.isEqualToOrSuperTypeOf(rightTermType);
|
|
127
|
+
|
|
128
|
+
if (!leftVariableTypeEqualToOrSuperTypeOfRightTermType) {
|
|
129
|
+
const rightTermString = nodeAsString(rightTermNode),
|
|
130
|
+
rightTermTypeName = rightTermType.getName(),
|
|
131
|
+
leftVariableTypeName = leftVariableType.getName();
|
|
132
|
+
|
|
133
|
+
context.error(`The left '${leftVariableName}' variable's '${leftVariableTypeName}' type is not equal to or a super-type of the right '${rightTermString}' term's '${rightTermTypeName}' type.`, statementNode);
|
|
134
|
+
} else {
|
|
135
|
+
const type = leftVariableType, ///
|
|
136
|
+
name = leftVariableName, ///
|
|
137
|
+
termNode = rightTermNode, ///
|
|
138
|
+
variable = Variable.fromTypeNameAndTermNode(type, name, termNode),
|
|
139
|
+
assignment = Assignment.fromVariable(variable);
|
|
140
|
+
|
|
141
|
+
assignments.push(assignment);
|
|
142
|
+
|
|
143
|
+
statementVerifiedAsEquality = true;
|
|
144
|
+
}
|
|
145
|
+
} else {
|
|
146
|
+
const rightTermVerifiedAsVariable = verifyTermAsVariable(rightTermNode, variables, context);
|
|
147
|
+
|
|
148
|
+
if (rightTermVerifiedAsVariable) {
|
|
149
|
+
const firstVariable = first(variables),
|
|
150
|
+
rightVariable = firstVariable, ///
|
|
151
|
+
leftTermString = nodeAsString(leftTermNode),
|
|
152
|
+
rightVariableName = rightVariable.getName();
|
|
153
|
+
|
|
154
|
+
context.error(`The left '${leftTermString}' term cannot be equated with the right '${rightVariableName}' variable.`, statementNode);
|
|
155
|
+
} else {
|
|
156
|
+
statementVerifiedAsEquality = true;
|
|
157
|
+
}
|
|
244
158
|
}
|
|
245
159
|
}
|
|
246
160
|
}
|
|
247
161
|
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
function verifyMetaargumentNode(metaArgumentNode, combinatorMetaargumentNode, context) {
|
|
252
|
-
let metaArgumentNodeVerified = false;
|
|
253
|
-
|
|
254
|
-
const statementNode = statementNodeQuery(metaArgumentNode),
|
|
255
|
-
combinatorMetaTYpeNode = metaTypeNodeQuery(combinatorMetaargumentNode);
|
|
256
|
-
|
|
257
|
-
if (statementNode === null) {
|
|
258
|
-
const metaArgumentString = context.nodeAsString(metaArgumentNode);
|
|
259
|
-
|
|
260
|
-
context.error(`Expected a statement but got a '${metaArgumentString}' meta-type.`, metaArgumentNode);
|
|
261
|
-
} else {
|
|
262
|
-
if (combinatorMetaTYpeNode === null) {
|
|
263
|
-
const combinatorMetaargumentString = context.nodeAsString(combinatorMetaargumentNode);
|
|
264
|
-
|
|
265
|
-
context.error(`Expected a meta-type but got a '${combinatorMetaargumentString}' statement.`, metaArgumentNode);
|
|
266
|
-
} else {
|
|
267
|
-
const combinatorMetaTypeTerminalNode = metaTypeTerminalNodeQuery(combinatorMetaTYpeNode),
|
|
268
|
-
content = combinatorMetaTypeTerminalNode.getContent(),
|
|
269
|
-
contentStatementMetaType = (content === STATEMENT_META_TYPE);
|
|
270
|
-
|
|
271
|
-
if (!contentStatementMetaType) {
|
|
272
|
-
context.error(`Expected the meta-type to be 'Statement' but got '${content}'.`, metaArgumentNode);
|
|
273
|
-
} else {
|
|
274
|
-
metaArgumentNodeVerified = true;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
162
|
+
if (statementVerifiedAsEquality) {
|
|
163
|
+
context.info(`Verified the '${statementString}' statement as an equality.`, statementNode);
|
|
277
164
|
}
|
|
278
165
|
|
|
279
|
-
return
|
|
166
|
+
return statementVerifiedAsEquality;
|
|
280
167
|
}
|
|
@@ -145,8 +145,8 @@ function verifyTermNode(termNode, fileContext) {
|
|
|
145
145
|
function verifyStatementNode(statementNode, fileContext) {
|
|
146
146
|
const context = fileContext, ///
|
|
147
147
|
derived = false,
|
|
148
|
-
|
|
149
|
-
statementVerified = verifyStatement(statementNode,
|
|
148
|
+
assignments = [],
|
|
149
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, context),
|
|
150
150
|
statementNodeVerified = statementVerified; ///
|
|
151
151
|
|
|
152
152
|
return statementNodeVerified;
|
|
@@ -17,9 +17,9 @@ export default function verifySupposition(suppositionNode, suppositions, proofCo
|
|
|
17
17
|
proofContext.debug(`Verifying the '${suppositionString}' supposition...`, suppositionNode);
|
|
18
18
|
|
|
19
19
|
const derived = false,
|
|
20
|
-
|
|
20
|
+
assignments = [],
|
|
21
21
|
unqualifiedStatementNode = unqualifiedStatementNodeQuery(suppositionNode),
|
|
22
|
-
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode,
|
|
22
|
+
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, proofContext);
|
|
23
23
|
|
|
24
24
|
if (unqualifiedStatementVerified) {
|
|
25
25
|
const statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
@@ -30,8 +30,8 @@ export default function verifySupposition(suppositionNode, suppositions, proofCo
|
|
|
30
30
|
|
|
31
31
|
proofContext.addProofStep(proofStep);
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
assignments.every((assignment) => {
|
|
34
|
+
assignment.assign(proofContext);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
suppositionVerified = true;
|
package/lib/assertion/type.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TypeAssertion;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
function _classCallCheck(instance, Constructor) {
|
|
12
|
-
if (!(instance instanceof Constructor)) {
|
|
13
|
-
throw new TypeError("Cannot call a class as a function");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function _defineProperties(target, props) {
|
|
17
|
-
for(var i = 0; i < props.length; i++){
|
|
18
|
-
var descriptor = props[i];
|
|
19
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
20
|
-
descriptor.configurable = true;
|
|
21
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
22
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
26
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
-
return Constructor;
|
|
29
|
-
}
|
|
30
|
-
var TypeAssertion = /*#__PURE__*/ function() {
|
|
31
|
-
function TypeAssertion(variable) {
|
|
32
|
-
_classCallCheck(this, TypeAssertion);
|
|
33
|
-
this.variable = variable;
|
|
34
|
-
}
|
|
35
|
-
_createClass(TypeAssertion, [
|
|
36
|
-
{
|
|
37
|
-
key: "getVariable",
|
|
38
|
-
value: function getVariable() {
|
|
39
|
-
return this.variable;
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
key: "assert",
|
|
44
|
-
value: function assert(proofContext) {
|
|
45
|
-
proofContext.addVariable(this.variable);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
], [
|
|
49
|
-
{
|
|
50
|
-
key: "fromVariable",
|
|
51
|
-
value: function fromVariable(variable) {
|
|
52
|
-
var typeAssertion = new TypeAssertion(variable);
|
|
53
|
-
return typeAssertion;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
]);
|
|
57
|
-
return TypeAssertion;
|
|
58
|
-
}();
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3NlcnRpb24vdHlwZS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHlwZUFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhcmlhYmxlKSB7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGU7XG4gIH1cblxuICBhc3NlcnQocHJvb2ZDb250ZXh0KSB7XG4gICAgcHJvb2ZDb250ZXh0LmFkZFZhcmlhYmxlKHRoaXMudmFyaWFibGUpO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBuZXcgVHlwZUFzc2VydGlvbih2YXJpYWJsZSk7XG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJUeXBlQXNzZXJ0aW9uIiwidmFyaWFibGUiLCJnZXRWYXJpYWJsZSIsImFzc2VydCIsInByb29mQ29udGV4dCIsImFkZFZhcmlhYmxlIiwiZnJvbVZhcmlhYmxlIiwidHlwZUFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFFcUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU4sSUFBQSxBQUFNQSw4QkFBTjthQUFNQSxjQUNQQyxRQUFROzhCQURERDtRQUVqQixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2lCQUZDRDs7WUFLbkJFLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjO2dCQUNaLE9BQU8sSUFBSSxDQUFDRCxRQUFRO1lBQ3RCOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9DLFlBQVksRUFBRTtnQkFDbkJBLGFBQWFDLFdBQVcsQ0FBQyxJQUFJLENBQUNKLFFBQVE7WUFDeEM7Ozs7WUFFT0ssS0FBQUE7bUJBQVAsU0FBT0EsYUFBYUwsUUFBUSxFQUFFO2dCQUM1QixJQUFNTSxnQkFBZ0IsSUFkTFAsY0FjdUJDO2dCQUV4QyxPQUFPTTtZQUNUOzs7V0FqQm1CUCJ9
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _node = require("../../utilities/node");
|
|
12
|
-
var equalityStatementString = "n=m";
|
|
13
|
-
var equalityStatementNode = (0, _node.statementNodeFromStatementString)(equalityStatementString);
|
|
14
|
-
var _default = equalityStatementNode;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL3N0YXRlbWVudC9lcXVhbGl0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL25vZGVcIjtcblxuY29uc3QgZXF1YWxpdHlTdGF0ZW1lbnRTdHJpbmcgPSBcIm49bVwiO1xuXG5jb25zdCBlcXVhbGl0eVN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyhlcXVhbGl0eVN0YXRlbWVudFN0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IGVxdWFsaXR5U3RhdGVtZW50Tm9kZTtcblxuIl0sIm5hbWVzIjpbImVxdWFsaXR5U3RhdGVtZW50U3RyaW5nIiwiZXF1YWxpdHlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7O29CQU5pRDtBQUVqRCxJQUFNQSwwQkFBMEI7QUFFaEMsSUFBTUMsd0JBQXdCQyxJQUFBQSxzQ0FBZ0MsRUFBQ0Y7SUFFL0QsV0FBZUMifQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { statementNodeFromStatementString } from "../../utilities/node";
|
|
4
|
-
|
|
5
|
-
const equalityStatementString = "n=m";
|
|
6
|
-
|
|
7
|
-
const equalityStatementNode = statementNodeFromStatementString(equalityStatementString);
|
|
8
|
-
|
|
9
|
-
export default equalityStatementNode;
|
|
10
|
-
|