occam-verify-cli 1.0.768 → 1.0.776

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 (106) hide show
  1. package/lib/context/file/nominal.js +11 -11
  2. package/lib/context/illative.js +28 -0
  3. package/lib/context/nested.js +27 -0
  4. package/lib/context/proof.js +232 -0
  5. package/lib/context/thetic.js +28 -0
  6. package/lib/context.js +15 -21
  7. package/lib/element/assertion/contained.js +24 -22
  8. package/lib/element/assertion/defined.js +20 -19
  9. package/lib/element/assertion/property.js +14 -13
  10. package/lib/element/assertion/satisfies.js +8 -9
  11. package/lib/element/assertion/subproof.js +23 -26
  12. package/lib/element/assertion/type.js +9 -11
  13. package/lib/element/assumption.js +32 -39
  14. package/lib/element/combinator/bracketed.js +3 -3
  15. package/lib/element/combinator.js +20 -20
  16. package/lib/element/conclusion.js +33 -29
  17. package/lib/element/constructor.js +19 -18
  18. package/lib/element/deduction.js +33 -29
  19. package/lib/element/equality.js +13 -15
  20. package/lib/element/equivalence.js +59 -52
  21. package/lib/element/frame.js +41 -34
  22. package/lib/element/hypothesis.js +7 -5
  23. package/lib/element/judgement.js +32 -73
  24. package/lib/element/label.js +22 -22
  25. package/lib/element/metavariable.js +23 -7
  26. package/lib/element/proofAssertion/premise.js +48 -35
  27. package/lib/element/proofAssertion/step.js +35 -20
  28. package/lib/element/proofAssertion/supposition.js +48 -34
  29. package/lib/element/proofAssertion.js +1 -14
  30. package/lib/element/reference.js +80 -53
  31. package/lib/element/signature.js +44 -3
  32. package/lib/element/statement.js +28 -29
  33. package/lib/element/subproof.js +2 -2
  34. package/lib/element/substitution/frame.js +24 -19
  35. package/lib/element/substitution/metaLevel.js +31 -27
  36. package/lib/element/substitution/reference.js +11 -10
  37. package/lib/element/substitution/statement.js +30 -23
  38. package/lib/element/substitution/term.js +11 -10
  39. package/lib/element/term.js +24 -20
  40. package/lib/element/topLevelMetaAssertion.js +2 -2
  41. package/lib/element/variable.js +6 -2
  42. package/lib/process/assign.js +10 -4
  43. package/lib/process/unify.js +8 -8
  44. package/lib/process/validate.js +10 -8
  45. package/lib/utilities/context.js +68 -23
  46. package/lib/utilities/element.js +55 -27
  47. package/lib/utilities/json.js +8 -8
  48. package/lib/utilities/statement.js +1 -8
  49. package/lib/utilities/string.js +12 -1
  50. package/lib/utilities/unification.js +9 -7
  51. package/lib/utilities/validation.js +39 -31
  52. package/package.json +1 -1
  53. package/src/context/file/nominal.js +14 -16
  54. package/src/context/illative.js +17 -0
  55. package/src/context/nested.js +15 -0
  56. package/src/context/{scoped.js → proof.js} +73 -73
  57. package/src/context/thetic.js +17 -0
  58. package/src/context.js +23 -36
  59. package/src/element/assertion/contained.js +28 -28
  60. package/src/element/assertion/defined.js +23 -23
  61. package/src/element/assertion/property.js +15 -14
  62. package/src/element/assertion/satisfies.js +7 -9
  63. package/src/element/assertion/subproof.js +26 -31
  64. package/src/element/assertion/type.js +10 -12
  65. package/src/element/assumption.js +33 -54
  66. package/src/element/combinator/bracketed.js +2 -2
  67. package/src/element/combinator.js +23 -29
  68. package/src/element/conclusion.js +37 -40
  69. package/src/element/constructor.js +29 -34
  70. package/src/element/deduction.js +36 -39
  71. package/src/element/equality.js +16 -18
  72. package/src/element/equivalence.js +76 -67
  73. package/src/element/frame.js +42 -34
  74. package/src/element/hypothesis.js +7 -6
  75. package/src/element/judgement.js +34 -44
  76. package/src/element/label.js +25 -31
  77. package/src/element/metavariable.js +32 -12
  78. package/src/element/proofAssertion/premise.js +63 -49
  79. package/src/element/proofAssertion/step.js +43 -23
  80. package/src/element/proofAssertion/supposition.js +64 -50
  81. package/src/element/proofAssertion.js +0 -22
  82. package/src/element/reference.js +119 -80
  83. package/src/element/signature.js +5 -2
  84. package/src/element/statement.js +30 -35
  85. package/src/element/subproof.js +1 -1
  86. package/src/element/substitution/frame.js +27 -26
  87. package/src/element/substitution/metaLevel.js +38 -42
  88. package/src/element/substitution/reference.js +13 -14
  89. package/src/element/substitution/statement.js +35 -33
  90. package/src/element/substitution/term.js +13 -14
  91. package/src/element/term.js +42 -34
  92. package/src/element/topLevelMetaAssertion.js +1 -1
  93. package/src/element/variable.js +8 -1
  94. package/src/process/assign.js +9 -3
  95. package/src/process/unify.js +7 -7
  96. package/src/process/validate.js +9 -8
  97. package/src/utilities/context.js +82 -31
  98. package/src/utilities/element.js +68 -31
  99. package/src/utilities/json.js +13 -13
  100. package/src/utilities/statement.js +1 -9
  101. package/src/utilities/string.js +16 -2
  102. package/src/utilities/unification.js +10 -9
  103. package/src/utilities/validation.js +50 -38
  104. package/lib/context/scoped.js +0 -232
  105. package/lib/utilities/term.js +0 -17
  106. package/src/utilities/term.js +0 -10
