occam-verify-cli 0.0.865 → 0.0.866

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.
Files changed (85) hide show
  1. package/lib/axiomLemmaTheoremConjecture.js +7 -7
  2. package/lib/context/file.js +128 -68
  3. package/lib/context/local.js +4 -4
  4. package/lib/context/release.js +13 -1
  5. package/lib/label.js +6 -6
  6. package/lib/metaConsequent.js +88 -0
  7. package/lib/metaLemma.js +126 -0
  8. package/lib/metaLemmaMetatheorem.js +196 -0
  9. package/lib/metaSupposition.js +140 -0
  10. package/lib/metaType.js +33 -3
  11. package/lib/metaTypeNames.js +13 -4
  12. package/lib/metaTypes.js +9 -4
  13. package/lib/metatheorem.js +9 -9
  14. package/lib/mixins/context.js +30 -22
  15. package/lib/rule.js +7 -7
  16. package/lib/ruleNames.js +5 -1
  17. package/lib/step/metaproof.js +18 -4
  18. package/lib/type.js +9 -1
  19. package/lib/utilities/name.js +52 -0
  20. package/lib/utilities/query.js +1 -38
  21. package/lib/verifier/node/metastatement.js +3 -3
  22. package/lib/verifier/nodes/statementAgainstCombinator.js +4 -4
  23. package/lib/verifier/nodes/termAgainstConstructor.js +3 -3
  24. package/lib/verify/declaration/topLevel.js +11 -3
  25. package/lib/verify/givenMetavariable.js +31 -0
  26. package/lib/verify/givenType.js +2 -3
  27. package/lib/verify/label.js +3 -4
  28. package/lib/verify/metaConsequent.js +36 -0
  29. package/lib/verify/metaDerivation.js +111 -0
  30. package/lib/verify/metaLemma.js +51 -0
  31. package/lib/verify/metaSupposition.js +40 -0
  32. package/lib/verify/metaSuppositions.js +28 -0
  33. package/lib/verify/metaproof.js +34 -0
  34. package/lib/verify/metastatement/qualified.js +2 -2
  35. package/lib/verify/metatheorem.js +50 -0
  36. package/lib/verify/metavariable.js +30 -10
  37. package/lib/verify/proof.js +3 -3
  38. package/lib/verify/statement/qualified.js +28 -28
  39. package/lib/verify/termAsConstructor.js +4 -5
  40. package/lib/verify/type.js +18 -20
  41. package/lib/verify/variable.js +13 -16
  42. package/package.json +4 -4
  43. package/src/axiomLemmaTheoremConjecture.js +6 -6
  44. package/src/context/file.js +132 -61
  45. package/src/context/local.js +1 -1
  46. package/src/context/release.js +13 -0
  47. package/src/label.js +4 -6
  48. package/src/metaConsequent.js +58 -0
  49. package/src/metaLemma.js +9 -0
  50. package/src/metaLemmaMetatheorem.js +194 -0
  51. package/src/metaSupposition.js +103 -0
  52. package/src/metaType.js +23 -3
  53. package/src/metaTypeNames.js +1 -0
  54. package/src/metaTypes.js +8 -1
  55. package/src/metatheorem.js +4 -4
  56. package/src/mixins/context.js +20 -14
  57. package/src/rule.js +6 -6
  58. package/src/ruleNames.js +1 -0
  59. package/src/step/metaproof.js +20 -4
  60. package/src/type.js +10 -0
  61. package/src/utilities/name.js +50 -0
  62. package/src/utilities/query.js +0 -47
  63. package/src/verifier/node/metastatement.js +2 -1
  64. package/src/verifier/nodes/statementAgainstCombinator.js +3 -3
  65. package/src/verifier/nodes/termAgainstConstructor.js +3 -4
  66. package/src/verify/declaration/topLevel.js +14 -0
  67. package/src/verify/givenMetavariable.js +31 -0
  68. package/src/verify/givenType.js +1 -4
  69. package/src/verify/label.js +2 -5
  70. package/src/verify/metaConsequent.js +36 -0
  71. package/src/verify/metaDerivation.js +151 -0
  72. package/src/verify/metaLemma.js +67 -0
  73. package/src/verify/metaSupposition.js +44 -0
  74. package/src/verify/metaSuppositions.js +17 -0
  75. package/src/verify/metaproof.js +32 -0
  76. package/src/verify/metastatement/qualified.js +2 -3
  77. package/src/verify/metatheorem.js +62 -0
  78. package/src/verify/metavariable.js +46 -16
  79. package/src/verify/proof.js +2 -2
  80. package/src/verify/statement/qualified.js +27 -23
  81. package/src/verify/termAsConstructor.js +4 -6
  82. package/src/verify/type.js +20 -22
  83. package/src/verify/variable.js +14 -17
  84. package/lib/ruleMetatheorem.js +0 -253
  85. package/src/ruleMetatheorem.js +0 -274
