occam-verify-cli 1.0.612 → 1.0.631
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/ephemeral.js +210 -77
- package/lib/context/file/nominal.js +157 -135
- package/lib/context/liminal.js +34 -59
- package/lib/context/scoped.js +37 -58
- package/lib/context.js +103 -53
- package/lib/element/assertion/contained.js +3 -1
- package/lib/element/assertion/defined.js +3 -1
- package/lib/element/assertion/property.js +10 -58
- package/lib/element/assertion/satisfies.js +3 -1
- package/lib/element/assertion/subproof.js +3 -1
- package/lib/element/assertion/type.js +63 -109
- package/lib/element/assertion.js +5 -9
- package/lib/element/assumption.js +50 -19
- package/lib/element/combinator.js +8 -1
- package/lib/element/conclusion.js +8 -1
- package/lib/element/constructor.js +8 -1
- package/lib/element/declaration.js +3 -7
- package/lib/element/deduction.js +8 -1
- package/lib/element/derivation.js +15 -10
- package/lib/element/equality.js +109 -62
- package/lib/element/equivalence.js +13 -6
- package/lib/element/equivalences.js +11 -4
- package/lib/element/error.js +10 -7
- package/lib/element/frame.js +21 -21
- package/lib/element/hypothesis.js +12 -7
- package/lib/element/judgement.js +55 -26
- package/lib/element/label.js +8 -1
- package/lib/element/metaType.js +9 -2
- package/lib/element/metavariable.js +16 -10
- package/lib/element/parameter.js +8 -1
- package/lib/element/procedureCall.js +21 -29
- package/lib/element/procedureReference.js +15 -1
- package/lib/element/proof.js +8 -1
- package/lib/element/proofAssertion.js +8 -1
- package/lib/element/property.js +8 -1
- package/lib/element/propertyRelation.js +8 -1
- package/lib/element/reference.js +16 -28
- package/lib/element/rule.js +22 -21
- package/lib/element/section.js +8 -1
- package/lib/element/signature.js +8 -1
- package/lib/element/statement.js +34 -40
- package/lib/element/subDerivation.js +11 -6
- package/lib/element/subproof.js +8 -1
- package/lib/element/substitution/frame.js +6 -6
- package/lib/element/substitution/reference.js +6 -6
- package/lib/element/substitution/statement.js +6 -6
- package/lib/element/substitution/term.js +9 -3
- package/lib/element/substitution.js +73 -49
- package/lib/element/term.js +15 -1
- package/lib/element/topLevelAssertion/axiom.js +8 -1
- package/lib/element/topLevelAssertion/conjecture.js +8 -1
- package/lib/element/topLevelAssertion/lemma.js +8 -1
- package/lib/element/topLevelAssertion/theorem.js +8 -1
- package/lib/element/topLevelAssertion.js +11 -17
- package/lib/element/topLevelMetaAssertion/metaLemma.js +8 -1
- package/lib/element/topLevelMetaAssertion/metatheorem.js +8 -1
- package/lib/element/topLevelMetaAssertion.js +9 -11
- package/lib/element/type.js +8 -1
- package/lib/element/typePrefix.js +8 -1
- package/lib/element/variable.js +51 -5
- package/lib/preamble.js +1 -2
- package/lib/process/assign.js +96 -27
- package/lib/process/unify.js +3 -4
- package/lib/process/validate.js +2 -2
- package/lib/process/verify.js +2 -2
- package/lib/utilities/element.js +74 -12
- package/lib/utilities/json.js +2 -2
- package/lib/utilities/string.js +9 -24
- package/lib/utilities/substitutions.js +15 -23
- package/package.json +2 -2
- package/src/context/ephemeral.js +234 -82
- package/src/context/file/nominal.js +195 -135
- package/src/context/liminal.js +43 -80
- package/src/context/scoped.js +56 -81
- package/src/context.js +97 -46
- package/src/element/assertion/contained.js +4 -0
- package/src/element/assertion/defined.js +4 -0
- package/src/element/assertion/property.js +15 -26
- package/src/element/assertion/satisfies.js +4 -0
- package/src/element/assertion/subproof.js +4 -0
- package/src/element/assertion/type.js +67 -77
- package/src/element/assertion.js +4 -8
- package/src/element/assumption.js +57 -18
- package/src/element/combinator.js +7 -0
- package/src/element/conclusion.js +7 -0
- package/src/element/constructor.js +7 -0
- package/src/element/declaration.js +1 -3
- package/src/element/deduction.js +7 -0
- package/src/element/derivation.js +10 -5
- package/src/element/equality.js +116 -74
- package/src/element/equivalence.js +15 -7
- package/src/element/equivalences.js +14 -5
- package/src/element/error.js +5 -2
- package/src/element/frame.js +25 -25
- package/src/element/hypothesis.js +11 -6
- package/src/element/judgement.js +62 -26
- package/src/element/label.js +7 -0
- package/src/element/metaType.js +8 -1
- package/src/element/metavariable.js +20 -14
- package/src/element/parameter.js +7 -0
- package/src/element/procedureCall.js +21 -14
- package/src/element/procedureReference.js +13 -0
- package/src/element/proof.js +7 -0
- package/src/element/proofAssertion.js +7 -0
- package/src/element/property.js +7 -0
- package/src/element/propertyRelation.js +7 -0
- package/src/element/reference.js +20 -33
- package/src/element/rule.js +16 -19
- package/src/element/section.js +7 -0
- package/src/element/signature.js +7 -0
- package/src/element/statement.js +36 -44
- package/src/element/subDerivation.js +10 -5
- package/src/element/subproof.js +7 -0
- package/src/element/substitution/frame.js +3 -3
- package/src/element/substitution/reference.js +3 -3
- package/src/element/substitution/statement.js +3 -3
- package/src/element/substitution/term.js +4 -2
- package/src/element/substitution.js +60 -40
- package/src/element/term.js +20 -2
- package/src/element/topLevelAssertion/axiom.js +7 -0
- package/src/element/topLevelAssertion/conjecture.js +7 -0
- package/src/element/topLevelAssertion/lemma.js +7 -0
- package/src/element/topLevelAssertion/theorem.js +7 -0
- package/src/element/topLevelAssertion.js +5 -15
- package/src/element/topLevelMetaAssertion/metaLemma.js +7 -0
- package/src/element/topLevelMetaAssertion/metatheorem.js +7 -0
- package/src/element/topLevelMetaAssertion.js +4 -6
- package/src/element/type.js +7 -0
- package/src/element/typePrefix.js +7 -0
- package/src/element/variable.js +9 -4
- package/src/preamble.js +0 -1
- package/src/process/assign.js +113 -38
- package/src/process/unify.js +2 -3
- package/src/process/validate.js +1 -1
- package/src/process/verify.js +1 -1
- package/src/utilities/element.js +83 -26
- package/src/utilities/json.js +1 -1
- package/src/utilities/string.js +7 -29
- package/src/utilities/substitutions.js +19 -30
- package/lib/element/substitutions.js +0 -225
- package/src/element/substitutions.js +0 -84
|
@@ -10,6 +10,7 @@ import NominalParser from "../../nominal/parser";
|
|
|
10
10
|
|
|
11
11
|
import { verifyFile } from "../../process/verify";
|
|
12
12
|
import { baseTypeFromNothing } from "../../utilities/type";
|
|
13
|
+
import { findMetaTypeByMetaTypeName } from "../../metaTypes";
|
|
13
14
|
import { typesFromJSON,
|
|
14
15
|
rulesFromJSON,
|
|
15
16
|
axiomsFromJSON,
|
|
@@ -94,6 +95,7 @@ export default class NominalFileContext extends FileContext {
|
|
|
94
95
|
|
|
95
96
|
getEquivalences() {
|
|
96
97
|
const { Equivalences } = elements,
|
|
98
|
+
context = this, ///
|
|
97
99
|
equivalences = Equivalences.fromNothing(context);
|
|
98
100
|
|
|
99
101
|
return equivalences;
|
|
@@ -259,93 +261,155 @@ export default class NominalFileContext extends FileContext {
|
|
|
259
261
|
|
|
260
262
|
addType(type) {
|
|
261
263
|
this.types.push(type);
|
|
264
|
+
|
|
265
|
+
const filePath = this.getFilePath(),
|
|
266
|
+
typeString = type.toString();
|
|
267
|
+
|
|
268
|
+
this.trace(`Added the '${typeString}' type to the '${filePath}' file context.`)
|
|
262
269
|
}
|
|
263
270
|
|
|
264
271
|
addRule(rule) {
|
|
265
272
|
this.rules.push(rule);
|
|
273
|
+
|
|
274
|
+
const filePath = this.getFilePath(),
|
|
275
|
+
ruleString = rule.toString();
|
|
276
|
+
|
|
277
|
+
this.trace(`Added the '${ruleString}' rule to the '${filePath}' file context.`)
|
|
266
278
|
}
|
|
267
279
|
|
|
268
280
|
addAxiom(axiom) {
|
|
269
281
|
this.axioms.push(axiom);
|
|
282
|
+
|
|
283
|
+
const filePath = this.getFilePath(),
|
|
284
|
+
axiomString = axiom.toString();
|
|
285
|
+
|
|
286
|
+
this.trace(`Added the '${axiomString}' axiom to the '${filePath}' file context.`)
|
|
270
287
|
}
|
|
271
288
|
|
|
272
289
|
addLemma(lemma) {
|
|
273
290
|
this.lemmas.push(lemma);
|
|
291
|
+
|
|
292
|
+
const filePath = this.getFilePath(),
|
|
293
|
+
lemmaString = lemma.toString();
|
|
294
|
+
|
|
295
|
+
this.trace(`Added the '${lemmaString}' lemma to the '${filePath}' file context.`)
|
|
274
296
|
}
|
|
275
297
|
|
|
276
298
|
addTheorem(theorem) {
|
|
277
299
|
this.theorems.push(theorem);
|
|
300
|
+
|
|
301
|
+
const filePath = this.getFilePath(),
|
|
302
|
+
theoremString = theorem.toString();
|
|
303
|
+
|
|
304
|
+
this.trace(`Added the '${theoremString}' theorem to the '${filePath}' file context.`)
|
|
278
305
|
}
|
|
279
306
|
|
|
280
307
|
addVariable(variable) {
|
|
281
308
|
this.variables.push(variable);
|
|
309
|
+
|
|
310
|
+
const filePath = this.getFilePath(),
|
|
311
|
+
variableString = variable.toString();
|
|
312
|
+
|
|
313
|
+
this.trace(`Added the '${variableString}' variable to the '${filePath}' file context.`)
|
|
282
314
|
}
|
|
283
315
|
|
|
284
316
|
addMetaLemma(metaLemma) {
|
|
285
317
|
this.metaLemmas.push(metaLemma);
|
|
318
|
+
|
|
319
|
+
const filePath = this.getFilePath(),
|
|
320
|
+
metaLemmaString = metaLemma.toString();
|
|
321
|
+
|
|
322
|
+
this.trace(`Added the '${metaLemmaString}' meta-lemma to the '${filePath}' file context.`)
|
|
286
323
|
}
|
|
287
324
|
|
|
288
325
|
addConjecture(conjecture) {
|
|
289
326
|
this.conjectures.push(conjecture);
|
|
327
|
+
|
|
328
|
+
const filePath = this.getFilePath(),
|
|
329
|
+
ocnjectureString = ocnjecture.toString();
|
|
330
|
+
|
|
331
|
+
this.trace(`Added the '${ocnjectureString}' ocnjecture to the '${filePath}' file context.`)
|
|
290
332
|
}
|
|
291
333
|
|
|
292
334
|
addCombinator(combinator) {
|
|
293
335
|
this.combinators.push(combinator);
|
|
336
|
+
|
|
337
|
+
const filePath = this.getFilePath(),
|
|
338
|
+
combinatorString = combinator.toString();
|
|
339
|
+
|
|
340
|
+
this.trace(`Added the '${combinatorString}' combinator to the '${filePath}' file context.`)
|
|
294
341
|
}
|
|
295
342
|
|
|
296
343
|
addTypePrefix(typePrefix) {
|
|
297
344
|
this.typePrefixes.push(typePrefix);
|
|
345
|
+
|
|
346
|
+
const filePath = this.getFilePath(),
|
|
347
|
+
typePrefixString = typePrefix.toString();
|
|
348
|
+
|
|
349
|
+
this.trace(`Added the '${typePrefixString}' type-prefix to the '${filePath}' file context.`)
|
|
298
350
|
}
|
|
299
351
|
|
|
300
352
|
addConstructor(constructor) {
|
|
301
353
|
this.constructors.push(constructor);
|
|
354
|
+
|
|
355
|
+
const filePath = this.getFilePath(),
|
|
356
|
+
constructorString = constructor.toString();
|
|
357
|
+
|
|
358
|
+
this.trace(`Added the '${constructorString}' constructor to the '${filePath}' file context.`)
|
|
302
359
|
}
|
|
303
360
|
|
|
304
361
|
addMetatheorem(metatheorem) {
|
|
305
362
|
this.metatheorems.push(metatheorem);
|
|
363
|
+
|
|
364
|
+
const filePath = this.getFilePath(),
|
|
365
|
+
metatheoremString = metatheorem.toString();
|
|
366
|
+
|
|
367
|
+
this.trace(`Added the '${metatheoremString}' metatheorem to the '${filePath}' file context.`)
|
|
306
368
|
}
|
|
307
369
|
|
|
308
370
|
addMetavariable(metavariable) {
|
|
309
371
|
this.metavariables.push(metavariable);
|
|
372
|
+
|
|
373
|
+
const filePath = this.getFilePath(),
|
|
374
|
+
metavariableString = metavariable.toString();
|
|
375
|
+
|
|
376
|
+
this.trace(`Added the '${metavariableString}' metavariable to the '${filePath}' file context.`)
|
|
310
377
|
}
|
|
311
378
|
|
|
312
|
-
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
const metavariableUnifies = label.unifyReference(reference, context);
|
|
379
|
+
findMetavariable(metavariable) {
|
|
380
|
+
const metavariables = this.getMetavariables(),
|
|
381
|
+
specificMetavariable = metavariable; ///
|
|
316
382
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
383
|
+
metavariable = metavariables.find((metavariable) => {
|
|
384
|
+
const context = this, ///
|
|
385
|
+
generalMetavariable = metavariable, ///
|
|
386
|
+
metavariableUnifies = generalMetavariable.unifyMetavariable(specificMetavariable, context);
|
|
321
387
|
|
|
322
|
-
|
|
388
|
+
if (metavariableUnifies) {
|
|
389
|
+
return true;
|
|
390
|
+
}
|
|
391
|
+
}) || null;
|
|
392
|
+
|
|
393
|
+
return metavariable;
|
|
323
394
|
}
|
|
324
395
|
|
|
325
|
-
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
const
|
|
396
|
+
findLabelByMetavariable(metavariable) {
|
|
397
|
+
const labels = this.getLabels(),
|
|
398
|
+
label = labels.find((label) => {
|
|
399
|
+
const labelMetavariableComparesToMetavariable = label.compareMetavariable(metavariable);
|
|
329
400
|
|
|
330
|
-
if (
|
|
401
|
+
if (labelMetavariableComparesToMetavariable) {
|
|
331
402
|
return true;
|
|
332
403
|
}
|
|
333
404
|
}) || null;
|
|
334
405
|
|
|
335
|
-
return
|
|
406
|
+
return label;
|
|
336
407
|
}
|
|
337
408
|
|
|
338
|
-
|
|
339
|
-
const
|
|
340
|
-
metatheorem = metatheorems.find((metatheorem) => {
|
|
341
|
-
const metatheoremComparesToReference = metatheorem.compareReference(reference);
|
|
342
|
-
|
|
343
|
-
if (metatheoremComparesToReference) {
|
|
344
|
-
return true;
|
|
345
|
-
}
|
|
346
|
-
}) || null;
|
|
409
|
+
findMetaTypeByMetaTypeName(metaTypeName) {
|
|
410
|
+
const metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
347
411
|
|
|
348
|
-
return
|
|
412
|
+
return metaType;
|
|
349
413
|
}
|
|
350
414
|
|
|
351
415
|
findRuleByReference(reference) {
|
|
@@ -404,17 +468,17 @@ export default class NominalFileContext extends FileContext {
|
|
|
404
468
|
return theorem;
|
|
405
469
|
}
|
|
406
470
|
|
|
407
|
-
|
|
408
|
-
const
|
|
409
|
-
|
|
410
|
-
const
|
|
471
|
+
findMetaLemmaByReference(reference) {
|
|
472
|
+
const metaLemmas = this.getMetaLemmas(),
|
|
473
|
+
metaLemma = metaLemmas.find((metaLemma) => {
|
|
474
|
+
const metaLemmaComparesToReference = metaLemma.compareReference(reference);
|
|
411
475
|
|
|
412
|
-
if (
|
|
476
|
+
if (metaLemmaComparesToReference) {
|
|
413
477
|
return true;
|
|
414
478
|
}
|
|
415
479
|
}) || null;
|
|
416
480
|
|
|
417
|
-
return
|
|
481
|
+
return metaLemma;
|
|
418
482
|
}
|
|
419
483
|
|
|
420
484
|
findConjectureByReference(reference) {
|
|
@@ -447,6 +511,19 @@ export default class NominalFileContext extends FileContext {
|
|
|
447
511
|
return metaLemmas;
|
|
448
512
|
}
|
|
449
513
|
|
|
514
|
+
findMetatheoremByReference(reference) {
|
|
515
|
+
const metatheorems = this.getMetatheorems(),
|
|
516
|
+
metatheorem = metatheorems.find((metatheorem) => {
|
|
517
|
+
const metatheoremComparesToReference = metatheorem.compareReference(reference);
|
|
518
|
+
|
|
519
|
+
if (metatheoremComparesToReference) {
|
|
520
|
+
return true;
|
|
521
|
+
}
|
|
522
|
+
}) || null;
|
|
523
|
+
|
|
524
|
+
return metatheorem;
|
|
525
|
+
}
|
|
526
|
+
|
|
450
527
|
findMetatheoremsByReference(reference) {
|
|
451
528
|
const metatheorems = this.getMetatheorems();
|
|
452
529
|
|
|
@@ -463,6 +540,16 @@ export default class NominalFileContext extends FileContext {
|
|
|
463
540
|
return metatheorems;
|
|
464
541
|
}
|
|
465
542
|
|
|
543
|
+
findTopLevelAssertionByReference(reference) {
|
|
544
|
+
const axiom = this.findAxiomByReference(reference),
|
|
545
|
+
lemma = this.findLemmaByReference(reference),
|
|
546
|
+
theorem = this.findTheoremByReference(reference),
|
|
547
|
+
conjecture = this.findConjectureByReference(reference),
|
|
548
|
+
topLevelAssertion = (axiom || lemma || theorem || conjecture);
|
|
549
|
+
|
|
550
|
+
return topLevelAssertion;
|
|
551
|
+
}
|
|
552
|
+
|
|
466
553
|
findTopLevelMetaAssertionByReference(reference) {
|
|
467
554
|
const metaLemma = this.findMetaLemmaByReference(reference),
|
|
468
555
|
metatheorem = this.findMetatheoremByReference(reference),
|
|
@@ -482,33 +569,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
482
569
|
return topLevelMetaAssertions;
|
|
483
570
|
}
|
|
484
571
|
|
|
485
|
-
findTopLevelAssertionByReference(reference) {
|
|
486
|
-
const axiom = this.findAxiomByReference(reference),
|
|
487
|
-
lemma = this.findLemmaByReference(reference),
|
|
488
|
-
theorem = this.findTheoremByReference(reference),
|
|
489
|
-
conjecture = this.findConjectureByReference(reference),
|
|
490
|
-
topLevelAssertion = (axiom || lemma || theorem || conjecture);
|
|
491
|
-
|
|
492
|
-
return topLevelAssertion;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
findMetavariable(metavariable) {
|
|
496
|
-
const metavariables = this.getMetavariables(),
|
|
497
|
-
specificMetavariable = metavariable; ///
|
|
498
|
-
|
|
499
|
-
metavariable = metavariables.find((metavariable) => {
|
|
500
|
-
const context = this, ///
|
|
501
|
-
generalMetavariable = metavariable, ///
|
|
502
|
-
metavariableUnifies = generalMetavariable.unifyMetavariable(specificMetavariable, context);
|
|
503
|
-
|
|
504
|
-
if (metavariableUnifies) {
|
|
505
|
-
return true;
|
|
506
|
-
}
|
|
507
|
-
}) || null;
|
|
508
|
-
|
|
509
|
-
return metavariable;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
572
|
findTypeByTypeName(typeName, includeRelease = true, includeDependencies = true) {
|
|
513
573
|
let types = this.getTypes(includeRelease, includeDependencies);
|
|
514
574
|
|
|
@@ -585,19 +645,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
585
645
|
return typePrefix;
|
|
586
646
|
}
|
|
587
647
|
|
|
588
|
-
findVariableByVariableIdentifier(variableIdentifier) {
|
|
589
|
-
const variables = this.getVariables(),
|
|
590
|
-
variable = variables.find((variable) => {
|
|
591
|
-
const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
|
|
592
|
-
|
|
593
|
-
if (variableComparesToVariableIdentifier) {
|
|
594
|
-
return true;
|
|
595
|
-
}
|
|
596
|
-
}) || null;
|
|
597
|
-
|
|
598
|
-
return variable;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
648
|
findLabelByMetavariableName(metavariableName) {
|
|
602
649
|
const labels = this.getLabels(),
|
|
603
650
|
label = labels.find((label) => {
|
|
@@ -611,30 +658,30 @@ export default class NominalFileContext extends FileContext {
|
|
|
611
658
|
return label;
|
|
612
659
|
}
|
|
613
660
|
|
|
614
|
-
|
|
615
|
-
const
|
|
616
|
-
|
|
617
|
-
const
|
|
661
|
+
findJudgementByMetavariableName(metavariableName) {
|
|
662
|
+
const judgements = this.getJudgements(),
|
|
663
|
+
judgement = judgements.find((judgement) => {
|
|
664
|
+
const judgementMetavariableComparesToMetavariable = judgement.compareMetavariableName(metavariableName);
|
|
618
665
|
|
|
619
|
-
if (
|
|
666
|
+
if (judgementMetavariableComparesToMetavariable) {
|
|
620
667
|
return true;
|
|
621
668
|
}
|
|
622
669
|
}) || null;
|
|
623
670
|
|
|
624
|
-
return
|
|
671
|
+
return judgement;
|
|
625
672
|
}
|
|
626
673
|
|
|
627
|
-
|
|
628
|
-
const
|
|
629
|
-
|
|
630
|
-
const
|
|
674
|
+
findVariableByVariableIdentifier(variableIdentifier) {
|
|
675
|
+
const variables = this.getVariables(),
|
|
676
|
+
variable = variables.find((variable) => {
|
|
677
|
+
const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
|
|
631
678
|
|
|
632
|
-
if (
|
|
679
|
+
if (variableComparesToVariableIdentifier) {
|
|
633
680
|
return true;
|
|
634
681
|
}
|
|
635
682
|
}) || null;
|
|
636
683
|
|
|
637
|
-
return
|
|
684
|
+
return variable;
|
|
638
685
|
}
|
|
639
686
|
|
|
640
687
|
findMetavariableByMetavariableName(metavariableName) {
|
|
@@ -650,6 +697,19 @@ export default class NominalFileContext extends FileContext {
|
|
|
650
697
|
return metavariable;
|
|
651
698
|
}
|
|
652
699
|
|
|
700
|
+
findProcedureByProcedureName(procedureName) {
|
|
701
|
+
const procedures = this.getProcedures(),
|
|
702
|
+
procedure = procedures.find((procedure) => {
|
|
703
|
+
const procedureComparesToProcedureName = procedure.compareProcedureName(procedureName);
|
|
704
|
+
|
|
705
|
+
if (procedureComparesToProcedureName) {
|
|
706
|
+
return true;
|
|
707
|
+
}
|
|
708
|
+
}) || null;
|
|
709
|
+
|
|
710
|
+
return procedure;
|
|
711
|
+
}
|
|
712
|
+
|
|
653
713
|
isMetavariablePresent(metavariable) {
|
|
654
714
|
metavariable = this.findMetavariable(metavariable);
|
|
655
715
|
|
|
@@ -658,6 +718,48 @@ export default class NominalFileContext extends FileContext {
|
|
|
658
718
|
return metavariablePresent;
|
|
659
719
|
}
|
|
660
720
|
|
|
721
|
+
isLabelPresentByMetavariable(metavariable) {
|
|
722
|
+
const label = this.findLabelByMetavariable(metavariable),
|
|
723
|
+
labelPresent = (label !== null);
|
|
724
|
+
|
|
725
|
+
return labelPresent;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
isLabelPresentByReference(reference) {
|
|
729
|
+
const labels = this.getLabels(),
|
|
730
|
+
labelPresent = labels.some((label) => {
|
|
731
|
+
const context = this, ///
|
|
732
|
+
labelUnifies = reference.unifyLabel(label, context);
|
|
733
|
+
|
|
734
|
+
if (labelUnifies) {
|
|
735
|
+
return true;
|
|
736
|
+
}
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
return labelPresent;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
isMetavariablePresentByReference(reference) {
|
|
743
|
+
const metavariables = this.getMetavariables(),
|
|
744
|
+
metavariablePresent = metavariables.some((metavariable) => {
|
|
745
|
+
const context = this, ///
|
|
746
|
+
metavariableUnifies = reference.unifyMetavariable(metavariable, context);
|
|
747
|
+
|
|
748
|
+
if (metavariableUnifies) {
|
|
749
|
+
return true;
|
|
750
|
+
}
|
|
751
|
+
});
|
|
752
|
+
|
|
753
|
+
return metavariablePresent;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
isTopLevelMetaAssertionPresentByReference(reference) {
|
|
757
|
+
const topLevelMetaAssertion = this.findTopLevelMetaAssertionByReference(reference),
|
|
758
|
+
topLevelMetaAssertionPresent = (topLevelMetaAssertion !== null);
|
|
759
|
+
|
|
760
|
+
return topLevelMetaAssertionPresent;
|
|
761
|
+
}
|
|
762
|
+
|
|
661
763
|
isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) {
|
|
662
764
|
const type = this.findTypeByTypeName(typeName, includeRelease, includeDependencies),
|
|
663
765
|
typePresent = (type !== null);
|
|
@@ -679,6 +781,13 @@ export default class NominalFileContext extends FileContext {
|
|
|
679
781
|
return typePresent;
|
|
680
782
|
}
|
|
681
783
|
|
|
784
|
+
isLabelPresentByMetavariableName(metavariableName) {
|
|
785
|
+
const label = this.findLabelByMetavariableName(metavariableName),
|
|
786
|
+
labelPresent = (label !== null);
|
|
787
|
+
|
|
788
|
+
return labelPresent;
|
|
789
|
+
}
|
|
790
|
+
|
|
682
791
|
isTypePrefixPresentByTypePrefixName(typePrefixName) {
|
|
683
792
|
const typePrefix = this.findTypePrefixByTypePrefixName(typePrefixName),
|
|
684
793
|
typePrefixPresent = (typePrefix !== null);
|
|
@@ -693,20 +802,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
693
802
|
return variablePresent;
|
|
694
803
|
}
|
|
695
804
|
|
|
696
|
-
isLabelPresentByMetavariableName(metavariableName) {
|
|
697
|
-
const label = this.findLabelByMetavariableName(metavariableName),
|
|
698
|
-
labelPresent = (label !== null);
|
|
699
|
-
|
|
700
|
-
return labelPresent;
|
|
701
|
-
}
|
|
702
|
-
|
|
703
|
-
isLabelPresentByMetavariable(metavariable) {
|
|
704
|
-
const label = this.findLabelByMetavariable(metavariable),
|
|
705
|
-
labelPresent = (label !== null);
|
|
706
|
-
|
|
707
|
-
return labelPresent;
|
|
708
|
-
}
|
|
709
|
-
|
|
710
805
|
isMetavariablePresentByMetavariableName(metavariableName) {
|
|
711
806
|
const metavariable = this.findMetavariableByMetavariableName(metavariableName),
|
|
712
807
|
metavariablePresent = (metavariable !== null);
|
|
@@ -714,48 +809,13 @@ export default class NominalFileContext extends FileContext {
|
|
|
714
809
|
return metavariablePresent;
|
|
715
810
|
}
|
|
716
811
|
|
|
717
|
-
|
|
718
|
-
const
|
|
719
|
-
labelPresent = labels.some((label) => {
|
|
720
|
-
const context = this, ///
|
|
721
|
-
labelUnifies = reference.unifyLabel(label, context);
|
|
722
|
-
|
|
723
|
-
if (labelUnifies) {
|
|
724
|
-
return true;
|
|
725
|
-
}
|
|
726
|
-
});
|
|
727
|
-
|
|
728
|
-
return labelPresent;
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
isProcedurePresentByName(name) {
|
|
732
|
-
const procedure = this.findProcedureByName(name),
|
|
812
|
+
isProcedurePresentByProcedureName(procedureName) {
|
|
813
|
+
const procedure = this.findProcedureByProcedureName(procedureName),
|
|
733
814
|
procedurePresent = (procedure !== null);
|
|
734
815
|
|
|
735
816
|
return procedurePresent;
|
|
736
817
|
}
|
|
737
818
|
|
|
738
|
-
isMetavariablePresentByReference(reference) {
|
|
739
|
-
const metavariables = this.getMetavariables(),
|
|
740
|
-
metavariablePresent = metavariables.some((metavariable) => {
|
|
741
|
-
const context = this, ///
|
|
742
|
-
metavariableUnifies = reference.unifyMetavariable(metavariable, context);
|
|
743
|
-
|
|
744
|
-
if (metavariableUnifies) {
|
|
745
|
-
return true;
|
|
746
|
-
}
|
|
747
|
-
});
|
|
748
|
-
|
|
749
|
-
return metavariablePresent;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
isTopLevelMetaAssertionPresentByReference(reference) {
|
|
753
|
-
const topLevelMetaAssertion = this.findTopLevelMetaAssertionByReference(reference),
|
|
754
|
-
topLevelMetaAssertionPresent = (topLevelMetaAssertion !== null);
|
|
755
|
-
|
|
756
|
-
return topLevelMetaAssertionPresent;
|
|
757
|
-
}
|
|
758
|
-
|
|
759
819
|
clear() {
|
|
760
820
|
this.types = [];
|
|
761
821
|
this.rules = [];
|
|
@@ -810,7 +870,7 @@ export default class NominalFileContext extends FileContext {
|
|
|
810
870
|
|
|
811
871
|
async verifyFile() {
|
|
812
872
|
const node = this.getNode(),
|
|
813
|
-
context = this,
|
|
873
|
+
context = this, ///
|
|
814
874
|
fileNode = node, ///
|
|
815
875
|
fileVerifies = await verifyFile(fileNode, context);
|
|
816
876
|
|