occam-verify-cli 1.0.792 → 1.0.799

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 (69) hide show
  1. package/lib/context/ephemeral.js +41 -11
  2. package/lib/context/file/nominal.js +5 -1
  3. package/lib/context/liminal.js +39 -16
  4. package/lib/context/proof.js +35 -40
  5. package/lib/context.js +23 -3
  6. package/lib/element/assertion/contained.js +10 -14
  7. package/lib/element/assertion/defined.js +6 -8
  8. package/lib/element/assumption/metaLevel.js +181 -0
  9. package/lib/element/assumption.js +24 -44
  10. package/lib/element/frame.js +12 -18
  11. package/lib/element/hypothesis.js +1 -1
  12. package/lib/element/judgement.js +19 -15
  13. package/lib/element/metavariable.js +73 -48
  14. package/lib/element/proofAssertion/step.js +5 -7
  15. package/lib/element/reference.js +21 -19
  16. package/lib/element/substitution/frame.js +12 -16
  17. package/lib/element/substitution/reference.js +20 -1
  18. package/lib/element/substitution/statement.js +22 -2
  19. package/lib/element/topLevelMetaAssertion.js +9 -9
  20. package/lib/node/assumption/metaLevel.js +27 -0
  21. package/lib/node/assumption.js +5 -5
  22. package/lib/node/declaration/metavariable.js +4 -4
  23. package/lib/node/frame.js +5 -2
  24. package/lib/nonTerminalNodeMap.js +3 -1
  25. package/lib/preamble.js +2 -1
  26. package/lib/process/instantiate.js +8 -2
  27. package/lib/process/unify.js +22 -35
  28. package/lib/ruleNames.js +5 -1
  29. package/lib/utilities/context.js +5 -5
  30. package/lib/utilities/element.js +34 -26
  31. package/lib/utilities/json.js +23 -1
  32. package/lib/utilities/string.js +25 -14
  33. package/lib/utilities/unification.js +3 -3
  34. package/lib/utilities/validation.js +9 -14
  35. package/package.json +4 -4
  36. package/src/context/ephemeral.js +63 -12
  37. package/src/context/file/nominal.js +6 -0
  38. package/src/context/liminal.js +54 -16
  39. package/src/context/proof.js +41 -47
  40. package/src/context.js +35 -2
  41. package/src/element/assertion/contained.js +10 -14
  42. package/src/element/assertion/defined.js +6 -8
  43. package/src/element/assumption/metaLevel.js +263 -0
  44. package/src/element/assumption.js +35 -63
  45. package/src/element/frame.js +11 -17
  46. package/src/element/hypothesis.js +1 -1
  47. package/src/element/judgement.js +18 -19
  48. package/src/element/metavariable.js +98 -58
  49. package/src/element/proofAssertion/step.js +5 -7
  50. package/src/element/reference.js +30 -23
  51. package/src/element/substitution/frame.js +11 -15
  52. package/src/element/substitution/reference.js +33 -0
  53. package/src/element/substitution/statement.js +33 -1
  54. package/src/element/topLevelMetaAssertion.js +15 -15
  55. package/src/node/assumption/metaLevel.js +23 -0
  56. package/src/node/assumption.js +8 -8
  57. package/src/node/declaration/metavariable.js +4 -4
  58. package/src/node/frame.js +6 -1
  59. package/src/nonTerminalNodeMap.js +3 -0
  60. package/src/preamble.js +1 -0
  61. package/src/process/instantiate.js +4 -0
  62. package/src/process/unify.js +25 -50
  63. package/src/ruleNames.js +1 -0
  64. package/src/utilities/context.js +4 -4
  65. package/src/utilities/element.js +47 -35
  66. package/src/utilities/json.js +27 -1
  67. package/src/utilities/string.js +34 -19
  68. package/src/utilities/unification.js +3 -3
  69. package/src/utilities/validation.js +10 -16
@@ -114,14 +114,14 @@ export function unserialise(innerFunction, json, context) {
114
114
  return innerFunction(json, context);
115
115
  }
116
116
 
