occam-nominal 1.0.310 → 1.0.317
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/context/liminal.js +17 -15
- package/lib/context/phaneric.js +3 -3
- package/lib/context.js +3 -3
- package/lib/element/assertion/contained.js +19 -17
- package/lib/element/assertion/defined.js +16 -14
- package/lib/element/conclusion.js +10 -11
- package/lib/element/declaration/variable.js +2 -2
- package/lib/element/deduction.js +7 -7
- package/lib/element/equality.js +3 -3
- package/lib/element/frame.js +8 -3
- package/lib/element/goal.js +7 -8
- package/lib/element/judgement.js +8 -10
- package/lib/element/metavariable.js +44 -40
- package/lib/element/proof.js +2 -2
- package/lib/element/proofAssertion/premise.js +17 -21
- package/lib/element/proofAssertion/step.js +5 -5
- package/lib/element/proofAssertion/supposition.js +39 -35
- package/lib/element/rule.js +24 -22
- package/lib/element/statement.js +56 -32
- package/lib/element/substitution/frame.js +71 -62
- package/lib/element/substitution/reference.js +21 -21
- package/lib/element/substitution/statement.js +81 -98
- package/lib/element/substitution/term.js +76 -67
- package/lib/element/substitution.js +5 -5
- package/lib/element/term.js +2 -2
- package/lib/element/topLevelAssertion/axiom.js +4 -5
- package/lib/element/topLevelAssertion/conjecture.js +3 -3
- package/lib/element/topLevelAssertion/lemma.js +3 -3
- package/lib/element/topLevelAssertion/theorem.js +3 -3
- package/lib/element/topLevelAssertion.js +59 -69
- package/lib/node/metavariable.js +18 -1
- package/lib/process/unify.js +5 -7
- package/lib/process/validation.js +5 -2
- package/lib/utilities/element.js +34 -56
- package/package.json +2 -2
- package/src/context/liminal.js +18 -16
- package/src/context/phaneric.js +3 -3
- package/src/context.js +2 -2
- package/src/element/assertion/contained.js +19 -18
- package/src/element/assertion/defined.js +16 -16
- package/src/element/conclusion.js +9 -11
- package/src/element/declaration/variable.js +1 -1
- package/src/element/deduction.js +6 -6
- package/src/element/equality.js +2 -2
- package/src/element/frame.js +10 -2
- package/src/element/goal.js +6 -8
- package/src/element/judgement.js +7 -11
- package/src/element/metavariable.js +56 -52
- package/src/element/proof.js +1 -1
- package/src/element/proofAssertion/premise.js +17 -25
- package/src/element/proofAssertion/step.js +4 -4
- package/src/element/proofAssertion/supposition.js +44 -43
- package/src/element/rule.js +27 -25
- package/src/element/statement.js +71 -41
- package/src/element/substitution/frame.js +88 -82
- package/src/element/substitution/reference.js +30 -32
- package/src/element/substitution/statement.js +97 -132
- package/src/element/substitution/term.js +95 -89
- package/src/element/substitution.js +6 -6
- package/src/element/term.js +1 -1
- package/src/element/topLevelAssertion/axiom.js +3 -5
- package/src/element/topLevelAssertion/conjecture.js +2 -2
- package/src/element/topLevelAssertion/lemma.js +2 -2
- package/src/element/topLevelAssertion/theorem.js +2 -2
- package/src/element/topLevelAssertion.js +61 -80
- package/src/node/metavariable.js +28 -1
- package/src/process/unify.js +7 -16
- package/src/process/validation.js +5 -4
- package/src/utilities/element.js +49 -64
|
@@ -10,7 +10,7 @@ import { stripBracketsFromTerm } from "../../utilities/brackets";
|
|
|
10
10
|
import { instantiateTermSubstitution } from "../../process/instantiate";
|
|
11
11
|
import { termSubstitutionFromTermSubstitutionNode } from "../../utilities/element";
|
|
12
12
|
import { termSubstitutionStringFromTermAndVariable } from "../../utilities/string";
|
|
13
|
-
import { elide, ablates, manifest, attempts, reconcile, instantiate, unserialises } from "../../utilities/context";
|
|
13
|
+
import { elide, ablate, ablates, descend, manifest, attempts, reconcile, instantiate, unserialises } from "../../utilities/context";
|
|
14
14
|
|
|
15
15
|
const { breakPointFromJSON } = breakPointUtilities;
|
|
16
16
|
|
|
@@ -62,6 +62,13 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
62
62
|
|
|
63
63
|
matchVariableNode(variableNode) { return this.targetTerm.matchVariableNode(variableNode); }
|
|
64
64
|
|
|
65
|
+
compareParameter(parameter) {
|
|
66
|
+
const targetTermComparesToParameter = this.targetTerm.compareParameter(parameter),
|
|
67
|
+
comparesToParameter = targetTermComparesToParameter; ///
|
|
68
|
+
|
|
69
|
+
return comparesToParameter;
|
|
70
|
+
}
|
|
71
|
+
|
|
65
72
|
compareTerm(term, context) {
|
|
66
73
|
term = stripBracketsFromTerm(term, context); ///
|
|
67
74
|
|
|
@@ -71,13 +78,6 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
71
78
|
return comparedToTerm;
|
|
72
79
|
}
|
|
73
80
|
|
|
74
|
-
compareParameter(parameter) {
|
|
75
|
-
const targetTermComparesToParameter = this.targetTerm.compareParameter(parameter),
|
|
76
|
-
comparesToParameter = targetTermComparesToParameter; ///
|
|
77
|
-
|
|
78
|
-
return comparesToParameter;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
81
|
validate(context, continuatino) {
|
|
82
82
|
const termSubstitutionString = this.getString(); ///
|
|
83
83
|
|
|
@@ -90,9 +90,7 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
90
90
|
|
|
91
91
|
context.debug(`...the '${termSubstitutionString}' term substitution is already valid.`);
|
|
92
92
|
|
|
93
|
-
continuatino(termSubstitution);
|
|
94
|
-
|
|
95
|
-
return;
|
|
93
|
+
return continuatino(termSubstitution);
|
|
96
94
|
}
|
|
97
95
|
|
|
98
96
|
const generalContext = this.getGeneralContext(),
|
|
@@ -102,7 +100,7 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
102
100
|
const validateTargetTerm = this.validateTargetTerm.bind(this),
|
|
103
101
|
validateReplacementTerm = this.validateReplacementTerm.bind(this);
|
|
104
102
|
|
|
105
|
-
all([
|
|
103
|
+
return all([
|
|
106
104
|
validateTargetTerm,
|
|
107
105
|
validateReplacementTerm
|
|
108
106
|
], generalContext, specificContext, (validates) => {
|
|
@@ -124,7 +122,7 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
124
122
|
context.debug(`...validated the '${termSubstitutionString}' term substitution.`);
|
|
125
123
|
}
|
|
126
124
|
|
|
127
|
-
continuatino(termSubstitution);
|
|
125
|
+
return continuatino(termSubstitution);
|
|
128
126
|
});
|
|
129
127
|
}, generalContext, specificContext);
|
|
130
128
|
}
|
|
@@ -143,28 +141,24 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
143
141
|
|
|
144
142
|
context.debug(`The '${targetTermString}' target term is not singular.`);
|
|
145
143
|
|
|
146
|
-
continuatino(targetTermValidates);
|
|
147
|
-
|
|
148
|
-
return;
|
|
144
|
+
return continuatino(targetTermValidates);
|
|
149
145
|
}
|
|
150
146
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
let targetTermValidates = false;
|
|
147
|
+
elide((context) => {
|
|
148
|
+
return this.targetTerm.validate(context, (targetTerm) => {
|
|
149
|
+
let targetTermValidates = false;
|
|
155
150
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
151
|
+
if (targetTerm !== null) {
|
|
152
|
+
targetTermValidates = true;
|
|
153
|
+
}
|
|
159
154
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
155
|
+
if (targetTermValidates) {
|
|
156
|
+
context.debug(`...validated the '${termSubstitutionString}' term substitution's target term...`);
|
|
157
|
+
}
|
|
163
158
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}, specificContext, context);
|
|
159
|
+
return continuatino(targetTermValidates);
|
|
160
|
+
});
|
|
161
|
+
}, context);
|
|
168
162
|
}
|
|
169
163
|
|
|
170
164
|
validateReplacementTerm(generalContext, specificContext, continuatino) {
|
|
@@ -174,7 +168,7 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
174
168
|
context.trace(`Validating the '${termSubstitutionString}' term substitution's replacement term...`);
|
|
175
169
|
|
|
176
170
|
elide((context) => {
|
|
177
|
-
this.replacementTerm.validate(context, (replacementTerm) => {
|
|
171
|
+
return this.replacementTerm.validate(context, (replacementTerm) => {
|
|
178
172
|
let replacementTermValidates = false;
|
|
179
173
|
|
|
180
174
|
if (replacementTerm !== null) {
|
|
@@ -185,14 +179,12 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
185
179
|
context.debug(`...validated the '${termSubstitutionString}' term substitution's replacement term.`);
|
|
186
180
|
}
|
|
187
181
|
|
|
188
|
-
continuatino(replacementTermValidates);
|
|
182
|
+
return continuatino(replacementTermValidates);
|
|
189
183
|
});
|
|
190
184
|
}, context);
|
|
191
185
|
}
|
|
192
186
|
|
|
193
|
-
unifySubstitution(substitution, context) {
|
|
194
|
-
let substitutionUnifies = false;
|
|
195
|
-
|
|
187
|
+
unifySubstitution(substitution, context, continuation) {
|
|
196
188
|
const generalSubstitution = this, ///
|
|
197
189
|
specificSubstitution = substitution,
|
|
198
190
|
generalSubstitutionString = generalSubstitution.getString(),
|
|
@@ -201,29 +193,27 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
201
193
|
context.trace(`Unifying the '${specificSubstitutionString}' substitution with the '${generalSubstitutionString}' substitution...`);
|
|
202
194
|
|
|
203
195
|
reconcile((context) => {
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
196
|
+
const unifyTargetTerm = this.unifyTargetTerm.bind(this),
|
|
197
|
+
unifyReplacementTerm = this.unifyReplacementTerm.bind(this);
|
|
198
|
+
|
|
199
|
+
return all([
|
|
200
|
+
unifyReplacementTerm,
|
|
201
|
+
unifyTargetTerm
|
|
202
|
+
], substitution, context, (substitutionUnifies) => {
|
|
203
|
+
if (substitutionUnifies) {
|
|
210
204
|
context.commit();
|
|
211
|
-
|
|
212
|
-
substitutionUnifies = true;
|
|
213
205
|
}
|
|
214
|
-
}
|
|
215
|
-
}, context);
|
|
216
206
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
207
|
+
if (substitutionUnifies) {
|
|
208
|
+
context.debug(`...unified the '${specificSubstitutionString}' substitution with the '${generalSubstitutionString}' substitution.`);
|
|
209
|
+
}
|
|
220
210
|
|
|
221
|
-
|
|
211
|
+
return continuation(substitutionUnifies);
|
|
212
|
+
});
|
|
213
|
+
}, context);
|
|
222
214
|
}
|
|
223
215
|
|
|
224
|
-
unifyTargetTerm(substitution, context) {
|
|
225
|
-
let targetTermUnifies = false;
|
|
226
|
-
|
|
216
|
+
unifyTargetTerm(substitution, context, continuation) {
|
|
227
217
|
const generalSubstitution = this, ///
|
|
228
218
|
specificSubstitution = substitution,
|
|
229
219
|
generalSubstitutionString = generalSubstitution.getString(),
|
|
@@ -241,31 +231,36 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
241
231
|
specificTerm = specificSubstitutionTargetTerm; ///
|
|
242
232
|
|
|
243
233
|
reconcile((specificContext) => {
|
|
244
|
-
const termNode = generalTerm.
|
|
234
|
+
const termNode = generalTerm.getTermNode(),
|
|
245
235
|
variable = variableFromTermNode(termNode, generalContext);
|
|
246
236
|
|
|
247
|
-
if (variable
|
|
248
|
-
const
|
|
249
|
-
|
|
237
|
+
if (variable === null) {
|
|
238
|
+
const targetTermUnifies = false;
|
|
239
|
+
|
|
240
|
+
return continuation(targetTermUnifies);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const term = specificTerm; ///
|
|
244
|
+
|
|
245
|
+
return variable.unifyTerm(term, generalContext, specificContext, (termUnifies) => {
|
|
246
|
+
let targetTermUnifies = false;
|
|
250
247
|
|
|
251
248
|
if (termUnifies) {
|
|
252
249
|
specificContext.commit(context);
|
|
253
250
|
|
|
254
251
|
targetTermUnifies = true;
|
|
255
252
|
}
|
|
256
|
-
}
|
|
257
|
-
}, specificContext);
|
|
258
253
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
254
|
+
if (targetTermUnifies) {
|
|
255
|
+
context.trace(`...unified the '${specificSubstitutionString}' substitution's target term with the '${generalSubstitutionString}' substitution's target term.`);
|
|
256
|
+
}
|
|
262
257
|
|
|
263
|
-
|
|
258
|
+
return continuation(targetTermUnifies);
|
|
259
|
+
});
|
|
260
|
+
}, specificContext);
|
|
264
261
|
}
|
|
265
262
|
|
|
266
|
-
unifyReplacementTerm(substitution, context) {
|
|
267
|
-
let replacementTermUnifies = false;
|
|
268
|
-
|
|
263
|
+
unifyReplacementTerm(substitution, context, continuation) {
|
|
269
264
|
const generalSubstitution = this, ///
|
|
270
265
|
specificSubstitution = substitution,
|
|
271
266
|
generalSubstitutionString = generalSubstitution.getString(),
|
|
@@ -286,23 +281,30 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
286
281
|
const termNode = generalTerm.getNode(),
|
|
287
282
|
variable = variableFromTermNode(termNode, generalContext);
|
|
288
283
|
|
|
289
|
-
if (variable
|
|
290
|
-
const
|
|
291
|
-
|
|
284
|
+
if (variable === null) {
|
|
285
|
+
const replacementTermUnifies = false;
|
|
286
|
+
|
|
287
|
+
return continuation(replacementTermUnifies);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const term = specificTerm; ///
|
|
291
|
+
|
|
292
|
+
return variable.unifyTerm(term, generalContext, specificContext, (termUnifies) => {
|
|
293
|
+
let replacementTermUnifies = false;
|
|
292
294
|
|
|
293
295
|
if (termUnifies) {
|
|
294
296
|
specificContext.commit(context);
|
|
295
297
|
|
|
296
298
|
replacementTermUnifies = true;
|
|
297
299
|
}
|
|
298
|
-
}
|
|
299
|
-
}, specificContext);
|
|
300
300
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
301
|
+
if (replacementTermUnifies) {
|
|
302
|
+
context.trace(`...unified the '${specificSubstitutionString}' substitution's replacement term with the '${generalSubstitutionString}' substitution's replacement term.`);
|
|
303
|
+
}
|
|
304
304
|
|
|
305
|
-
|
|
305
|
+
return continuation(replacementTermUnifies);
|
|
306
|
+
});
|
|
307
|
+
}, specificContext);
|
|
306
308
|
}
|
|
307
309
|
|
|
308
310
|
static name = "TermSubstitution";
|
|
@@ -334,16 +336,20 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
334
336
|
return termSubstitutionn;
|
|
335
337
|
}
|
|
336
338
|
|
|
337
|
-
static
|
|
339
|
+
static fromStatementNode(statementNode, context) {
|
|
338
340
|
let termSubstitution = null;
|
|
339
341
|
|
|
340
|
-
const termSubstitutionNode =
|
|
342
|
+
const termSubstitutionNode = statementNode.getTermSubstitutionNode();
|
|
341
343
|
|
|
342
344
|
if (termSubstitutionNode !== null) {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
+
ablate((context) => {
|
|
346
|
+
descend((context) => {
|
|
347
|
+
const generalContext = context, ///
|
|
348
|
+
specificContext = context; ///
|
|
345
349
|
|
|
346
|
-
|
|
350
|
+
termSubstitution = termSubstitutionFromTermSubstitutionNode(termSubstitutionNode, generalContext, specificContext);
|
|
351
|
+
}, context);
|
|
352
|
+
}, context);
|
|
347
353
|
}
|
|
348
354
|
|
|
349
355
|
return termSubstitution;
|
|
@@ -357,16 +363,16 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
357
363
|
let termSubstitution;
|
|
358
364
|
|
|
359
365
|
ablates((generalContext, specificContext) => {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
},
|
|
366
|
+
instantiate((specificContext) => {
|
|
367
|
+
manifest((generalContext) => {
|
|
368
|
+
const termSubstitutionString = termSubstitutionStringFromTermAndVariable(term, variable),
|
|
369
|
+
string = termSubstitutionString, ///
|
|
370
|
+
context = specificContext, ///
|
|
371
|
+
termSubstitutionNode = instantiateTermSubstitution(string, context);
|
|
372
|
+
|
|
373
|
+
termSubstitution = termSubstitutionFromTermSubstitutionNode(termSubstitutionNode, generalContext, specificContext);
|
|
374
|
+
}, generalContext, specificContext);
|
|
375
|
+
}, specificContext);
|
|
370
376
|
}, generalContext, specificContext);
|
|
371
377
|
|
|
372
378
|
return termSubstitution;
|
|
@@ -113,6 +113,12 @@ export default class Substitution extends Element {
|
|
|
113
113
|
return equalTo;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
isSimple() {
|
|
117
|
+
const simple = true;
|
|
118
|
+
|
|
119
|
+
return simple;
|
|
120
|
+
}
|
|
121
|
+
|
|
116
122
|
isComplex() {
|
|
117
123
|
const simple = this.isSimple(),
|
|
118
124
|
complex = !simple;
|
|
@@ -181,12 +187,6 @@ export default class Substitution extends Element {
|
|
|
181
187
|
return replacementReference;
|
|
182
188
|
}
|
|
183
189
|
|
|
184
|
-
isSimple() {
|
|
185
|
-
const simple = true;
|
|
186
|
-
|
|
187
|
-
return simple;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
190
|
matchVariableNode(variableNode) {
|
|
191
191
|
const variableNodeMatches = false;
|
|
192
192
|
|
package/src/element/term.js
CHANGED
|
@@ -199,7 +199,7 @@ export default define(class Term extends Element {
|
|
|
199
199
|
|
|
200
200
|
let term = this;
|
|
201
201
|
|
|
202
|
-
exists(validateTerms, term, context, (termValidates) => {
|
|
202
|
+
return exists(validateTerms, term, context, (termValidates) => {
|
|
203
203
|
if (termValidates) {
|
|
204
204
|
context.addTerm(term);
|
|
205
205
|
|
|
@@ -35,12 +35,10 @@ export default define(class Axiom extends TopLevelAssertion {
|
|
|
35
35
|
if (signatureVerifies) {
|
|
36
36
|
const verifies = false;
|
|
37
37
|
|
|
38
|
-
continuation(verifies);
|
|
39
|
-
|
|
40
|
-
return;
|
|
38
|
+
return continuation(verifies);
|
|
41
39
|
}
|
|
42
40
|
|
|
43
|
-
this.verifyEx(context, (verifies) => {
|
|
41
|
+
return this.verifyEx(context, (verifies) => {
|
|
44
42
|
if (verifies) {
|
|
45
43
|
const axiom = this; ///
|
|
46
44
|
|
|
@@ -49,7 +47,7 @@ export default define(class Axiom extends TopLevelAssertion {
|
|
|
49
47
|
context.debug(`...verified the '${axiomString}' axiom.`);
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
continuation(verifies);
|
|
50
|
+
return continuation(verifies);
|
|
53
51
|
});
|
|
54
52
|
});
|
|
55
53
|
|
|
@@ -21,7 +21,7 @@ export default define(class Conjecture extends TopLevelAssertion {
|
|
|
21
21
|
|
|
22
22
|
context.trace(`Verifying the '${conjectureString}' conjecture...`);
|
|
23
23
|
|
|
24
|
-
this.verifyEx(context, (verifies) => {
|
|
24
|
+
return this.verifyEx(context, (verifies) => {
|
|
25
25
|
if (verifies) {
|
|
26
26
|
const conjecture = this; ///
|
|
27
27
|
|
|
@@ -30,7 +30,7 @@ export default define(class Conjecture extends TopLevelAssertion {
|
|
|
30
30
|
context.debug(`...verified the '${conjectureString}' conjecture.`);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
continuation(verifies);
|
|
33
|
+
return continuation(verifies);
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
36
|
|
|
@@ -23,7 +23,7 @@ export default define(class Lemma extends TopLevelAssertion {
|
|
|
23
23
|
context.trace(`Verifying a lemma...`) :
|
|
24
24
|
context.trace(`Verifying the '${lemmaString}' lemma...`);
|
|
25
25
|
|
|
26
|
-
this.verifyEx(context, (verifies) => {
|
|
26
|
+
return this.verifyEx(context, (verifies) => {
|
|
27
27
|
if (verifies) {
|
|
28
28
|
const lemma = this; ///
|
|
29
29
|
|
|
@@ -34,7 +34,7 @@ export default define(class Lemma extends TopLevelAssertion {
|
|
|
34
34
|
context.debug(`...verified the '${lemmaString}' lemma.`);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
continuation(verifies);
|
|
37
|
+
return continuation(verifies);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
40
|
|
|
@@ -21,7 +21,7 @@ export default define(class Theorem extends TopLevelAssertion {
|
|
|
21
21
|
|
|
22
22
|
context.trace(`Verifying the '${theoremString}' theorem...`);
|
|
23
23
|
|
|
24
|
-
this.verifyEx(context, (verifies) => {
|
|
24
|
+
return this.verifyEx(context, (verifies) => {
|
|
25
25
|
if (verifies) {
|
|
26
26
|
const theorem = this; ///
|
|
27
27
|
|
|
@@ -30,7 +30,7 @@ export default define(class Theorem extends TopLevelAssertion {
|
|
|
30
30
|
context.debug(`...verified the '${theoremString}' theorem.`);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
continuation(verifies);
|
|
33
|
+
return continuation(verifies);
|
|
34
34
|
});
|
|
35
35
|
});
|
|
36
36
|
|