occam-verify-cli 1.0.800 → 1.0.806

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 (73) hide show
  1. package/lib/context/branching.js +2 -2
  2. package/lib/context/ephemeral.js +186 -69
  3. package/lib/context/file/nominal.js +87 -52
  4. package/lib/context/liminal.js +2 -2
  5. package/lib/context/proof.js +55 -55
  6. package/lib/context/synthetic.js +151 -74
  7. package/lib/context.js +57 -17
  8. package/lib/element/assertion/defined.js +3 -3
  9. package/lib/element/assumption/metaLevel.js +6 -4
  10. package/lib/element/combinator.js +4 -2
  11. package/lib/element/conclusion.js +4 -2
  12. package/lib/element/constructor.js +4 -2
  13. package/lib/element/declaration/metavariable.js +10 -9
  14. package/lib/element/declaration/variable.js +7 -7
  15. package/lib/element/deduction.js +4 -2
  16. package/lib/element/label.js +9 -5
  17. package/lib/element/metavariable.js +34 -34
  18. package/lib/element/proofAssertion/premise.js +4 -3
  19. package/lib/element/proofAssertion/step.js +4 -2
  20. package/lib/element/reference.js +6 -4
  21. package/lib/element/statement.js +9 -1
  22. package/lib/element/substitution/frame.js +43 -29
  23. package/lib/element/substitution/reference.js +38 -28
  24. package/lib/element/substitution/statement.js +46 -38
  25. package/lib/element/substitution/term.js +49 -35
  26. package/lib/element/variable.js +6 -7
  27. package/lib/preamble.js +1 -2
  28. package/lib/process/assign.js +11 -10
  29. package/lib/process/equate.js +3 -2
  30. package/lib/process/unify.js +7 -7
  31. package/lib/utilities/context.js +13 -5
  32. package/lib/utilities/element.js +1 -1
  33. package/lib/utilities/equivalences.js +131 -0
  34. package/lib/utilities/json.js +59 -1
  35. package/lib/utilities/validation.js +4 -3
  36. package/package.json +2 -2
  37. package/src/context/branching.js +2 -2
  38. package/src/context/ephemeral.js +421 -237
  39. package/src/context/file/nominal.js +127 -77
  40. package/src/context/liminal.js +2 -2
  41. package/src/context/proof.js +81 -82
  42. package/src/context/synthetic.js +198 -88
  43. package/src/context.js +81 -20
  44. package/src/element/assertion/defined.js +4 -4
  45. package/src/element/assumption/metaLevel.js +8 -6
  46. package/src/element/combinator.js +4 -2
  47. package/src/element/conclusion.js +4 -2
  48. package/src/element/constructor.js +4 -2
  49. package/src/element/declaration/metavariable.js +10 -8
  50. package/src/element/declaration/variable.js +8 -7
  51. package/src/element/deduction.js +4 -2
  52. package/src/element/label.js +11 -7
  53. package/src/element/metavariable.js +11 -11
  54. package/src/element/proofAssertion/premise.js +4 -4
  55. package/src/element/proofAssertion/step.js +4 -2
  56. package/src/element/reference.js +7 -5
  57. package/src/element/statement.js +14 -0
  58. package/src/element/substitution/frame.js +47 -32
  59. package/src/element/substitution/reference.js +44 -34
  60. package/src/element/substitution/statement.js +63 -54
  61. package/src/element/substitution/term.js +53 -38
  62. package/src/element/variable.js +6 -7
  63. package/src/preamble.js +0 -1
  64. package/src/process/assign.js +17 -14
  65. package/src/process/equate.js +3 -1
  66. package/src/process/unify.js +10 -13
  67. package/src/utilities/context.js +13 -6
  68. package/src/utilities/element.js +1 -0
  69. package/src/utilities/equivalences.js +158 -0
  70. package/src/utilities/json.js +66 -0
  71. package/src/utilities/validation.js +6 -5
  72. package/lib/element/equivalences.js +0 -173
  73. package/src/element/equivalences.js +0 -237
@@ -4,7 +4,6 @@ import { FileContext } from "occam-languages";
4
4
  import { arrayUtilities } from "necessary";
5
5
  import { lexersUtilities, parsersUtilities } from "occam-nominal";
6
6
 
7
- import elements from "../../elements";
8
7
  import NominalLexer from "../../nominal/lexer";
9
8
  import NominalParser from "../../nominal/parser";