117
- export async function asyncRestrict(innerFunction, assumptions, context) {
117
+ export async function asyncRestrict(innerFunction, metaLevelAssumptions, context) {
118
118
  if (context === undefined) {
119
- context = assumptions; ///
119
+ context = metaLevelAssumptions; ///
120
120
 
121
- assumptions = null;
121
+ metaLevelAssumptions = null;
122
122
  }
123
123
 
124
- const proofContext = ProofContext.fromAssumptions(assumptions, context);
124
+ const proofContext = ProofContext.fromMetaLevelAssumptions(metaLevelAssumptions, context);
125
125
 
126
126
  context = proofContext; ///
127
127
 
@@ -10,7 +10,7 @@ import { equivalenceStringFromTerms,
10
10
  subproofStringFromSuppositionsAndSubDerivation,
11
11
  procedureCallStringFromProcedureReferenceAndParameters,
12
12
  topLevelAssertionStringFromLabelsSuppositionsAndDeduction,
13
- topLevelMetaAssertionStringFromLabelSuppositionsAndDeduction } from "../utilities/string";
13
+ topLevelMetaAssertionStringFromLabelSuppositionsDeductionAndMetaLevelAssumptions } from "../utilities/string";
14
14
 
15
15
  export function typeFromTypeNode(typeNode, context) {
16
16
  let type;
@@ -210,13 +210,6 @@ export function theoremFromTheoremNode(theoremNode, context) {
210
210
  return theorem;
211
211
  }
212
212
 
213
- export function metaTypeFromMetaTypeNode(metaTypeNode, context) {
214
- const metaTypeName = metaTypeNode.getMetaTypeName(),
215
- metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
216
-
217
- return metaType;
218
- }
219
-
220
213
  export function propertyFromPropertyNode(propertyNode, context) {
221
214
  const { Property } = elements,
222
215
  node = propertyNode, ///
@@ -346,11 +339,11 @@ export function metaLemmaFromMetaLemmaNode(metaLemmaNode, context) {
346
339
  label = labelFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
347
340
  deduction = deductionFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
348
341
  suppositions = suppositionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
349
- assumptions = assumptionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
350
- topLevelMetaAssertionString = topLevelMetaAssertionStringFromLabelSuppositionsAndDeduction(label, suppositions, deduction),
342
+ metaLevelAssumptions = metaLevelAssumptionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
343
+ topLevelMetaAssertionString = topLevelMetaAssertionStringFromLabelSuppositionsDeductionAndMetaLevelAssumptions(label, suppositions, deduction, metaLevelAssumptions),
351
344
  node = metaLemmaMetathoremNode, ///
352
345
  string = topLevelMetaAssertionString, ///
353
- metaLemma = new MetaLemma(context, string, node, label, suppositions, deduction, proof, assumptions);
346
+ metaLemma = new MetaLemma(context, string, node, label, suppositions, deduction, proof, metaLevelAssumptions);
354
347
 
355
348
  return metaLemma;
356
349
  }
@@ -467,11 +460,8 @@ export function assumptionFromAssumptionNode(assumptionNode, context) {
467
460
  node = assumptionNode, ///
468
461
  string = context.nodeAsString(node),
469
462
  reference = referenceFromAssumptionNode(assumptionNode, context),
470
- statement = statementFromAssumptionNode(assumptionNode, context);
471
-
472
- context = null;
473
-
474
- const assumption = new Assumption(context, string, node, reference, statement);
463
+ statement = statementFromAssumptionNode(assumptionNode, context),
464
+ assumption = new Assumption(context, string, node, reference, statement);
475
465
 
476
466
  return assumption;
477
467
  }
@@ -523,11 +513,11 @@ export function metatheoremFromMetatheoremNode(metatheoremNode, context) {
523
513
  label = labelFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
524
514
  deduction = deductionFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
525
515
  suppositions = suppositionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
526
- assumptions = assumptionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
527
- topLevelMetaAssertionString = topLevelMetaAssertionStringFromLabelSuppositionsAndDeduction(label, suppositions, deduction),
516
+ metaLevelAssumptions = metaLevelAssumptionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context),
517
+ topLevelMetaAssertionString = topLevelMetaAssertionStringFromLabelSuppositionsDeductionAndMetaLevelAssumptions(label, suppositions, deduction, metaLevelAssumptions),
528
518
  node = metaLemmaMetathoremNode, ///
529
519
  string = topLevelMetaAssertionString, ///
530
- metatheorem = new Metatheorem(context, string, node, label, suppositions, deduction, proof, assumptions);
520
+ metatheorem = new Metatheorem(context, string, node, label, suppositions, deduction, proof, metaLevelAssumptions);
531
521
 
532
522
  return metatheorem;
533
523
  }
@@ -730,6 +720,17 @@ export function variableDeclarationFromVariableDeclarationNode(variableDeclarati
730
720
  return variableDeclaration;
731
721
  }
732
722
 
723
+ export function metaLevelAssumptionFromMetaLevelAssumptionNode(metaLevelAssumptionNode, context) {
724
+ const { MetaLevelAssumption } = elements,
725
+ node = metaLevelAssumptionNode, ///
726
+ string = context.nodeAsString(node),
727
+ reference = referenceFromMetaLevelAssumptionNode(metaLevelAssumptionNode, context),
728
+ statement = statementFromMetaLevelAssumptionNode(metaLevelAssumptionNode, context),
729
+ metaLevelAssumption = new MetaLevelAssumption(context, string, node, reference, statement);
730
+
731
+ return metaLevelAssumption;
732
+ }
733
+
733
734
  export function typePrefixDeclarationFromTypePrefixDeclarationNode(typePrefixDeclarationNode, context) {
734
735
  const { TypePrefixDeclaration } = elements,
735
736
  node = typePrefixDeclarationNode, ///
@@ -1072,7 +1073,7 @@ export function termFromMetavariableNode(metavariableNode, context) {
1072
1073
  const termNode = metavariableNode.getTermNode();
1073
1074
 
1074
1075
  if (termNode !== null) {
1075
- term = termFromTermNode(termNode, context);
1076
+ term = context.findTermByTermNode(termNode);
1076
1077
  }
1077
1078
 
1078
1079
  return term;
@@ -1245,13 +1246,8 @@ export function statementFromConclusionNode(conclusinoNode, context) {
1245
1246
  }
1246
1247
 
1247
1248
  export function statementFromAssumptionNode(assumptionNode, context) {
1248
- let statement;
1249
-
1250
- const statementNode = assumptionNode.getStatementNode();
1251
-
1252
- if (statementNode !== null) {
1253
- statement = statementFromStatementNode(statementNode, context);
1254
- }
1249
+ const statementNode = assumptionNode.getStatementNode(),
1250
+ statement = statementFromStatementNode(statementNode, context);
1255
1251
 
1256
1252
  return statement;
1257
1253
  }
@@ -1725,6 +1721,22 @@ export function targetFrameFromFrameSubstitutionNode(frameSubstitutionNode, cont
1725
1721
  return targetFrame;
1726
1722
  }
1727
1723
 
1724
+ export function statementFromMetaLevelAssumptionNode(metaLevelAssumptionNode, context) {
1725
+ const statementNode = metaLevelAssumptionNode.getStatementNode(),
1726
+ statement = statementFromStatementNode(statementNode, context);
1727
+
1728
+ return statement;
1729
+ }
1730
+
1731
+ export function referenceFromMetaLevelAssumptionNode(metaLevelAssumptionNode, context) {
1732
+ const { Reference } = elements,
1733
+ referenceNode = metaLevelAssumptionNode.getReferenceNode(),
1734
+ referenceString = context.nodeAsString(referenceNode),
1735
+ reference = Reference.fromReferenceString(referenceString, context);
1736
+
1737
+ return reference;
1738
+ }
1739
+
1728
1740
  export function suppositionsFromTopLevelAssertionNode(topLevelAsssertionNode, context) {
1729
1741
  const suppositionNodes = topLevelAsssertionNode.getSuppositionNodes(),
1730
1742
  suppositions = suppositionsFromSuppositionNodes(suppositionNodes, context);
@@ -1794,18 +1806,12 @@ export function combinatorFromCombinatorDeclarationNode(combinatorDeclarationNod
1794
1806
  }
1795
1807
 
1796
1808
  export function metaTypeFromMetavariableDeclarationNode(metavariableDeclarationNode, context) {
1797
- const metaTypeNode = metavariableDeclarationNode.getMetaTypeNode(),
1798
- metaType = metaTypeFromMetaTypeNode(metaTypeNode, context);
1809
+ const metaTypeName = metavariableDeclarationNode.getMetaTypeName(),
1810
+ metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
1799
1811
 
1800
1812
  return metaType;
1801
1813
  }
1802
1814
 
1803
- export function assumptionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context) {
1804
- const assumptions = [];
1805
-
1806
- return assumptions;
1807
- }
1808
-
1809
1815
  export function provisionalFromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, context) {
1810
1816
  const provisional = simpleTypeDeclarationNode.isProvisional();
1811
1817
 
@@ -1937,6 +1943,12 @@ export function replacementStatementFromStatementSubstitutionNode(statementSubst
1937
1943
  return replacementStatement;
1938
1944
  }
1939
1945
 
1946
+ export function metaLevelAssumptionsFromTopLevelMetaAssertionNode(metaLemmaMetathoremNode, context) {
1947
+ const metaLevelAssumptions = [];
1948
+
1949
+ return metaLevelAssumptions;
1950
+ }
1951
+
1940
1952
  export function termsFromTermNodes(termNodes, context) {
1941
1953
  const terms = termNodes.map((termNode) => {
1942
1954
  const term = termFromTermNode(termNode, context);
@@ -565,7 +565,7 @@ export function assumptionsFromJSON(json, context) {
565
565
  let { assumptions } = json;
566
566
 
567
567
  const { Assumption } = elements,
568
- assumptionsJSON = assumptions; ///
568
+ assumptionsJSON = assumptions; ///
569
569
 
570
570
  assumptions = assumptionsJSON.map((assumptionJSON) => {
571
571
  const json = assumptionJSON, ///
@@ -702,6 +702,22 @@ export function propertyRelationsFromJSON(json, context) {
702
702
  return propertyRelations;
703
703
  }
704
704
 
705
+ export function metaLevelAssumptionsFromJSON(json, context) {
706
+ let { metaLevelAssumptions } = json;
707
+
708
+ const { MetaLevelAssumption } = elements,
709
+ metaLevelAssumptionsJSON = metaLevelAssumptions; ///
710
+
711
+ metaLevelAssumptions = metaLevelAssumptionsJSON.map((metaLevelAssumptionJSON) => {
712
+ const json = metaLevelAssumptionJSON, ///
713
+ metaLevelAssumption = MetaLevelAssumption.fromJSON(json, context);
714
+
715
+ return metaLevelAssumption;
716
+ });
717
+
718
+ return metaLevelAssumptions;
719
+ }
720
+
705
721
  export function nameToNameJSON(name) {
706
722
  const nameJSON = name; ///
707
723
 
@@ -1120,6 +1136,16 @@ export function propertyRelationsToPropertyRelationsJSON(propertyRelations) {
1120
1136
  return propertyRelationsJSON;
1121
1137
  }
1122
1138
 
1139
+ export function metaLevelAssumptionsToMetaLevelAssumptionsJSON(metaLevelAssumptions) {
1140
+ const metaLevelAssumptionsJSON = metaLevelAssumptions.map((metaLevelAssumption) => {
1141
+ const metaLevelAssumptionJSON = metaLevelAssumption.toJSON();
1142
+
1143
+ return metaLevelAssumptionJSON;
1144
+ });
1145
+
1146
+ return metaLevelAssumptionsJSON;
1147
+ }
1148
+
1123
1149
  function findTypeByName(name, context) {
1124
1150
  const typeName = name, ///
1125
1151
  type = context.findTypeByTypeName(typeName);
@@ -117,6 +117,20 @@ export function suppositionsStringFromSuppositions(suppositions) {
117
117
  return suppositionsString;
118
118
  }
119
119
 
120
+ export function metalevelAssumptionsStringFromMetaLevelAssumptions(metaLevelAssumptions) {
121
+ const metaLevelAssumptionsString = metaLevelAssumptions.reduce((metaLevelAssumptionsString, metaLevelAssumption) => {
122
+ const metaLevelAssumptionString = metaLevelAssumption.getString();
123
+
124
+ metaLevelAssumptionsString = (metaLevelAssumptionsString === null) ?
125
+ metaLevelAssumptionString: ///
126
+ `${metaLevelAssumptionsString}, ${metaLevelAssumptionString}`;
127
+
128
+ return metaLevelAssumptionsString;
129
+ }, null);
130
+
131
+ return metaLevelAssumptionsString;
132
+ }
133
+
120
134
  export function signatureStringFromTerms(terms) {
121
135
  const termsString = termsStringFromTerms(terms),
122
136
  signatureString = `[${termsString}]`;
@@ -137,14 +151,6 @@ export function typeStringFromNominalTypeName(nominalTypeName) {
137
151
  return typeString;
138
152
  }
139
153
 
140
- export function assumptionStringFromStatementAndReference(statement, reference) {
141
- const statementString = statement.getString(),
142
- referneceString = reference.getString(),
143
- assumptionString = `${referneceString} :: ${statementString}`;
144
-
145
- return assumptionString;
146
- }
147
-
148
154
  export function termSubstitutionStringFromTermAndVariable(term, variable) {
149
155
  const termString = term.getString(),
150
156
  variableString = variable.getString(),
@@ -192,6 +198,14 @@ export function frameSubstitutionStringFromFrameAndMetavariable(frame, metavaria
192
198
  return string;
193
199
  }
194
200
 
201
+ export function metaLevelAssumptionStringFromStatementAndReference(statement, reference) {
202
+ const statementString = statement.getString(),
203
+ referneceString = reference.getString(),
204
+ metaLevelAssumptionString = `${referneceString} :: ${statementString}`;
205
+
206
+ return metaLevelAssumptionString;
207
+ }
208
+
195
209
  export function procedureCallStringFromProcedureReferenceAndParameters(procedureReference, parameters) {
196
210
  const procedureReferenceName = procedureReference.getName(),
197
211
  parametersString = parametersStringFromParameters(parameters),
@@ -236,17 +250,6 @@ export function topLevelAssertionStringFromLabelsSuppositionsAndDeduction(labels
236
250
  return topLevelAssertionString;
237
251
  }
238
252
 
239
- export function topLevelMetaAssertionStringFromLabelSuppositionsAndDeduction(label, suppositions, deduction) {
240
- const suppositionsString = suppositionsStringFromSuppositions(suppositions),
241
- deductionString = deduction.getString(),
242
- labelString = label.getString(),
243
- topLevelMetaAssertionString = (suppositionsString !== null) ?
244
- `${labelString} :: [${suppositionsString}]...${deductionString}` :
245
- `${labelString} :: ${deductionString}`;
246
-
247
- return topLevelMetaAssertionString;
248
- }
249
-
250
253
  export function statementSubstitutionStringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution) {
251
254
  const statementString = statement.getString(),
252
255
  metavariableString = metavariable.getString(),
@@ -255,3 +258,15 @@ export function statementSubstitutionStringFromStatementMetavariableAndSubstitut
255
258
 
256
259
  return statementSubstitutionString;
257
260
  }
261
+
262
+ export function topLevelMetaAssertionStringFromLabelSuppositionsDeductionAndMetaLevelAssumptions(label, suppositions, deduction, metaLevelAssumptions) {
263
+ const labelString = label.getString(),
264
+ deductionString = deduction.getString(),
265
+ suppositionsString = suppositionsStringFromSuppositions(suppositions),
266
+ metalevelAssumptionsString = metalevelAssumptionsStringFromMetaLevelAssumptions(metaLevelAssumptions),
267
+ topLevelMetaAssertionString = (suppositionsString !== null) ?
268
+ `${labelString} :: [${suppositionsString}]...${deductionString} ${metalevelAssumptionsString}` :
269
+ `${labelString} :: ${deductionString} ${metalevelAssumptionsString}`;
270
+
271
+ return topLevelMetaAssertionString;
272
+ }
@@ -59,10 +59,10 @@ async function unifyStatementWithReference(statement, reference, satisfiesAssert
59
59
 
60
60
  if (metaLevel) {
61
61
  descend((context) => {
62
- const { Assumption } = elements,
63
- assumption = Assumption.fromStatementAndReference(statement, reference, context);
62
+ const { MetaLevelAssumption } = elements,
63
+ metaLevelAssumption = MetaLevelAssumption.fromStatementAndReference(statement, reference, context);
64
64
 
65
- assumption.validate(context);
65
+ metaLevelAssumption.validate(context);
66
66
 
67
67
  statementUnifiesWithReference = true;
68
68
  }, context);
@@ -94,7 +94,9 @@ function validateStatementAsMetavariable(statement, context) {
94
94
 
95
95
  context.trace(`Validating the '${statementString}' statement as a metavariable...`);
96
96
 
97
- metavariable = metavariable.validate(context);
97
+ const strict = true; ///
98
+
99
+ metavariable = metavariable.validate(strict, context);
98
100
 
99
101
  if (metavariable !== null) {
100
102
  statementValidatesAsMetavariable = true;
@@ -103,25 +105,17 @@ function validateStatementAsMetavariable(statement, context) {
103
105
  generalContext = context, ///
104
106
  specificContext = context; ///
105
107
 
106
- let termSubstitution,
107
- frameSubstitution;
108
-
109
- termSubstitution = TermSubstitution.fromStatement(statement, context);
110
-
111
- if (termSubstitution !== null) {
112
- termSubstitution = termSubstitution.validate(generalContext, specificContext); ///
108
+ let substitution;
113
109
 
114
- if (termSubstitution === null) {
115
- statementValidatesAsMetavariable = false;
116
- }
117
- }
110
+ const frameSubstitution = FrameSubstitution.fromStatement(statement, context),
111
+ termSubstitution = TermSubstitution.fromStatement(statement, context);
118
112
 
119
- frameSubstitution = FrameSubstitution.fromStatement(statement, context);
113
+ substitution = (termSubstitution || frameSubstitution);
120
114
 
121
- if (frameSubstitution !== null) {
122
- frameSubstitution = frameSubstitution.validate(generalContext, specificContext); ///
115
+ if (substitution !== null) {
116
+ substitution = substitution.validate(generalContext, specificContext); ///
123
117
 
124
- if (frameSubstitution === null) {
118
+ if (substitution === null) {
125
119
  statementValidatesAsMetavariable = false;
126
120
  }
127
121
  }