@@ -5,6 +5,8 @@ import Axiom from "../axiom";
5
5
  import Lemma from "../lemma";
6
6
  import Theorem from "../theorem";
7
7
  import Variable from "../variable";
8
+ import metaTypes from "../metaTypes";
9
+ import MetaLemma from "../metaLemma";
8
10
  import Conjecture from "../conjecture";
9
11
  import Combinator from "../combinator";
10
12
  import Constructor from "../constructor";
@@ -13,16 +15,11 @@ import Metavariable from "../metavariable";
13
15
 
14
16
  import { push } from "../utilities/array";
15
17
  import { objectType } from "../type";
16
- import { statementMetaType } from "../metaType";
17
18
  import { typeFromJSONAndFileContext } from "../type";
18
19
  import { nodeAsString, nodesAsString } from "../utilities/string";
19
20
 
20
- const metaTypes = [
21
- statementMetaType
22
- ];
23
-
24
21
  export default class FileContext {
25
- constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, variables, conjectures, combinators, constructors, metatheorems, metavariables) {
22
+ constructor(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, constructors, metatheorems, metavariables) {
26
23
  this.releaseContext = releaseContext;
27
24
  this.filePath = filePath;
28
25
  this.tokens = tokens;
@@ -33,6 +30,7 @@ export default class FileContext {
33
30
  this.lemmas = lemmas;
34
31
  this.theorems = theorems;
35
32
  this.variables = variables;
33
+ this.metaLemmas = metaLemmas;
36
34
  this.conjectures = conjectures;
37
35
  this.combinators = combinators;
38
36
  this.constructors = constructors;
@@ -200,6 +198,20 @@ export default class FileContext {
200
198
  return this.variables;
201
199
  }
202
200
 
201
+ getMetaLemmas(includeRelease = true) {
202
+ const metaLemmas = [];
203
+
204
+ push(metaLemmas, this.metaLemmas);
205
+
206
+ if (includeRelease) {
207
+ const releaseContextMetaLemmas = this.releaseContext.getMetaLemmas();
208
+
209
+ push(metaLemmas, releaseContextMetaLemmas);
210
+ }
211
+
212
+ return metaLemmas;
213
+ }
214
+
203
215
  getMetaTypes(includeRelease = true) {
204
216
  return metaTypes;
205
217
  }
@@ -264,27 +276,29 @@ export default class FileContext {
264
276
  return this.metavariables;
265
277
  }
266
278
 
267
- findLabelByLabelName(labelName) {
268
- const name = labelName, ///
269
- labels = this.getLabels(),
270
- label = labels.find((label) => {
271
- const matches = label.matchName(name);
279
+ findTypeByTypeName(typeName) {
280
+ let types = this.getTypes();
272
281
 
273
- if (matches) {
274
- return true;
275
- }
276
- }) || null;
282
+ types.push(objectType);
277
283
 
278
- return label;
284
+ const type = types.find((type) => {
285
+ const matches = type.matchTypeName(typeName);
286
+
287
+ if (matches) {
288
+ return true;
289
+ }
290
+ }) || null;
291
+
292
+ return type;
279
293
  }
280
294
 
281
- findTypeByTypeName(typeName) {
295
+ findTypeByTypeNode(typeNode) {
282
296
  let types = this.getTypes();
283
297
 
284
298
  types.push(objectType);
285
299
 
286
300
  const type = types.find((type) => {
287
- const matches = type.matchTypeName(typeName);
301
+ const matches = type.matchTypeNode(typeNode);
288
302
 
289
303
  if (matches) {
290
304
  return true;
@@ -294,13 +308,27 @@ export default class FileContext {
294
308
  return type;
295
309
  }
296
310
 
297
- findRuleByReferenceName(referenceName) {
298
- const labelName = referenceName, ///
311
+ findLabelByLabelNode(labelNode) {
312
+ const name = labelNode, ///
313
+ labels = this.getLabels(),
314
+ label = labels.find((label) => {
315
+ const matches = label.matchNode(name);
316
+
317
+ if (matches) {
318
+ return true;
319
+ }
320
+ }) || null;
321
+
322
+ return label;
323
+ }
324
+
325
+ findRuleByReferenceNode(referenceNode) {
326
+ const labelNode = referenceNode, ///
299
327
  rules = this.getRules(),
300
328
  rule = rules.find((rule) => {
301
- const ruleMatchesLabelName = rule.matchLabelName(labelName);
329
+ const ruleMatchesLabelNode = rule.matchLabelNode(labelNode);
302
330
 
303
- if (ruleMatchesLabelName) {
331
+ if (ruleMatchesLabelNode) {
304
332
  return true;
305
333
  }
306
334
  }) || null;
@@ -308,13 +336,13 @@ export default class FileContext {
308
336
  return rule;
309
337
  }
310
338
 
311
- findAxiomByReferenceName(referenceName) {
312
- const labelName = referenceName, ///
339
+ findAxiomByReferenceNode(referenceNode) {
340
+ const labelNode = referenceNode, ///
313
341
  axioms = this.getAxioms(),
314
342
  axiom = axioms.find((axiom) => {
315
- const axiomMatchesLabelName = axiom.matchLabelName(labelName);
343
+ const axiomMatchesLabelNode = axiom.matchLabelNode(labelNode);
316
344
 
317
- if (axiomMatchesLabelName) {
345
+ if (axiomMatchesLabelNode) {
318
346
  return true;
319
347
  }
320
348
  }) || null;
@@ -322,13 +350,13 @@ export default class FileContext {
322
350
  return axiom;
323
351
  }
324
352
 
325
- findLemmaByReferenceName(referenceName) {
326
- const labelName = referenceName, ///
353
+ findLemmaByReferenceNode(referenceNode) {
354
+ const labelNode = referenceNode, ///
327
355
  lemmas = this.getLemmas(),
328
356
  lemma = lemmas.find((lemma) => {
329
- const lemmaMatchesLabelName = lemma.matchLabelName(labelName);
357
+ const lemmaMatchesLabelNode = lemma.matchLabelNode(labelNode);
330
358
 
331
- if (lemmaMatchesLabelName) {
359
+ if (lemmaMatchesLabelNode) {
332
360
  return true;
333
361
  }
334
362
  }) || null;
@@ -336,13 +364,13 @@ export default class FileContext {
336
364
  return lemma;
337
365
  }
338
366
 
339
- findTheoremByReferenceName(referenceName) {
340
- const labelName = referenceName, ///
367
+ findTheoremByReferenceNode(referenceNode) {
368
+ const labelNode = referenceNode, ///
341
369
  theorems = this.getTheorems(),
342
370
  theorem = theorems.find((theorem) => {
343
- const theoremMatchesLabelName = theorem.matchLabelName(labelName);
371
+ const theoremMatchesLabelNode = theorem.matchLabelNode(labelNode);
344
372
 
345
- if (theoremMatchesLabelName) {
373
+ if (theoremMatchesLabelNode) {
346
374
  return true;
347
375
  }
348
376
  }) || null;
@@ -350,6 +378,20 @@ export default class FileContext {
350
378
  return theorem;
351
379
  }
352
380
 
381
+ findMetaLemmaByReferenceNode(referenceNode) {
382
+ const labelNode = referenceNode, ///
383
+ metaLemmas = this.getMetaLemmas(),
384
+ metaLemma = metaLemmas.find((metaLemma) => {
385
+ const metaLemmaMatchesLabelNode = metaLemma.matchLabelNode(labelNode);
386
+
387
+ if (metaLemmaMatchesLabelNode) {
388
+ return true;
389
+ }
390
+ }) || null;
391
+
392
+ return metaLemma;
393
+ }
394
+
353
395
  findVariableByVariableNode(variableNode) {
354
396
  const node = variableNode, ///
355
397
  variables = this.getVariables(),
@@ -364,10 +406,10 @@ export default class FileContext {
364
406
  return variable;
365
407
  }
366
408
 
367
- findMetaTypeByMetaTypeName(metaTypeName) {
409
+ findMetaTypeByMetaTypeNode(metaTypeNode) {
368
410
  const metaTypes = this.getMetaTypes(),
369
411
  metaType = metaTypes.find((metaType) => {
370
- const matches = metaType.matchMetaTypeName(metaTypeName);
412
+ const matches = metaType.matchMetaTypeNode(metaTypeNode);
371
413
 
372
414
  if (matches) {
373
415
  return true;
@@ -377,13 +419,13 @@ export default class FileContext {
377
419
  return metaType;
378
420
  }
379
421
 
380
- findConjectureByReferenceName(referenceName) {
381
- const labelName = referenceName, ///
422
+ findConjectureByReferenceNode(referenceNode) {
423
+ const labelNode = referenceNode, ///
382
424
  conjectures = this.getConjectures(),
383
425
  conjecture = conjectures.find((conjecture) => {
384
- const conjectureMatchesLabelName = conjecture.matchLabelName(labelName);
426
+ const conjectureMatchesLabelNode = conjecture.matchLabelNode(labelNode);
385
427
 
386
- if (conjectureMatchesLabelName) {
428
+ if (conjectureMatchesLabelNode) {
387
429
  return true;
388
430
  }
389
431
  }) || null;
@@ -405,13 +447,13 @@ export default class FileContext {
405
447
  return metavariable;
406
448
  }
407
449
 
408
- findMetatheoremByReferenceName(referenceName) {
409
- const labelName = referenceName, ///
450
+ findMetatheoremByReferenceNode(referenceNode) {
451
+ const labelNode = referenceNode, ///
410
452
  metatheorems = this.getMetatheorems(),
411
453
  metatheorem = metatheorems.find((metatheorem) => {
412
- const metatheoremMatchesLabelName = metatheorem.matchLabelName(labelName);
454
+ const metatheoremMatchesLabelNode = metatheorem.matchLabelNode(labelNode);
413
455
 
414
- if (metatheoremMatchesLabelName) {
456
+ if (metatheoremMatchesLabelNode) {
415
457
  return true;
416
458
  }
417
459
  }) || null;
@@ -419,27 +461,22 @@ export default class FileContext {
419
461
  return metatheorem;
420
462
  }
421
463
 
422
- isTermGrounded(term) {
423
- const termGrounded = false; ///
424
-
425
- return termGrounded;
426
- }
427
-
428
- isVariableDefined(variable) {
429
- const variableDefined = false; ///
464
+ isTypePresentByTypeName(typeName) {
465
+ const type = this.findTypeByTypeName(typeName),
466
+ typePresent = (type !== null);
430
467
 
431
- return variableDefined;
468
+ return typePresent;
432
469
  }
433
470
 
434
- isTypePresentByTypeName(typeName) {
435
- const type = this.findTypeByTypeName(typeName),
471
+ isTypePresentByTypeNode(typeNode) {
472
+ const type = this.findTypeByTypeNode(typeNode),
436
473
  typePresent = (type !== null);
437
474
 
438
475
  return typePresent;
439
476
  }
440
477
 
441
- isLabelPresentByLabelName(labelName) {
442
- const label = this.findLabelByLabelName(labelName),
478
+ isLabelPresentByLabelNode(labelNode) {
479
+ const label = this.findLabelByLabelNode(labelNode),
443
480
  labelPresent = (label !== null);
444
481
 
445
482
  return labelPresent;
@@ -459,6 +496,18 @@ export default class FileContext {
459
496
  return metavariablePresent;
460
497
  }
461
498
 
499
+ isTermGrounded(term) {
500
+ const termGrounded = false; ///
501
+
502
+ return termGrounded;
503
+ }
504
+
505
+ isVariableDefined(variable) {
506
+ const variableDefined = false; ///
507
+
508
+ return variableDefined;
509
+ }
510
+
462
511
  matchStatement(statementNode) {
463
512
  const statementMatches = false;
464
513
 
@@ -518,6 +567,10 @@ export default class FileContext {
518
567
  return variableAdded;
519
568
  }
520
569
 
570
+ addMetaLemma(metaLemma) {
571
+ this.metaLemmas.push(metaLemma);
572
+ }
573
+
521
574
  addConjecture(conjecture) {
522
575
  this.conjectures.push(conjecture);
523
576
  }
@@ -611,6 +664,13 @@ export default class FileContext {
611
664
 
612
665
  return variable;
613
666
  }),
667
+ metaLemmas = this.metaLemmas.map((metaLemma) => {
668
+ const metaLemmaJSON = metaLemma.toJSON(this.tokens);
669
+
670
+ metaLemma = metaLemmaJSON; ///
671
+
672
+ return metaLemma;
673
+ }),
614
674
  conjectures = this.conjectures.map((conjecture) => {
615
675
  const conjectureJSON = conjecture.toJSON(this.tokens);
616
676
 
@@ -654,6 +714,7 @@ export default class FileContext {
654
714
  lemmas,
655
715
  theorems,
656
716
  variables,
717
+ metaLemmas,
657
718
  conjectures,
658
719
  combinators,
659
720
  constructors,
@@ -665,7 +726,7 @@ export default class FileContext {
665
726
  }
666
727
 
667
728
  initialise(json) {
668
- const { types, rules, axioms, lemmas, theorems, variables, conjectures, combinators, constructors, metatheorems, metavariables } = json,
729
+ const { types, rules, axioms, lemmas, theorems, metaLemmas, variables, conjectures, combinators, constructors, metatheorems, metavariables } = json,
669
730
  fileContext = this, ///
670
731
  typesJSON = types, ///
671
732
  rulesJSON = rules, ///
@@ -673,10 +734,11 @@ export default class FileContext {
673
734
  lemmasJSON = lemmas, ///
674
735
  theoremsJSON = theorems, ///
675
736
  variablesJSON = variables, ///
737
+ metaLemmasJSON = metaLemmas || [], ///
676
738
  conjecturesJSON = conjectures, ///
677
739
  combinatorsJSON = combinators, ///
678
740
  constructorsJSON = constructors, ///
679
- metatheoremsJSON = metatheorems, ///
741
+ metatheoremsJSON = metatheorems || [], ///
680
742
  metavariablesJSON = metavariables; ///
681
743
 
682
744
  typesJSON.forEach((typeJSON) => {
@@ -721,6 +783,13 @@ export default class FileContext {
721
783
  this.variables.push(variable);
722
784
  });
723
785
 
786
+ metaLemmasJSON.forEach((metaLemmaJSON) => {
787
+ const json = metaLemmaJSON, ///
788
+ metaLemma = MetaLemma.fromJSONAndFileContext(json, fileContext);
789
+
790
+ this.metaLemmas.push(metaLemma);
791
+ });
792
+
724
793
  conjecturesJSON.forEach((conjectureJSON) => {
725
794
  const json = conjectureJSON, ///
726
795
  conjecture = Conjecture.fromJSONAndFileContext(json, fileContext);
@@ -767,12 +836,13 @@ export default class FileContext {
767
836
  lemmas = [],
768
837
  theorems = [],
769
838
  variables = [],
839
+ metaLemmas = [],
770
840
  conjectures = [],
771
841
  combinators = [],
772
842
  constructors = [],
773
843
  metatheorems = [],
774
844
  metavariables = [],
775
- fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, variables, theorems, conjectures, combinators, constructors, metatheorems, metavariables);
845
+ fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, metaLemmas, variables, theorems, conjectures, combinators, constructors, metatheorems, metavariables);
776
846
 
777
847
  fileContext.initialise(json);
778
848
 
@@ -790,12 +860,13 @@ export default class FileContext {
790
860
  lemmas = [],
791
861
  theorems = [],
792
862
  variables = [],
863
+ metaLemmas = [],
793
864
  conjectures = [],
794
865
  combinators = [],
795
866
  constructors = [],
796
867
  metatheorems = [],
797
868
  metavariables = [],
798
- fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, variables, theorems, conjectures, combinators, constructors, metatheorems, metavariables);
869
+ fileContext = new FileContext(releaseContext, filePath, tokens, node, types, rules, axioms, lemmas, variables, metaLemmas, theorems, conjectures, combinators, constructors, metatheorems, metavariables);
799
870
 
800
871
  return fileContext;
801
872
  }
@@ -253,7 +253,7 @@ class LocalContext {
253
253
  return variable;
254
254
  }
255
255
 
256
- findMetaTypeByMetaTypeName(metaTypeName) { return this.context.findMetaTypeByMetaTypeName(metaTypeName); }
256
+ findMetaTypeByMetaTypeNode(metaTypeNode) { return this.context.findMetaTypeByMetaTypeNode(metaTypeNode); }
257
257
 
258
258
  isVariablePresentByVariableNode(variableNode) {
259
259
  const variable = this.findVariableByVariableNode(variableNode),
@@ -198,6 +198,19 @@ export default class ReleaseContext {
198
198
  return theorems;
199
199
  }
200
200
 
201
+ getMetaLemmas(includeDependencies = true) {
202
+ const metaLemmas = [];
203
+
204
+ this.fileContexts.forEach((fileContext) => {
205
+ const includeRelease = false,
206
+ fileContextMetaLemmas = fileContext.getMetaLemmas(includeRelease);
207
+
208
+ push(metaLemmas, fileContextMetaLemmas);
209
+ });
210
+
211
+ return metaLemmas;
212
+ }
213
+
201
214
  getConjectures(includeDependencies = true) {
202
215
  const conjectures = [];
203
216
 
package/src/label.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { nodeAsString } from "./utilities/string";
4
- import { labelNameFromLabelNode } from "./utilities/query";
4
+ import { labelNameFromLabelNode } from "./utilities/name";
5
5
  import { labelNodeFromLabelString } from "./utilities/node";
6
6
 
7
7
  export default class Label {
@@ -13,12 +13,10 @@ export default class Label {
13
13
  return this.node;
14
14
  }
15
15
 
16
- matchName(name) {
17
- const labelNode = this.node,
18
- labelName = labelNameFromLabelNode(labelNode),
19
- matchesName = (labelName === name);
16
+ matchNode(node) {
17
+ const matches = this.node.match(node);
20
18
 
21
- return matchesName;
19
+ return matches;
22
20
  }
23
21
 
24
22
  asString(tokens) {
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
4
+
5
+ import { nodeAsString } from "./utilities/string";
6
+ import { metastatementNodeFromMetastatementString } from "./utilities/node";
7
+
8
+ export default class MetaConsequent {
9
+ constructor(metastatementNode) {
10
+ this.metastatementNode = metastatementNode;
11
+ }
12
+
13
+ getMetastatementNode() {
14
+ return this.metastatementNode;
15
+ }
16
+
17
+ matchMetastatementNode(metastatementNode, substitutions, localContext, metastatementLocalContext) {
18
+ const nonTerminalNodeA = this.metastatementNode, ///
19
+ nonTerminalNodeB = metastatementNode, ///
20
+ localContextA = localContext, ///
21
+ localContextB = metastatementLocalContext, ///
22
+ nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
23
+ const verifiedAhead = true;
24
+
25
+ return verifiedAhead;
26
+ }),
27
+ metastatementNodeMatches = nonTerminalNodeVerified; ///
28
+
29
+ return metastatementNodeMatches;
30
+ }
31
+
32
+ toJSON(tokens) {
33
+ const metastatementString = nodeAsString(this.metastatementNode, tokens),
34
+ metastatement = metastatementString, ///
35
+ json = {
36
+ metastatement
37
+ };
38
+
39
+ return json;
40
+ }
41
+
42
+ static fromMetastatementNode(metastatementNode) {
43
+ const metaConsequent = new MetaConsequent(metastatementNode);
44
+
45
+ return metaConsequent;
46
+ }
47
+
48
+ static fromJSONAndFileContext(json, fileContext) {
49
+ const { metastatement } = json,
50
+ metastatementString = metastatement, ///
51
+ lexer = fileContext.getLexer(),
52
+ parser = fileContext.getParser(),
53
+ metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
54
+ metaConsequent = new MetaConsequent(metastatementNode);
55
+
56
+ return metaConsequent;
57
+ }
58
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import MetalemmaMetatheorem from "./metalemmaMetatheorem";
4
+
5
+ export default class MetaLemma extends MetalemmaMetatheorem {
6
+ static fromJSONAndFileContext(json, fileContext) { return MetalemmaMetatheorem.fromJSONAndFileContext(MetaLemma, json, fileContext); }
7
+
8
+ static fromLabelsMetaSuppositionsMetaConsequentAndLocalMetaContext(labels, suppositions, consequent, localMetaContext) { return MetalemmaMetatheorem.fromLabelsMetaSuppositionsMetaConsequentAndLocalMetaContext(MetaLemma, labels, suppositions, consequent, localMetaContext); }
9
+ }