10
9
 
@@ -17,7 +16,6 @@ import { typesFromJSON,
17
16
  typesToTypesJSON,
18
17
  rulesToRulesJSON,
19
18
  theoremsFromJSON,
20
- variablesFromJSON,
21
19
  lemmasFromNothing,
22
20
  axiomsToAxiomsJSON,
23
21
  conjecturesFromJSON,
@@ -25,23 +23,24 @@ import { typesFromJSON,
25
23
  typePrefixesFromJSON,
26
24
  constructorsFromJSON,
27
25
  metatheoremsFromJSON,
28
- metavariablesFromJSON,
29
26
  metaLemmasFromNothing,
30
27
  theoremsToTheoremsJSON,
31
- variablesToVariablesJSON,
28
+ declaredVariablesFromJSON,
32
29
  conjecturesToConjecturesJSON,
33
30
  combinatorsToCombinatorsJSON,
31
+ declaredMetavariablesFromJSON,
34
32
  typePrefixesToTypePrefixesJSON,
35
33
  constructorsToConstructorsJSON,
36
34
  metatheoremsToMetatheoremsJSON,
37
- metavariablesToMetavariablesJSON } from "../../utilities/json";
35
+ declaredVariablesToDeclaredVariablesJSON,
36
+ declaredMetavariablesToDeclaredMetavariablesJSON } from "../../utilities/json";
38
37
 
39
38
  const { push, filter } = arrayUtilities,
