occam-nominal 1.0.310 → 1.0.317

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/liminal.js +17 -15
  2. package/lib/context/phaneric.js +3 -3
  3. package/lib/context.js +3 -3
  4. package/lib/element/assertion/contained.js +19 -17
  5. package/lib/element/assertion/defined.js +16 -14
  6. package/lib/element/conclusion.js +10 -11
  7. package/lib/element/declaration/variable.js +2 -2
  8. package/lib/element/deduction.js +7 -7
  9. package/lib/element/equality.js +3 -3
  10. package/lib/element/frame.js +8 -3
  11. package/lib/element/goal.js +7 -8
  12. package/lib/element/judgement.js +8 -10
  13. package/lib/element/metavariable.js +44 -40
  14. package/lib/element/proof.js +2 -2
  15. package/lib/element/proofAssertion/premise.js +17 -21
  16. package/lib/element/proofAssertion/step.js +5 -5
  17. package/lib/element/proofAssertion/supposition.js +39 -35
  18. package/lib/element/rule.js +24 -22
  19. package/lib/element/statement.js +56 -32
  20. package/lib/element/substitution/frame.js +71 -62
  21. package/lib/element/substitution/reference.js +21 -21
  22. package/lib/element/substitution/statement.js +81 -98
  23. package/lib/element/substitution/term.js +76 -67
  24. package/lib/element/substitution.js +5 -5
  25. package/lib/element/term.js +2 -2
  26. package/lib/element/topLevelAssertion/axiom.js +4 -5
  27. package/lib/element/topLevelAssertion/conjecture.js +3 -3
  28. package/lib/element/topLevelAssertion/lemma.js +3 -3
  29. package/lib/element/topLevelAssertion/theorem.js +3 -3
  30. package/lib/element/topLevelAssertion.js +59 -69
  31. package/lib/node/metavariable.js +18 -1
  32. package/lib/process/unify.js +5 -7
  33. package/lib/process/validation.js +5 -2
  34. package/lib/utilities/element.js +34 -56
  35. package/package.json +2 -2
  36. package/src/context/liminal.js +18 -16
  37. package/src/context/phaneric.js +3 -3
  38. package/src/context.js +2 -2
  39. package/src/element/assertion/contained.js +19 -18
  40. package/src/element/assertion/defined.js +16 -16
  41. package/src/element/conclusion.js +9 -11
  42. package/src/element/declaration/variable.js +1 -1
  43. package/src/element/deduction.js +6 -6
  44. package/src/element/equality.js +2 -2
  45. package/src/element/frame.js +10 -2
  46. package/src/element/goal.js +6 -8
  47. package/src/element/judgement.js +7 -11
  48. package/src/element/metavariable.js +56 -52
  49. package/src/element/proof.js +1 -1
  50. package/src/element/proofAssertion/premise.js +17 -25
  51. package/src/element/proofAssertion/step.js +4 -4
  52. package/src/element/proofAssertion/supposition.js +44 -43
  53. package/src/element/rule.js +27 -25
  54. package/src/element/statement.js +71 -41
  55. package/src/element/substitution/frame.js +88 -82
  56. package/src/element/substitution/reference.js +30 -32
  57. package/src/element/substitution/statement.js +97 -132
  58. package/src/element/substitution/term.js +95 -89
  59. package/src/element/substitution.js +6 -6
  60. package/src/element/term.js +1 -1
  61. package/src/element/topLevelAssertion/axiom.js +3 -5
  62. package/src/element/topLevelAssertion/conjecture.js +2 -2
  63. package/src/element/topLevelAssertion/lemma.js +2 -2
  64. package/src/element/topLevelAssertion/theorem.js +2 -2
  65. package/src/element/topLevelAssertion.js +61 -80
  66. package/src/node/metavariable.js +28 -1
  67. package/src/process/unify.js +7 -16
  68. package/src/process/validation.js +5 -4
  69. package/src/utilities/element.js +49 -64
@@ -10,7 +10,7 @@ import { stripBracketsFromTerm } from "../../utilities/brackets";
10
10
  import { instantiateTermSubstitution } from "../../process/instantiate";
11
11
  import { termSubstitutionFromTermSubstitutionNode } from "../../utilities/element";
12
12
  import { termSubstitutionStringFromTermAndVariable } from "../../utilities/string";