@@ -5,8 +5,7 @@ import ProofAssertion from "../proofAssertion";
5
5
  import { define } from "../../elements";
6
6
  import { instantiatePremise } from "../../process/instantiate";
7
7
  import { procedureCallFromPremiseNode } from "../../utilities/element";
8
- import { join, attempt, reconcile, instantiate } from "../../utilities/context";
9
- import { ephemeralContextFromJSON, ephemeralContextToEphemeralContextJSON } from "../../utilities/json";
8
+ import { join, declare, attempt, reconcile, serialise, unserialise, instantiate } from "../../utilities/context";
10
9
 
11
10
  export default define(class Premise extends ProofAssertion {
12
11
  constructor(context, string, node, statement, procedureCall) {
@@ -26,12 +25,6 @@ export default define(class Premise extends ProofAssertion {
26
25
  return premiseNode;
27
26
  }
28
27
 
29
- isStated() {
30
- const stated = true; ///
31
-
32
- return stated;
33
- }
34
-
35
28
  async verify(context) {
36
29
  let verifies = false;
37
30
 
@@ -64,29 +57,31 @@ export default define(class Premise extends ProofAssertion {
64
57
 
65
58
  context.trace(`Validatting the '${premiseString}' premise...`);
66
59
 
67
- attempt((context) => {
68
- const statement = this.getStatement(),
69
- procedureCall = this.getProcedureCall();
60
+ declare((context) => {
61
+ attempt((context) => {
62
+ const statement = this.getStatement(),
63
+ procedureCall = this.getProcedureCall();
70
64
 
71
- if (statement !== null) {
72
- const statementValidates = this.validateStatement(context);
65
+ if (statement !== null) {
66
+ const statementValidates = this.validateStatement(context);
73
67
 
74
- if (statementValidates) {
75
- context.commit(this);
68
+ if (statementValidates) {
69
+ context.commit(this);
76
70
 
77
- validates = true;
71
+ validates = true;
72
+ }
78
73
  }
79
- }
80
74
 
81
- if (procedureCall !== null) {
82
- const procedureCallValidates = this.validateProcedureCall(context);
75
+ if (procedureCall !== null) {
76
+ const procedureCallValidates = this.validateProcedureCall(context);
83
77
 
84
- if (procedureCallValidates) {
85
- context.commit(this);
78
+ if (procedureCallValidates) {
79
+ context.commit(this);
86
80
 
87
- validates = true;
81
+ validates = true;
82
+ }
88
83
  }
89
- }
84
+ }, context);
90
85
  }, context);
91
86
 
92
87
  if (validates) {
@@ -96,6 +91,30 @@ export default define(class Premise extends ProofAssertion {
96
91
  return validates;
97
92
  }
98
93
 
94
+ validateStatement(context) {
95
+ let statementValidates = false;
96
+
97
+ const premiseString = this.getString();
98
+
99
+ context.trace(`Validating the '${premiseString}' premise's statsement... `);
100
+
101
+ let statement;
102
+
103
+ statement = this.getStatement();
104
+
105
+ statement = statement.validate(context); ///
106
+
107
+ if (statement !== null) {
108
+ statementValidates = true;
109
+ }
110
+
111
+ if (statementValidates) {
112
+ context.debug(`...validated the '${premiseString}' premise's statement. `);
113
+ }
114
+
115
+ return statementValidates;
116
+ }
117
+
99
118
  validateProcedureCall(context) {
100
119
  let procedureCallValidates = false;
101
120
 
@@ -266,42 +285,37 @@ export default define(class Premise extends ProofAssertion {
266
285
  }
267
286
 
268
287
  toJSON() {
269
- let context;
270
-
271
- context = this.getContext();
272
-
273
- const ephemeralContext = context, ///
274
- ephemeralContextJSON = ephemeralContextToEphemeralContextJSON(ephemeralContext),
275
- contextJSON = ephemeralContextJSON; ///
288
+ const context = this.getContext();
276
289
 
277
- context = contextJSON; ///
290
+ return serialise((context) => {
291
+ const string = this.getString(),
292
+ json = {
293
+ context,
294
+ string
295
+ };
278
296
 
279
- const string = this.getString(),
280
- json = {
281
- context,
282
- string
283
- };
284
-
285
- return json;
297
+ return json;
298
+ }, context);
286
299
  }
287
300
 
288
301
  static name = "Premise";
289
302
 
290
303
  static fromJSON(json, context) {
291
- const ephemeralContext = ephemeralContextFromJSON(json, context);
304
+ let premise;
292
305
 
293
- context = ephemeralContext; ///
306
+ unserialise((json, context) => {
307
+ instantiate((context) => {
308
+ const { string } = json,
309
+ premiseNode = instantiatePremise(string, context),
310
+ node = premiseNode, ///
311
+ statement = statementFromPremiseNode(premiseNode, context),
312
+ procedureCall = procedureCallFromPremiseNode(premiseNode, context);
294
313
 
295
- return instantiate((context) => {
296
- const { string } = json,
297
- premiseNode = instantiatePremise(string, context),
298
- node = premiseNode, ///
299
- statement = statementFromPremiseNode(premiseNode, context),
300
- procedureCall = procedureCallFromPremiseNode(premiseNode, context),
301
- premise = new Premise(context, string, node, statement, procedureCall);
314
+ premise = new Premise(context, string, node, statement, procedureCall);
315
+ }, context);
316
+ }, json, context);
302
317
 
303
- return premise;
304
- }, context);
318
+ return premise;
305
319
  }
306
320
  });
307
321
 
@@ -6,8 +6,8 @@ import ProofAssertion from "../proofAssertion";
6
6
 
7
7
  import { define } from "../../elements";
8
8
  import { unifyStatements } from "../../utilities/unification";
9
- import { attempt, asyncReconcile } from "../../utilities/context";
10
9
  import { propertyAssertionFromStatement } from "../../utilities/statement";
10
+ import { derive, attempt, descend, asyncReconcile } from "../../utilities/context";
11
11
 
12
12
  const { asyncSome } = asynchronousUtilities;
13
13
 
@@ -46,13 +46,6 @@ export default define(class Step extends ProofAssertion {
46
46
  return qualified;
47
47
  }
48
48
 
49
- isStated() {
50
- const qualified = this.isQualified(),
51
- stated = qualified; ///
52
-
53
- return stated;
54
- }
55
-
56
49
  compareTermAndPropertyRelation(term, propertyRelation, context) {
57
50
  let comparesToTermAndPropertyRelation = false;
58
51
 
@@ -107,22 +100,24 @@ export default define(class Step extends ProofAssertion {
107
100
 
108
101
  context.trace(`Validating the '${stepString}' step...`);
109
102
 
110
- attempt((context) => {
111
- const statementValidates = this.validateStatement(context);
103
+ derive((context) => {
104
+ attempt((context) => {
105
+ const statementValidates = this.validateStatement(context);
112
106
 
113
- if (statementValidates) {
114
- const referenceValidates = this.validateReference(context);
107
+ if (statementValidates) {
108
+ const referenceValidates = this.validateReference(context);
115
109
 
116
- if (referenceValidates) {
117
- const satisfiesAssertioValidates = this.validateSatisfiesAssertion(context);
110
+ if (referenceValidates) {
111
+ const satisfiesAssertioValidates = this.validateSatisfiesAssertion(context);
118
112
 
119
- if (satisfiesAssertioValidates) {
120
- context.commit(this);
113
+ if (satisfiesAssertioValidates) {
114
+ context.commit(this);
121
115
 
122
- validates = true;
116
+ validates = true;
117
+ }
123
118
  }
124
119
  }
125
- }
120
+ }, context);
126
121
  }, context);
127
122
 
128
123
  if (validates) {
@@ -155,6 +150,30 @@ export default define(class Step extends ProofAssertion {
155
150
  return referenceValidates;
156
151
  }
157
152
 
153
+ validateStatement(context) {
154
+ let statementValidates = false;
155
+
156
+ const stepString = this.getString();
157
+
158
+ context.trace(`Validating the '${stepString}' step's statement... `);
159
+
160
+ let statement;
161
+
162
+ statement = this.getStatement();
163
+
164
+ statement = statement.validate(context); ///
165
+
166
+ if (statement !== null) {
167
+ statementValidates = true;
168
+ }
169
+
170
+ if (statementValidates) {
171
+ context.debug(`...validated the '${stepString}' step statement. `);
172
+ }
173
+
174
+ return statementValidates;
175
+ }
176
+
158
177
  validateSatisfiesAssertion(context) {
159
178
  let satisfiesAssertionValidates = true; ///
160
179
 
@@ -164,12 +183,13 @@ export default define(class Step extends ProofAssertion {
164
183
 
165
184
  context.trace(`Validating the '${stepString}' step's '${satisfiesAssertionString}' satisfies assertion... `);
166
185
 
167
- const stated = true,
168
- satisfiesAssertion = this.satisfiesAssertion.validate(stated, context);
186
+ descend((context) => {
187
+ const satisfiesAssertion = this.satisfiesAssertion.validate(context);
169
188
 
170
- if (satisfiesAssertion === null) {
171
- satisfiesAssertionValidates = false;
172
- }
189
+ if (satisfiesAssertion === null) {
190
+ satisfiesAssertionValidates = false;
191
+ }
192
+ }, context);
173
193
 
174
194
  if (satisfiesAssertionValidates) {
175
195
  context.debug(`...validating the '${stepString}' step's '${satisfiesAssertionString}' satisfies assertion. `);
@@ -5,8 +5,7 @@ import ProofAssertion from "../proofAssertion";
5
5
  import { define } from "../../elements";
6
6
  import { instantiateSupposition} from "../../process/instantiate";
7
7
  import { procedureCallFromSuppositionNode } from "../../utilities/element";
8
- import { join, attempt, reconcile, instantiate } from "../../utilities/context";
9
- import { ephemeralContextFromJSON, ephemeralContextToEphemeralContextJSON } from "../../utilities/json";
8
+ import { join, declare, attempt, reconcile, serialise, unserialise, instantiate } from "../../utilities/context";
10
9
 
11
10
  export default define(class Supposition extends ProofAssertion {
12
11
  constructor(context, string, node, statement, procedureCall) {
@@ -26,12 +25,6 @@ export default define(class Supposition extends ProofAssertion {
26
25
  return suppositionNode;
27
26
  }
28
27
 
29
- isStated() {
30
- const stated = true; ///
31
-
32
- return stated;
33
- }
34
-
35
28
  async verify(context) {
36
29
  let verifies = false;
37
30
 
@@ -64,29 +57,31 @@ export default define(class Supposition extends ProofAssertion {
64
57
 
65
58
  context.trace(`Validatting the '${suppositionString}' supposition...`);
66
59
 
67
- attempt((context) => {
68
- const statement = this.getStatement(),
69
- procedureCall = this.getProcedureCall();
70
-
71
- if (statement !== null) {
72
- const statementValidates = this.validateStatement(context);
60
+ declare((context) => {
61
+ attempt((context) => {
62
+ const statement = this.getStatement(),
63
+ procedureCall = this.getProcedureCall();
73
64
 
74
- if (statementValidates) {
75
- context.commit(this);
65
+ if (statement !== null) {
66
+ const statementValidates = this.validateStatement(context);
76
67
 
77
- validates = true;
68
+ if (statementValidates) {
69
+ validates = true;
70
+ }
78
71
  }
79
- }
80
72
 
81
- if (procedureCall !== null) {
82
- const procedureCallValidates = this.validateProcedureCall(context);
73
+ if (procedureCall !== null) {
74
+ const procedureCallValidates = this.validateProcedureCall(context);
83
75
 
84
- if (procedureCallValidates) {
85
- context.commit(this);
76
+ if (procedureCallValidates) {
77
+ validates = true;
78
+ }
79
+ }
86
80
 
87
- validates = true;
81
+ if (validates) {
82
+ context.commit(this);
88
83
  }
89
- }
84
+ }, context);
90
85
  }, context);
91
86
 
92
87
  if (validates) {
@@ -96,6 +91,30 @@ export default define(class Supposition extends ProofAssertion {
96
91
  return validates;
97
92
  }
98
93
 
94
+ validateStatement(context) {
95
+ let statementValidates = false;
96
+
97
+ const suppositionString = this.getString();
98
+
99
+ context.trace(`Validating the '${suppositionString}' supposition's statement... `);
100
+
101
+ let statement;
102
+
103
+ statement = this.getStatement();
104
+
105
+ statement = statement.validate(context); ///
106
+
107
+ if (statement !== null) {
108
+ statementValidates = true;
109
+ }
110
+
111
+ if (statementValidates) {
112
+ context.debug(`...validated the '${suppositionString}' supposition statement. `);
113
+ }
114
+
115
+ return statementValidates;
116
+ }
117
+
99
118
  validateProcedureCall(context) {
100
119
  let procedureCallValidates = false;
101
120
 
@@ -288,42 +307,37 @@ export default define(class Supposition extends ProofAssertion {
288
307
  }
289
308
 
290
309
  toJSON() {
291
- let context;
292
-
293
- context = this.getContext();
294
-
295
- const ephemeralContext = context, ///
296
- ephemeralContextJSON = ephemeralContextToEphemeralContextJSON(ephemeralContext),
297
- contextJSON = ephemeralContextJSON; ///
310
+ const context = this.getContext();
298
311
 
299
- context = contextJSON; ///
312
+ return serialise((context) => {
313
+ const string = this.getString(),
314
+ json = {
315
+ context,
316
+ string
317
+ };
300
318
 
301
- const string = this.getString(),
302
- json = {
303
- context,
304
- string
305
- };
306
-
307
- return json;
319
+ return json;
320
+ }, context);
308
321
  }
309
322
 
310
323
  static name = "Supposition";
311
324
 
312
325
  static fromJSON(json, context) {
313
- const ephemeralContext = ephemeralContextFromJSON(json, context);
326
+ let supposition;
314
327
 
315
- context = ephemeralContext; ///
328
+ unserialise((json, context) => {
329
+ instantiate((context) => {
330
+ const { string } = json,
331
+ suppositionNode = instantiateSupposition(string, context),
332
+ node = suppositionNode, ///
333
+ statement = statementFromSuppositionNode(suppositionNode, context),
334
+ procedureCall = procedureCallFromSuppositionNode(suppositionNode, context);
316
335
 
317
- return instantiate((context) => {
318
- const { string } = json,
319
- suppositionNode = instantiateSupposition(string, context),
320
- node = suppositionNode, ///
321
- statement = statementFromSuppositionNode(suppositionNode, context),
322
- procedureCall = procedureCallFromSuppositionNode(suppositionNode, context),
323
- supposition = new Supposition(context, string, node, statement, procedureCall);
336
+ supposition = new Supposition(context, string, node, statement, procedureCall);
337
+ }, context);
338
+ }, json, context);
324
339
 
325
- return supposition;
326
- }, context);
340
+ return supposition;
327
341
  }
328
342
  });
329
343
 
@@ -51,28 +51,6 @@ export default class ProofAssertion extends Element {
51
51
  return comparesToStatement;
52
52
  }
53
53
 
54
- validateStatement(context) {
55
- let statementValidates = false;
56
-
57
- const statementString = this.statement.getString(),
58
- proofAssertionString = this.getString(); ///
59
-
60
- context.trace(`Validating the '${proofAssertionString}' proof assertion's '${statementString}' statement... `);
61
-
62
- const stated = this.isStated(),
63
- statement = this.statement.validate(stated, context);
64
-
65
- if (statement !== null) {
66
- statementValidates = true;
67
- }
68
-
69
- if (statementValidates) {
70
- context.debug(`...validated the '${proofAssertionString}' proof assertion's '${statementString}' statement. `);
71
- }
72
-
73
- return statementValidates;
74
- }
75
-
76
54
  unifyStatement(statement, generalContext, specificContext) {
77
55
  let statementUnifies = false;
78
56