40
39
  { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
41
40
  { nominalParserFromCombinedCustomGrammar } = parsersUtilities;
42
41
 
43
42
  export default class NominalFileContext extends FileContext {
44
- constructor(context, fileContent, filePath, tokens, node, lexer, parser, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables) {
43
+ constructor(context, fileContent, filePath, tokens, node, lexer, parser, types, rules, axioms, lemmas, theorems, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, declaredVariables, declaredMetavariables) {
45
44
  super(context, fileContent, filePath, tokens, node);
46
45
 
47
46
  this.lexer = lexer;
@@ -55,14 +54,14 @@ export default class NominalFileContext extends FileContext {
55
54
  this.axioms = axioms;
56
55
  this.lemmas = lemmas;
57
56
  this.theorems = theorems;
58
- this.variables = variables;
59
57
  this.metaLemmas = metaLemmas;
60
58
  this.conjectures = conjectures;
61
59
  this.combinators = combinators;
62
60
  this.typePrefixes = typePrefixes;
63
61
  this.constructors = constructors;
64
62
  this.metatheorems = metatheorems;
65
- this.metavariables = metavariables;
63
+ this.declaredVariables = declaredVariables;
64
+ this.declaredMetavariables = declaredMetavariables;
66
65
  }
67
66
 
68
67
  getLexer() {
@@ -73,16 +72,8 @@ export default class NominalFileContext extends FileContext {
73
72
  return this.parser;
74
73
  }
75
74
 
76
- getJudgements() {
77
- const judgements = [];
78
-
79
- return judgements;
80
- }
81
-
82
75
  getEquivalences() {
83
- const { Equivalences } = elements,
84
- context = this, ///
85
- equivalences = Equivalences.fromNothing(context);
76
+ const equivalences = [];
86
77
 
87
78
  return equivalences;
88
79
  }
@@ -181,10 +172,6 @@ export default class NominalFileContext extends FileContext {
181
172
  return theorems;
182
173
  }
183
174
 
184
- getVariables(includeRelease = true) {
185
- return this.variables;
186
- }
187
-
188
175
  getProcedures(includeRelease = true) {
189
176
  const procedures = includeRelease ?
190
177
  this.context.getProcedures() :
@@ -241,8 +228,72 @@ export default class NominalFileContext extends FileContext {
241
228
  return metatheorems;
242
229
  }
243
230
 
244
- getMetavariables(includeRelease = true) {
245
- return this.metavariables;
231
+ getDeclaredVariables() {
232
+ return this.declaredVariables;
233
+ }
234
+
235
+ getDeclaredMetavariables(includeRelease = true) {
236
+ return this.declaredMetavariables;
237
+ }
238
+
239
+ getTerms() {
240
+ const terms = [];
241
+
242
+ return terms;
243
+ }
244
+
245
+ getFrames() {
246
+ const frames = [];
247
+
248
+ return frames;
249
+ }
250
+
251
+ getEqualities() {
252
+ const equalities = [];
253
+
254
+ return equalities;
255
+ }
256
+
257
+ getJudgements() {
258
+ const judgements = [];
259
+
260
+ return judgements;
261
+ }
262
+
263
+ getAssertions() {
264
+ const assertions = [];
265
+
266
+ return assertions;
267
+ }
268
+
269
+ getStatements() {
270
+ const statements = [];
271
+
272
+ return statements;
273
+ }
274
+
275
+ getReferences() {
276
+ const references = [];
277
+
278
+ return references;
279
+ }
280
+
281
+ getAssumptions() {
282
+ const assumptions = [];
283
+
284
+ return assumptions;
285
+ }
286
+
287
+ getMetavariables() {
288
+ const metavariables = [];
289
+
290
+ return metavariables;
291
+ }
292
+
293
+ getSubstitutions() {
294
+ const substitutions = [];
295
+
296
+ return substitutions;
246
297
  }
247
298
 
248
299
  addType(type) {
@@ -290,15 +341,6 @@ export default class NominalFileContext extends FileContext {
290
341
  this.trace(`Added the '${theoremString}' theorem to the '${filePath}' file context.`)
291
342
  }
292
343
 
293
- addVariable(variable) {
294
- this.variables.push(variable);
295
-
296
- const filePath = this.getFilePath(),
297
- variableString = variable.getString();
298
-
299
- this.trace(`Added the '${variableString}' variable to the '${filePath}' file context.`)
300
- }
301
-
302
344
  addMetaLemma(metaLemma) {
303
345
  this.metaLemmas.push(metaLemma);
304
346
 
@@ -353,22 +395,29 @@ export default class NominalFileContext extends FileContext {
353
395
  this.trace(`Added the '${metatheoremString}' metatheorem to the '${filePath}' file context.`)
354
396
  }
355
397
 
356
- addMetavariable(metavariable) {
357
- this.metavariables.push(metavariable);
398
+ addDeclaredVariable(declaredVariable) {
399
+ this.declaredVariables.push(declaredVariable);
400
+
401
+ const filePath = this.getFilePath(),
402
+ declaredVariableString = declaredVariable.getString();
403
+
404
+ this.trace(`Added the '${declaredVariableString}' declared variable to the '${filePath}' file context.`)
405
+ }
406
+
407
+ addDeclaredMetavariable(declaredMetavariable) {
408
+ this.declaredMetavariables.push(declaredMetavariable);
358
409
 
359
410
  const filePath = this.getFilePath(),
360
- metavariableString = metavariable.getString();
411
+ declaredMetavariableString = declaredMetavariable.getString();
361
412
 
362
- this.trace(`Added the '${metavariableString}' metavariable to the '${filePath}' file context.`)
413
+ this.trace(`Added the '${declaredMetavariableString}' declared metavariable to the '${filePath}' file context.`)
363
414
  }
364
415
 
365
416
  findMetavariable(metavariable, context) {
366
- const metavariables = this.getMetavariables(),
367
- specificMetavariable = metavariable; ///
417
+ const declaredMetavariables = this.getDeclaredMetavariables();
368
418
 
369
- metavariable = metavariables.find((metavariable) => {
370
- const generalMetavariable = metavariable, ///
371
- metavariableUnifies = generalMetavariable.unifyMetavariable(specificMetavariable, context);
419
+ metavariable = declaredMetavariables.find((declaredMetavariable) => {
420
+ const metavariableUnifies = declaredMetavariable.unifyMetavariable(metavariable, context);
372
421
 
373
422
  if (metavariableUnifies) {
374
423
  return true;
@@ -583,30 +632,30 @@ export default class NominalFileContext extends FileContext {
583
632
  return typePrefix;
584
633
  }
585
634
 
586
- findVariableByVariableIdentifier(variableIdentifier) {
587
- const variables = this.getVariables(),
588
- variable = variables.find((variable) => {
589
- const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
635
+ findDeclaredVariableByVariableIdentifier(VariableIdentitifer) {
636
+ const declaredVariables = this.getDeclaredVariables(),
637
+ declaredVariable = declaredVariables.find((declaredVariable) => {
638
+ const declaredVariableComparesToVariableIdentitifer = declaredVariable.compareVariableIdentifier(VariableIdentitifer);
590
639
 
591
- if (variableComparesToVariableIdentifier) {
640
+ if (declaredVariableComparesToVariableIdentitifer) {
592
641
  return true;
593
642
  }
594
643
  }) || null;
595
644
 
596
- return variable;
645
+ return declaredVariable;
597
646
  }
598
647
 
599
- findMetavariableByMetavariableName(metavariableName) {
600
- const metavariables = this.getMetavariables(),
601
- metavariable = metavariables.find((metavariable) => {
602
- const metavariableComparesToMetavariableName = metavariable.compareMetavariableName(metavariableName);
648
+ findDeclaredMetavariableByMetavariableName(metavariableName) {
649
+ const declaredMetavariables = this.getDeclaredMetavariables(),
650
+ declaredMetavariable = declaredMetavariables.find((declaredMetavariable) => {
651
+ const declaredMetavariableComparesToMetavariableName = declaredMetavariable.compareMetavariableName(metavariableName);
603
652
 
604
- if (metavariableComparesToMetavariableName) {
653
+ if (declaredMetavariableComparesToMetavariableName) {
605
654
  return true;
606
655
  }
607
656
  }) || null;
608
657
 
609
- return metavariable;
658
+ return declaredMetavariable;
610
659
  }
611
660
 
612
661
  findMetaLevelAssumptionByMetaLevelAssumptionNode(metaLevelAssumptionNode) {
@@ -699,18 +748,18 @@ export default class NominalFileContext extends FileContext {
699
748
  return typePrefixPresent;
700
749
  }
701
750
 
702
- isVariablePresentByVariableIdentifier(variableIdentifier) {
703
- const variable = this.findVariableByVariableIdentifier(variableIdentifier),
704
- variablePresent = (variable !== null);
751
+ isDeclaredVariablePresentByVariableIdentifier(variableIdentifier) {
752
+ const declaredVariable = this.findDeclaredVariableByVariableIdentifier(variableIdentifier),
753
+ declaredVariablePresent = (declaredVariable !== null);
705
754
 
706
- return variablePresent;
755
+ return declaredVariablePresent;
707
756
  }
708
757
 
709
- isMetavariablePresentByMetavariableName(metavariableName) {
710
- const metavariable = this.findMetavariableByMetavariableName(metavariableName),
711
- metavariablePresent = (metavariable !== null);
758
+ isDeclaredMetavariablePresentByMetavariableName(metavariableName) {
759
+ const declaredMetavariable = this.findDeclaredMetavariableByMetavariableName(metavariableName),
760
+ declaredMetavariablePresent = (declaredMetavariable !== null);
712
761
 
713
- return metavariablePresent;
762
+ return declaredMetavariablePresent;
714
763
  }
715
764
 
716
765
  isProcedurePresentByProcedureName(procedureName) {
@@ -732,14 +781,14 @@ export default class NominalFileContext extends FileContext {
732
781
  this.axioms = [];
733
782
  this.lemmas = [];
734
783
  this.theorems = [];
735
- this.variables = [];
736
784
  this.metaLemmas = [];
737
785
  this.conjectures = [];
738
786
  this.combinators = [];
739
787
  this.typePrefixes = [];
740
788
  this.constructors = [];
741
789
  this.metatheorems = [];
742
- this.metavariables = [];
790
+ this.declaredVariables = [];
791
+ this.declaredMetavariables = [];
743
792
  }
744
793
 
745
794
  complete() {
@@ -765,8 +814,9 @@ export default class NominalFileContext extends FileContext {
765
814
  this.lemmas = lemmasFromNothing();
766
815
  this.metaLemmas = metaLemmasFromNothing();
767
816
 
768
- this.metavariables = metavariablesFromJSON(json, fileContext);
769
- this.variables = variablesFromJSON(json, fileContext);
817
+ this.declaredMetavariables = declaredMetavariablesFromJSON(json, fileContext);
818
+ this.declaredVariables = declaredVariablesFromJSON(json, fileContext);
819
+
770
820
  this.rules = rulesFromJSON(json, fileContext);
771
821
  this.axioms = axiomsFromJSON(json, fileContext);
772
822
  this.theorems = theoremsFromJSON(json, fileContext);
@@ -782,38 +832,38 @@ export default class NominalFileContext extends FileContext {
782
832
  rulesJSON = rulesToRulesJSON(this.rules),
783
833
  axiomsJSON = axiomsToAxiomsJSON(this.axioms),
784
834
  theoremsJSON = theoremsToTheoremsJSON(this.theorems),
785
- variablesJSON = variablesToVariablesJSON(this.variables),
786
835
  conjecturesJSON = conjecturesToConjecturesJSON(this.conjectures),
787
836
  combinatorsJSON = combinatorsToCombinatorsJSON(this.combinators),
788
837
  typePrefixesJSON = typePrefixesToTypePrefixesJSON(this.typePrefixes),
789
838
  constructorsJSON = constructorsToConstructorsJSON(this.constructors),
790
839
  metatheoremsJSON = metatheoremsToMetatheoremsJSON(this.metatheorems),
791
- metavariablesJSON = metavariablesToMetavariablesJSON(this.metavariables),
840
+ declaredVariablesJSON = declaredVariablesToDeclaredVariablesJSON(this.declaredVariables),
841
+ declaredMetavariablesJSON = declaredMetavariablesToDeclaredMetavariablesJSON(this.declaredMetavariables),
792
842
  filePath = this.filePath,
793
843
  types = typesJSON, ///
794
844
  rules = rulesJSON, ///
795
845
  axioms = axiomsJSON, ///
796
846
  theorems = theoremsJSON, ///
797
- variables = variablesJSON, ///
798
847
  conjectures = conjecturesJSON, ///
799
848
  combinators = combinatorsJSON, ///
800
849
  typePrefixes = typePrefixesJSON, ///
801
850
  constructors = constructorsJSON, ///
802
851
  metatheorems = metatheoremsJSON, ///
803
- metavariables = metavariablesJSON, ///
852
+ declaredVariables = declaredVariablesJSON, ///
853
+ declaredMetavariables = declaredMetavariablesJSON, ///
804
854
  json = {
805
855
  filePath,
806
856
  types,
807
857
  rules,
808
858
  axioms,
809
859
  theorems,
810
- variables,
811
860
  conjectures,
812
861
  combinators,
813
862
  typePrefixes,
814
863
  constructors,
815
864
  metatheorems,
816
- metavariables
865
+ declaredVariables,
866
+ declaredMetavariables
817
867
  };
818
868
 
819
869
  return json;
@@ -831,15 +881,15 @@ export default class NominalFileContext extends FileContext {
831
881
  axioms = [],
832
882
  lemmas = [],
833
883
  theorems = [],
834
- variables = [],
835
884
  metaLemmas = [],
836
885
  conjectures = [],
837
886
  combinators = [],
838
887
  typePrefixes = [],
839
888
  constructors = [],
840
889
  metatheorems = [],
841
- metavariables = [],
842
- nominalFileContext = FileContext.fromFile(NominalFileContext, file, lexer, parser, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables, context);
890
+ declaredVariables = [],
891
+ declaredMetavariables = [],
892
+ nominalFileContext = FileContext.fromFile(NominalFileContext, file, lexer, parser, types, rules, axioms, lemmas, theorems, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, declaredVariables, declaredMetavariables, context);
843
893
 
844
894
  return nominalFileContext;
845
895
  }
@@ -856,15 +906,15 @@ export default class NominalFileContext extends FileContext {
856
906
  axioms = null,
857
907
  lemmas = null,
858
908
  theorems = null,
859
- variables = null,
860
909
  metaLemmas = null,
861
910
  conjectures = null,
862
911
  combinators = null,
863
912
  typePrefixes = null,
864
913
  constructors = null,
865
914
  metatheorems = null,
866
- metavariables = null,
867
- nominalFileContext = FileContext.fromJSON(NominalFileContext, json, lexer, parser, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables, context);
915
+ declaredVariables = null,
916
+ declaredMetavariables = null,
917
+ nominalFileContext = FileContext.fromJSON(NominalFileContext, json, lexer, parser, types, rules, axioms, lemmas, theorems, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, declaredVariables, declaredMetavariables, context);
868
918
 
869
919
  return nominalFileContext;
870
920
  }
@@ -85,9 +85,9 @@ export default class LiminalContext extends Context {
85
85
  context.debug(`The '${substitutionString}' substitution has already been added to the liminal context.`);
86
86
  } else {
87
87
  this.substitutions.push(substitution);
88
-
89
- context.debug(`...added the '${substitutionString}' substitution to the liminal context.`);
90
88
  }
89
+
90
+ context.debug(`...added the '${substitutionString}' substitution to the liminal context.`);
91
91
  }
92
92
 
93
93
  addSubstitutions(substitutions) {