13
- import { elide, ablates, manifest, attempts, reconcile, instantiate, unserialises } from "../../utilities/context";
13
+ import { elide, ablate, ablates, descend, manifest, attempts, reconcile, instantiate, unserialises } from "../../utilities/context";
14
14
 
15
15
  const { breakPointFromJSON } = breakPointUtilities;
16
16
 
@@ -62,6 +62,13 @@ export default define(class TermSubstitution extends Substitution {
62
62
 
63
63
  matchVariableNode(variableNode) { return this.targetTerm.matchVariableNode(variableNode); }
64
64
 
65
+ compareParameter(parameter) {
66
+ const targetTermComparesToParameter = this.targetTerm.compareParameter(parameter),
67
+ comparesToParameter = targetTermComparesToParameter; ///
68
+
69
+ return comparesToParameter;
70
+ }
71
+
65
72
  compareTerm(term, context) {
66
73
  term = stripBracketsFromTerm(term, context); ///
67
74
 
@@ -71,13 +78,6 @@ export default define(class TermSubstitution extends Substitution {
71
78
  return comparedToTerm;
72
79
  }
73
80
 
74
- compareParameter(parameter) {
75
- const targetTermComparesToParameter = this.targetTerm.compareParameter(parameter),
76
- comparesToParameter = targetTermComparesToParameter; ///
77
-
78
- return comparesToParameter;
79
- }
80
-
81
81
  validate(context, continuatino) {
82
82
  const termSubstitutionString = this.getString(); ///
83
83
 
@@ -90,9 +90,7 @@ export default define(class TermSubstitution extends Substitution {
90
90
 
91
91
  context.debug(`...the '${termSubstitutionString}' term substitution is already valid.`);
92
92
 
93
- continuatino(termSubstitution);
94
-
95
- return;
93
+ return continuatino(termSubstitution);
96
94
  }
97
95
 
98
96
  const generalContext = this.getGeneralContext(),
@@ -102,7 +100,7 @@ export default define(class TermSubstitution extends Substitution {
102
100
  const validateTargetTerm = this.validateTargetTerm.bind(this),
103
101
  validateReplacementTerm = this.validateReplacementTerm.bind(this);
104
102
 
105
- all([
103
+ return all([
106
104
  validateTargetTerm,
107
105
  validateReplacementTerm
108
106
  ], generalContext, specificContext, (validates) => {
@@ -124,7 +122,7 @@ export default define(class TermSubstitution extends Substitution {
124
122
  context.debug(`...validated the '${termSubstitutionString}' term substitution.`);
125
123
  }
126
124
 
127
- continuatino(termSubstitution);
125
+ return continuatino(termSubstitution);
128
126
  });
129
127
  }, generalContext, specificContext);
130
128
  }
@@ -143,28 +141,24 @@ export default define(class TermSubstitution extends Substitution {
143
141
 
144
142
  context.debug(`The '${targetTermString}' target term is not singular.`);
145
143
 
146
- continuatino(targetTermValidates);
147
-
148
- return;
144
+ return continuatino(targetTermValidates);
149
145
  }
150
146
 
151
- manifest((context) => {
152
- elide((context) => {
153
- this.targetTerm.validate(context, (targetTerm) => {
154
- let targetTermValidates = false;
147
+ elide((context) => {
148
+ return this.targetTerm.validate(context, (targetTerm) => {
149
+ let targetTermValidates = false;
155
150
 
156
- if (targetTerm !== null) {
157
- targetTermValidates = true;
158
- }
151
+ if (targetTerm !== null) {
152
+ targetTermValidates = true;
153
+ }
159
154
 
160
- if (targetTermValidates) {
161
- context.debug(`...validated the '${termSubstitutionString}' term substitution's target term...`);
162
- }
155
+ if (targetTermValidates) {
156
+ context.debug(`...validated the '${termSubstitutionString}' term substitution's target term...`);
157
+ }
163
158
 
164
- continuatino(targetTermValidates);
165
- });
166
- }, context);
167
- }, specificContext, context);
159
+ return continuatino(targetTermValidates);
160
+ });
161
+ }, context);
168
162
  }
169
163
 
170
164
  validateReplacementTerm(generalContext, specificContext, continuatino) {
@@ -174,7 +168,7 @@ export default define(class TermSubstitution extends Substitution {
174
168
  context.trace(`Validating the '${termSubstitutionString}' term substitution's replacement term...`);
175
169
 
176
170
  elide((context) => {
177
- this.replacementTerm.validate(context, (replacementTerm) => {
171
+ return this.replacementTerm.validate(context, (replacementTerm) => {
178
172
  let replacementTermValidates = false;
179
173
 
180
174
  if (replacementTerm !== null) {
@@ -185,14 +179,12 @@ export default define(class TermSubstitution extends Substitution {
185
179
  context.debug(`...validated the '${termSubstitutionString}' term substitution's replacement term.`);
186
180
  }
187
181
 
188
- continuatino(replacementTermValidates);
182
+ return continuatino(replacementTermValidates);
189
183
  });
190
184
  }, context);
191
185
  }
192
186
 
193
- unifySubstitution(substitution, context) {
194
- let substitutionUnifies = false;
195
-
187
+ unifySubstitution(substitution, context, continuation) {
196
188
  const generalSubstitution = this, ///
197
189
  specificSubstitution = substitution,
198
190
  generalSubstitutionString = generalSubstitution.getString(),
@@ -201,29 +193,27 @@ export default define(class TermSubstitution extends Substitution {
201
193
  context.trace(`Unifying the '${specificSubstitutionString}' substitution with the '${generalSubstitutionString}' substitution...`);
202
194
 
203
195
  reconcile((context) => {
204
- const replacementTermUnifies = this.unifyReplacementTerm(substitution, context);
205
-
206
- if (replacementTermUnifies) {
207
- const targetTermUnifies = this.unifyTargetTerm(substitution, context);
208
-
209
- if (targetTermUnifies) {
196
+ const unifyTargetTerm = this.unifyTargetTerm.bind(this),
197
+ unifyReplacementTerm = this.unifyReplacementTerm.bind(this);
198
+
199
+ return all([
200
+ unifyReplacementTerm,
201
+ unifyTargetTerm
202
+ ], substitution, context, (substitutionUnifies) => {
203
+ if (substitutionUnifies) {
210
204
  context.commit();
211
-
212
- substitutionUnifies = true;
213
205
  }
214
- }
215
- }, context);
216
206
 
217
- if (substitutionUnifies) {
218
- context.debug(`...unified the '${specificSubstitutionString}' substitution with the '${generalSubstitutionString}' substitution.`);
219
- }
207
+ if (substitutionUnifies) {
208
+ context.debug(`...unified the '${specificSubstitutionString}' substitution with the '${generalSubstitutionString}' substitution.`);
209
+ }
220
210
 
221
- return substitutionUnifies;
211
+ return continuation(substitutionUnifies);
212
+ });
213
+ }, context);
222
214
  }
223
215
 
224
- unifyTargetTerm(substitution, context) {
225
- let targetTermUnifies = false;
226
-
216
+ unifyTargetTerm(substitution, context, continuation) {
227
217
  const generalSubstitution = this, ///
228
218
  specificSubstitution = substitution,
229
219
  generalSubstitutionString = generalSubstitution.getString(),
@@ -241,31 +231,36 @@ export default define(class TermSubstitution extends Substitution {
241
231
  specificTerm = specificSubstitutionTargetTerm; ///
242
232
 
243
233
  reconcile((specificContext) => {
244
- const termNode = generalTerm.getNode(),
234
+ const termNode = generalTerm.getTermNode(),
245
235
  variable = variableFromTermNode(termNode, generalContext);
246
236
 
247
- if (variable !== null) {
248
- const term = specificTerm, ///
249
- termUnifies = variable.unifyTerm(term, generalContext, specificContext);
237
+ if (variable === null) {
238
+ const targetTermUnifies = false;
239
+
240
+ return continuation(targetTermUnifies);
241
+ }
242
+
243
+ const term = specificTerm; ///
244
+
245
+ return variable.unifyTerm(term, generalContext, specificContext, (termUnifies) => {
246
+ let targetTermUnifies = false;
250
247
 
251
248
  if (termUnifies) {
252
249
  specificContext.commit(context);
253
250
 
254
251
  targetTermUnifies = true;
255
252
  }
256
- }
257
- }, specificContext);
258
253
 
259
- if (targetTermUnifies) {
260
- context.trace(`...unified the '${specificSubstitutionString}' substitution's target term with the '${generalSubstitutionString}' substitution's target term.`);
261
- }
254
+ if (targetTermUnifies) {
255
+ context.trace(`...unified the '${specificSubstitutionString}' substitution's target term with the '${generalSubstitutionString}' substitution's target term.`);
256
+ }
262
257
 
263
- return targetTermUnifies;
258
+ return continuation(targetTermUnifies);
259
+ });
260
+ }, specificContext);
264
261
  }
265
262
 
266
- unifyReplacementTerm(substitution, context) {
267
- let replacementTermUnifies = false;
268
-
263
+ unifyReplacementTerm(substitution, context, continuation) {
269
264
  const generalSubstitution = this, ///
270
265
  specificSubstitution = substitution,
271
266
  generalSubstitutionString = generalSubstitution.getString(),
@@ -286,23 +281,30 @@ export default define(class TermSubstitution extends Substitution {
286
281
  const termNode = generalTerm.getNode(),
287
282
  variable = variableFromTermNode(termNode, generalContext);
288
283
 
289
- if (variable !== null) {
290
- const term = specificTerm, ///
291
- termUnifies = variable.unifyTerm(term, generalContext, specificContext);
284
+ if (variable === null) {
285
+ const replacementTermUnifies = false;
286
+
287
+ return continuation(replacementTermUnifies);
288
+ }
289
+
290
+ const term = specificTerm; ///
291
+
292
+ return variable.unifyTerm(term, generalContext, specificContext, (termUnifies) => {
293
+ let replacementTermUnifies = false;
292
294
 
293
295
  if (termUnifies) {
294
296
  specificContext.commit(context);
295
297
 
296
298
  replacementTermUnifies = true;
297
299
  }
298
- }
299
- }, specificContext);
300
300
 
301
- if (replacementTermUnifies) {
302
- context.trace(`...unified the '${specificSubstitutionString}' substitution's replacement term with the '${generalSubstitutionString}' substitution's replacement term.`);
303
- }
301
+ if (replacementTermUnifies) {
302
+ context.trace(`...unified the '${specificSubstitutionString}' substitution's replacement term with the '${generalSubstitutionString}' substitution's replacement term.`);
303
+ }
304
304
 
305
- return replacementTermUnifies;
305
+ return continuation(replacementTermUnifies);
306
+ });
307
+ }, specificContext);
306
308
  }
307
309
 
308
310
  static name = "TermSubstitution";
@@ -334,16 +336,20 @@ export default define(class TermSubstitution extends Substitution {
334
336
  return termSubstitutionn;
335
337
  }
336
338
 
337
- static fromStatement(statement, context) {
339
+ static fromStatementNode(statementNode, context) {
338
340
  let termSubstitution = null;
339
341
 
340
- const termSubstitutionNode = statement.getTermSubstitutionNode();
342
+ const termSubstitutionNode = statementNode.getTermSubstitutionNode();
341
343
 
342
344
  if (termSubstitutionNode !== null) {
343
- const generalContext = context, ///
344
- specificContext = context; ///
345
+ ablate((context) => {
346
+ descend((context) => {
347
+ const generalContext = context, ///
348
+ specificContext = context; ///
345
349
 
346
- termSubstitution = termSubstitutionFromTermSubstitutionNode(termSubstitutionNode, generalContext, specificContext);
350
+ termSubstitution = termSubstitutionFromTermSubstitutionNode(termSubstitutionNode, generalContext, specificContext);
351
+ }, context);
352
+ }, context);
347
353
  }
348
354
 
349
355
  return termSubstitution;
@@ -357,16 +363,16 @@ export default define(class TermSubstitution extends Substitution {
357
363
  let termSubstitution;
358
364
 
359
365
  ablates((generalContext, specificContext) => {
360
- const context = specificContext; ///
361
-
362
- instantiate((context) => {
363
- const specificContext = context, ///
364
- termSubstitutionString = termSubstitutionStringFromTermAndVariable(term, variable),
365
- string = termSubstitutionString, ///
366
- termSubstitutionNode = instantiateTermSubstitution(string, context);
367
-
368
- termSubstitution = termSubstitutionFromTermSubstitutionNode(termSubstitutionNode, generalContext, specificContext);
369
- }, context);
366
+ instantiate((specificContext) => {
367
+ manifest((generalContext) => {
368
+ const termSubstitutionString = termSubstitutionStringFromTermAndVariable(term, variable),
369
+ string = termSubstitutionString, ///
370
+ context = specificContext, ///
371
+ termSubstitutionNode = instantiateTermSubstitution(string, context);
372
+
373
+ termSubstitution = termSubstitutionFromTermSubstitutionNode(termSubstitutionNode, generalContext, specificContext);
374
+ }, generalContext, specificContext);
375
+ }, specificContext);
370
376
  }, generalContext, specificContext);
371
377
 
372
378
  return termSubstitution;
@@ -113,6 +113,12 @@ export default class Substitution extends Element {
113
113
  return equalTo;
114
114
  }
115
115
 
116
+ isSimple() {
117
+ const simple = true;
118
+
119
+ return simple;
120
+ }
121
+
116
122
  isComplex() {
117
123
  const simple = this.isSimple(),
118
124
  complex = !simple;
@@ -181,12 +187,6 @@ export default class Substitution extends Element {
181
187
  return replacementReference;
182
188
  }
183
189
 
184
- isSimple() {
185
- const simple = true;
186
-
187
- return simple;
188
- }
189
-
190
190
  matchVariableNode(variableNode) {
191
191
  const variableNodeMatches = false;
192
192
 
@@ -199,7 +199,7 @@ export default define(class Term extends Element {
199
199
 
200
200
  let term = this;
201
201
 
202
- exists(validateTerms, term, context, (termValidates) => {
202
+ return exists(validateTerms, term, context, (termValidates) => {
203
203
  if (termValidates) {
204
204
  context.addTerm(term);
205
205
 
@@ -35,12 +35,10 @@ export default define(class Axiom extends TopLevelAssertion {
35
35
  if (signatureVerifies) {
36
36
  const verifies = false;
37
37
 
38
- continuation(verifies);
39
-
40
- return;
38
+ return continuation(verifies);
41
39
  }
42
40
 
43
- this.verifyEx(context, (verifies) => {
41
+ return this.verifyEx(context, (verifies) => {
44
42
  if (verifies) {
45
43
  const axiom = this; ///
46
44
 
@@ -49,7 +47,7 @@ export default define(class Axiom extends TopLevelAssertion {
49
47
  context.debug(`...verified the '${axiomString}' axiom.`);
50
48
  }
51
49
 
52
- continuation(verifies);
50
+ return continuation(verifies);
53
51
  });
54
52
  });
55
53
 
@@ -21,7 +21,7 @@ export default define(class Conjecture extends TopLevelAssertion {
21
21
 
22
22
  context.trace(`Verifying the '${conjectureString}' conjecture...`);
23
23
 
24
- this.verifyEx(context, (verifies) => {
24
+ return this.verifyEx(context, (verifies) => {
25
25
  if (verifies) {
26
26
  const conjecture = this; ///
27
27
 
@@ -30,7 +30,7 @@ export default define(class Conjecture extends TopLevelAssertion {
30
30
  context.debug(`...verified the '${conjectureString}' conjecture.`);
31
31
  }
32
32
 
33
- continuation(verifies);
33
+ return continuation(verifies);
34
34
  });
35
35
  });
36
36
 
@@ -23,7 +23,7 @@ export default define(class Lemma extends TopLevelAssertion {
23
23
  context.trace(`Verifying a lemma...`) :
24
24
  context.trace(`Verifying the '${lemmaString}' lemma...`);
25
25
 
26
- this.verifyEx(context, (verifies) => {
26
+ return this.verifyEx(context, (verifies) => {
27
27
  if (verifies) {
28
28
  const lemma = this; ///
29
29
 
@@ -34,7 +34,7 @@ export default define(class Lemma extends TopLevelAssertion {
34
34
  context.debug(`...verified the '${lemmaString}' lemma.`);
35
35
  }
36
36
 
37
- continuation(verifies);
37
+ return continuation(verifies);
38
38
  });
39
39
  });
40
40
 
@@ -21,7 +21,7 @@ export default define(class Theorem extends TopLevelAssertion {
21
21
 
22
22
  context.trace(`Verifying the '${theoremString}' theorem...`);
23
23
 
24
- this.verifyEx(context, (verifies) => {
24
+ return this.verifyEx(context, (verifies) => {
25
25
  if (verifies) {
26
26
  const theorem = this; ///
27
27
 
@@ -30,7 +30,7 @@ export default define(class Theorem extends TopLevelAssertion {
30
30
  context.debug(`...verified the '${theoremString}' theorem.`);
31
31
  }
32
32
 
33
- continuation(verifies);
33
+ return continuation(verifies);
34
34
  });
35
35
  });
36
36