occam-verify-cli 1.0.843 → 1.0.847

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 (87) hide show
  1. package/lib/context/bounded.js +18 -18
  2. package/lib/context/branching.js +8 -3
  3. package/lib/context/ephemeral.js +44 -71
  4. package/lib/context/file/nominal.js +18 -24
  5. package/lib/context/synoptic.js +135 -128
  6. package/lib/context.js +49 -31
  7. package/lib/element/assertion/contained.js +6 -3
  8. package/lib/element/assertion/defined.js +11 -4
  9. package/lib/element/assertion/property.js +6 -3
  10. package/lib/element/assertion/satisfies.js +6 -3
  11. package/lib/element/assertion/subproof.js +6 -3
  12. package/lib/element/assertion/type.js +5 -5
  13. package/lib/element/assumption/metaLevel.js +12 -10
  14. package/lib/element/assumption.js +2 -2
  15. package/lib/element/derivation.js +1 -8
  16. package/lib/element/equality.js +3 -3
  17. package/lib/element/equivalence.js +1 -8
  18. package/lib/element/error.js +1 -8
  19. package/lib/element/hypothesis.js +2 -2
  20. package/lib/element/judgement.js +15 -11
  21. package/lib/element/metaType.js +2 -2
  22. package/lib/element/metavariable.js +30 -35
  23. package/lib/element/parameter.js +2 -2
  24. package/lib/element/procedureCall.js +2 -2
  25. package/lib/element/procedureReference.js +2 -2
  26. package/lib/element/proof.js +1 -8
  27. package/lib/element/proofAssertion/premise.js +4 -3
  28. package/lib/element/proofAssertion/supposition.js +4 -3
  29. package/lib/element/section.js +1 -8
  30. package/lib/element/signature.js +2 -2
  31. package/lib/element/statement.js +2 -2
  32. package/lib/element/subDerivation.js +1 -8
  33. package/lib/element/subproof.js +1 -8
  34. package/lib/element/substitution/frame.js +20 -6
  35. package/lib/element/substitution/reference.js +20 -6
  36. package/lib/element/substitution/statement.js +19 -5
  37. package/lib/element/substitution/term.js +19 -5
  38. package/lib/element/substitution.js +12 -7
  39. package/lib/element/typePrefix.js +2 -2
  40. package/lib/process/unify.js +7 -2
  41. package/lib/utilities/element.js +3 -5
  42. package/lib/utilities/json.js +1 -15
  43. package/lib/utilities/synoptic.js +126 -0
  44. package/package.json +1 -1
  45. package/src/context/bounded.js +23 -23
  46. package/src/context/branching.js +12 -2
  47. package/src/context/ephemeral.js +94 -110
  48. package/src/context/file/nominal.js +18 -34
  49. package/src/context/synoptic.js +195 -150
  50. package/src/context.js +66 -42
  51. package/src/element/assertion/contained.js +8 -3
  52. package/src/element/assertion/defined.js +15 -4
  53. package/src/element/assertion/property.js +8 -3
  54. package/src/element/assertion/satisfies.js +10 -4
  55. package/src/element/assertion/subproof.js +8 -3
  56. package/src/element/assertion/type.js +10 -8
  57. package/src/element/assumption/metaLevel.js +13 -8
  58. package/src/element/assumption.js +2 -2
  59. package/src/element/derivation.js +0 -11
  60. package/src/element/equality.js +3 -3
  61. package/src/element/equivalence.js +0 -11
  62. package/src/element/error.js +0 -11
  63. package/src/element/hypothesis.js +2 -2
  64. package/src/element/judgement.js +22 -14
  65. package/src/element/metaType.js +2 -2
  66. package/src/element/metavariable.js +5 -13
  67. package/src/element/parameter.js +2 -2
  68. package/src/element/procedureCall.js +2 -2
  69. package/src/element/procedureReference.js +2 -2
  70. package/src/element/proof.js +0 -11
  71. package/src/element/proofAssertion/premise.js +3 -1
  72. package/src/element/proofAssertion/supposition.js +3 -1
  73. package/src/element/section.js +0 -11
  74. package/src/element/signature.js +2 -2
  75. package/src/element/statement.js +2 -2
  76. package/src/element/subDerivation.js +0 -11
  77. package/src/element/subproof.js +0 -11
  78. package/src/element/substitution/frame.js +31 -11
  79. package/src/element/substitution/reference.js +31 -11
  80. package/src/element/substitution/statement.js +33 -13
  81. package/src/element/substitution/term.js +31 -11
  82. package/src/element/substitution.js +16 -11
  83. package/src/element/typePrefix.js +2 -2
  84. package/src/process/unify.js +11 -4
  85. package/src/utilities/element.js +3 -6
  86. package/src/utilities/json.js +0 -12
  87. package/src/utilities/synoptic.js +105 -0
@@ -4,215 +4,131 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import Context from "../context";
6
6
 
7
- const { push, last, compress } = arrayUtilities;
7
+ import { compressTerms,
8
+ compressFrames,
9
+ compressEqualities,
10
+ compressJudgements,
11
+ compressAssertions,
12
+ compressStatements,
13
+ compressReferences,
14
+ compressAssumptions,
15
+ compressMetavariables,
16
+ compressSubstitutions,} from "../utilities/synoptic";
17
+
18
+ const { push } = arrayUtilities;
8
19
 
9
20
  export default class SynopticContext extends Context {
10
- constructor(context, contexts) {
21
+ constructor(context, terms, frames, equalities, judgements, assertions, statements, references, assumptions, metavariables, substitutions) {
11
22
  super(context);
12
23
 
13
- this.contexts = contexts;
24
+ this.terms = terms;
25
+ this.frames = frames;
26
+ this.equalities = equalities;
27
+ this.judgements = judgements;
28
+ this.assertions = assertions;
29
+ this.statements = statements;
30
+ this.references = references;
31
+ this.assumptions = assumptions;
32
+ this.metavariables = metavariables;
33
+ this.substitutions = substitutions;
14
34
  }
15
35
 
16
- getContexts() {
17
- return this.contexts;
18
- }
19
-
20
- getTerms() {
21
- const terms = [];
36
+ getTerms(terms = []) {
37
+ push(terms, this.terms);
22
38
 
23
- this.contexts.forEach((context) => {
24
- const contextTerms = context.getTerms();
39
+ this.context.getTerms(terms);
25
40
 
26
- push(terms, contextTerms);
27
- });
28
-
29
- compress(terms, (termA, termB) => {
30
- const termAComparesToTermB = termA.compareTerm(termB);
31
-
32
- if (!termAComparesToTermB) {
33
- return true;
34
- }
35
- });
41
+ compressTerms(terms);
36
42
 
37
43
  return terms;
38
44
  }
39
45
 
40
- getFrames() {
41
- const frames = [];
42
-
43
- this.contexts.forEach((context) => {
44
- const contextFrames = context.getFrames();
46
+ getFrames(frames = []) {
47
+ push(frames, this.frames);
45
48
 
46
- push(frames, contextFrames);
47
- });
49
+ this.context.getFrames(frames);
48
50
 
49
- compress(frames, (frameA, frameB) => {
50
- const frameAEqualToFrameB = frameA.isEqualTo(frameB);
51
-
52
- if (!frameAEqualToFrameB) {
53
- return true;
54
- }
55
- });
51
+ compressFrames(frames);
56
52
 
57
53
  return frames;
58
54
  }
59
55
 
60
- getEqualities() {
61
- const equalities = [];
62
-
63
- this.contexts.forEach((context) => {
64
- const contextEqualities = context.getEqualities();
56
+ getEqualities(equalities = []) {
57
+ push(equalities, this.equalities);
65
58
 
66
- push(equalities, contextEqualities);
67
- });
59
+ this.context.getEqualities(equalities);
68
60
 
69
- compress(equalities, (equalityA, equalityB) => {
70
- const equalityAEqualToEqualityB = equalityA.isEqualTo(equalityB);
71
-
72
- if (!equalityAEqualToEqualityB) {
73
- return true;
74
- }
75
- });
61
+ compressEqualities(equalities);
76
62
 
77
63
  return equalities;
78
64
  }
79
65
 
80
- getJudgements() {
81
- const judgements = [];
82
-
83
- this.contexts.forEach((context) => {
84
- const contextJudgements = context.getJudgements();
66
+ getJudgements(judgements = []) {
67
+ push(judgements, this.judgements);
85
68
 
86
- push(judgements, contextJudgements);
87
- });
69
+ this.context.getJudgements(judgements);
88
70
 
89
- compress(judgements, (judgementA, judgementB) => {
90
- const judgementAEqualToJudgementB = judgementA.isEqualTo(judgementB);
91
-
92
- if (!judgementAEqualToJudgementB) {
93
- return true;
94
- }
95
- });
71
+ compressJudgements(judgements);
96
72
 
97
73
  return judgements;
98
74
  }
99
75
 
100
- getStatements() {
101
- const statements = [];
102
-
103
- this.contexts.forEach((context) => {
104
- const contextStatements = context.getStatements();
76
+ getStatements(statements = []) {
77
+ push(statements, this.statements);
105
78
 
106
- push(statements, contextStatements);
107
- });
79
+ this.context.getStatements(statements);
108
80
 
109
- compress(statements, (statementA, statementB) => {
110
- const statementAEqualToStatementB = statementA.isEqualTo(statementB);
111
-
112
- if (!statementAEqualToStatementB) {
113
- return true;
114
- }
115
- });
81
+ compressStatements(statements);
116
82
 
117
83
  return statements;
118
84
  }
119
85
 
120
- getAssertions() {
121
- const assertions = [];
122
-
123
- this.contexts.forEach((context) => {
124
- const contextAssertions = context.getAssertions();
125
-
126
- push(assertions, contextAssertions);
127
- });
86
+ getAssertions(assertions = []) {
87
+ push(assertions, this.assertions);
128
88
 
129
- compress(assertions, (assertionA, assertionB) => {
130
- const assertionAEqualToAssertionB = assertionA.isEqualTo(assertionB);
89
+ this.context.getAssertions(assertions);
131
90
 
132
- if (!assertionAEqualToAssertionB) {
133
- return true;
134
- }
135
- });
91
+ compressAssertions(assertions);
136
92
 
137
93
  return assertions;
138
94
  }
139
95
 
140
- getReferences() {
141
- const references = [];
142
-
143
- this.contexts.forEach((context) => {
144
- const contextReferences = context.getReferences();
145
-
146
- push(references, contextReferences);
147
- });
96
+ getReferences(references = []) {
97
+ push(references, this.references);
148
98
 
149
- compress(references, (referenceA, referenceB) => {
150
- const referenceAEqualToReferenceB = referenceA.isEqualTo(referenceB);
99
+ this.context.getReferences(references);
151
100
 
152
- if (!referenceAEqualToReferenceB) {
153
- return true;
154
- }
155
- });
101
+ compressReferences(references);
156
102
 
157
103
  return references;
158
104
  }
159
105
 
160
- getAssumptions() {
161
- const assumptions = [];
106
+ getAssumptions(assumptions = []) {
107
+ push(assumptions, this.assumptions);
162
108
 
163
- this.contexts.forEach((context) => {
164
- const contextAssumptions = context.getAssumptions();
109
+ this.context.getAssumptions(assumptions);
165
110
 
166
- push(assumptions, contextAssumptions);
167
- });
168
-
169
- compress(assumptions, (assumptionA, assumptionB) => {
170
- const assumptionAEqualToAssumptionB = assumptionA.isEqualTo(assumptionB);
171
-
172
- if (!assumptionAEqualToAssumptionB) {
173
- return true;
174
- }
175
- });
111
+ compressAssumptions(assumptions);
176
112
 
177
113
  return assumptions;
178
114
  }
179
115
 
180
- getMetavariables() {
181
- const metavariables = [];
182
-
183
- this.contexts.forEach((context) => {
184
- const contextMetavariables = context.getMetavariables();
185
-
186
- push(metavariables, contextMetavariables);
187
- });
116
+ getMetavariables(metavariables = []) {
117
+ push(metavariables, this.metavariables);
188
118
 
189
- compress(metavariables, (metavariableA, metavariableB) => {
190
- const metavariableAEqualToMetavariableB = metavariableA.isEqualTo(metavariableB);
119
+ this.context.getMetavariables(metavariables);
191
120
 
192
- if (!metavariableAEqualToMetavariableB) {
193
- return true;
194
- }
195
- });
121
+ compressMetavariables(metavariables);
196
122
 
197
123
  return metavariables;
198
124
  }
199
125
 
200
- getSubstitutions() {
201
- const substitutions = [];
126
+ getSubstitutions(substitutions = []) {
127
+ push(substitutions, this.substitutions);
202
128
 
203
- this.contexts.forEach((context) => {
204
- const contextSubstitutions = context.getSubstitutions();
129
+ this.context.getSubstitutions(substitutions);
205
130
 
206
- push(substitutions, contextSubstitutions);
207
- });
208
-
209
- compress(substitutions, (substitutionA, substitutionB) => {
210
- const substitutionAEqualToSubstitutionB = substitutionA.isEqualTo(substitutionB);
211
-
212
- if (!substitutionAEqualToSubstitutionB) {
213
- return true;
214
- }
215
- });
131
+ compressSubstitutions(substitutions);
216
132
 
217
133
  return substitutions;
218
134
  }
@@ -361,10 +277,139 @@ export default class SynopticContext extends Context {
361
277
  }
362
278
 
363
279
  static fromContexts(...contexts) {
364
- const lastContext = last(contexts),
365
- context = lastContext, ///
366
- synopticContext = new SynopticContext(context, contexts);
280
+ const context = contexts.pop(), ///
281
+ terms = termsFromContexts(contexts),
282
+ frames = framesFromContexts(contexts),
283
+ equalities = equalitiesFromContexts(contexts),
284
+ judgements = judgementsFromContexts(contexts),
285
+ assertions = assertionsFromContexts(contexts),
286
+ statements = statementsFromContexts(contexts),
287
+ references = referencesFromContexts(contexts),
288
+ assumptions = assumptionsFromContexts(contexts),
289
+ metavariables = metavariablesFromContexts(contexts),
290
+ substitutions = substitutionsFromContexts(contexts),
291
+ synopticContext = new SynopticContext(context, terms, frames, equalities, judgements, assertions, statements, references, assumptions, metavariables, substitutions);
367
292
 
368
293
  return synopticContext;
369
294
  }
370
295
  }
296
+
297
+ function termsFromContexts(contexts) {
298
+ const terms = [];
299
+
300
+ contexts.forEach((context) => {
301
+ context.getTerms(terms);
302
+ });
303
+
304
+ compressTerms(terms);
305
+
306
+ return terms;
307
+ }
308
+
309
+ function framesFromContexts(contexts) {
310
+ const frames = [];
311
+
312
+ contexts.forEach((context) => {
313
+ context.getFrames(frames);
314
+ });
315
+
316
+ compressFrames(frames);
317
+
318
+ return frames;
319
+ }
320
+
321
+ function equalitiesFromContexts(contexts) {
322
+ const equalities = [];
323
+
324
+ contexts.forEach((context) => {
325
+ context.getEqualities(equalities);
326
+ });
327
+
328
+ compressEqualities(equalities);
329
+
330
+ return equalities;
331
+ }
332
+
333
+ function judgementsFromContexts(contexts) {
334
+ const judgements = [];
335
+
336
+ contexts.forEach((context) => {
337
+ context.getJudgements(judgements);
338
+ });
339
+
340
+ compressJudgements(judgements);
341
+
342
+ return judgements;
343
+ }
344
+
345
+ function assertionsFromContexts(contexts) {
346
+ const assertions = [];
347
+
348
+ contexts.forEach((context) => {
349
+ context.getAssertions(assertions);
350
+ });
351
+
352
+ compressAssertions(assertions);
353
+
354
+ return assertions;
355
+ }
356
+
357
+ function statementsFromContexts(contexts) {
358
+ const statements = [];
359
+
360
+ contexts.forEach((context) => {
361
+ context.getStatements(statements);
362
+ });
363
+
364
+ compressStatements(statements);
365
+
366
+ return statements;
367
+ }
368
+
369
+ function referencesFromContexts(contexts) {
370
+ const references = [];
371
+
372
+ contexts.forEach((context) => {
373
+ context.getReferences(references);
374
+ });
375
+
376
+ compressReferences(references);
377
+
378
+ return references;
379
+ }
380
+
381
+ function assumptionsFromContexts(contexts) {
382
+ const assumptions = [];
383
+
384
+ contexts.forEach((context) => {
385
+ context.getAssumptions(assumptions);
386
+ });
387
+
388
+ compressAssumptions(assumptions);
389
+
390
+ return assumptions;
391
+ }
392
+
393
+ function metavariablesFromContexts(contexts) {
394
+ const metavariables = [];
395
+
396
+ contexts.forEach((context) => {
397
+ context.getMetavariables(metavariables);
398
+ });
399
+
400
+ compressMetavariables(metavariables);
401
+
402
+ return metavariables;
403
+ }
404
+
405
+ function substitutionsFromContexts(contexts) {
406
+ const substitutions = [];
407
+
408
+ contexts.forEach((context) => {
409
+ context.getSubstitutions(substitutions);
410
+ });
411
+
412
+ compressSubstitutions(substitutions);
413
+
414
+ return substitutions;
415
+ }
package/src/context.js CHANGED
@@ -24,72 +24,82 @@ export default class Context extends ContextBase {
24
24
  return filePath;
25
25
  }
26
26
 
27
- getTerms() {
28
- const context = this.getContext(),
29
- terms = context.getTerms();
27
+ getTerms(terms = []) {
28
+ const context = this.getContext();
29
+
30
+ context.getTerms(terms);
30
31
 
31
32
  return terms;
32
33
  }
33
34
 
34
- getFrames() {
35
- const context = this.getContext(),
36
- frames = context.getFrames();
35
+ getFrames(frames = []) {
36
+ const context = this.getContext();
37
+
38
+ context.getFrames(frames);
37
39
 
38
40
  return frames;
39
41
  }
40
42
 
41
- getJudgements() {
42
- const context = this.getContext(),
43
- judgements = context.getJudgements();
43
+ getJudgements(judgements = []) {
44
+ const context = this.getContext();
45
+
46
+ context.getJudgements(judgements);
44
47
 
45
48
  return judgements;
46
49
  }
47
50
 
48
- getEqualities() {
49
- const context = this.getContext(),
50
- equalities = context.getEqualities();
51
+ getEqualities(equalities = []) {
52
+ const context = this.getContext();
53
+
54
+ context.getEqualities(equalities);
51
55
 
52
56
  return equalities;
53
57
  }
54
58
 
55
- getStatements() {
56
- const context = this.getContext(),
57
- statements = context.getStatements();
59
+ getStatements(statements = []) {
60
+ const context = this.getContext();
61
+
62
+ context.getStatements(statements);
58
63
 
59
64
  return statements;
60
65
  }
61
66
 
62
- getAssertions() {
63
- const context = this.getContext(),
64
- assertions = context.getAssertions();
67
+ getAssertions(assertions = []) {
68
+ const context = this.getContext();
69
+
70
+ context.getAssertions(assertions);
65
71
 
66
72
  return assertions;
67
73
  }
68
74
 
69
- getReferences() {
70
- const context = this.getContext(),
71
- references = context.getReferences();
75
+ getReferences(references = []) {
76
+ const context = this.getContext();
77
+
78
+ context.getReferences(references);
72
79
 
73
80
  return references;
74
81
  }
75
82
 
76
- getAssumptions() {
77
- const context = this.getContext(),
78
- assumptions = context.getAssumptions();
83
+ getAssumptions(assumptions = []) {
84
+ const context = this.getContext();
85
+
86
+ context.getAssumptions(assumptions);
79
87
 
80
88
  return assumptions;
81
89
  }
82
90
 
83
- getMetavariables() {
84
- const context = this.getContext(),
85
- metavariables = context.getMetavariables();
91
+ getMetavariables(metavariables = []) {
92
+ const context = this.getContext();
93
+
94
+ context.getMetavariables(metavariables);
86
95
 
87
96
  return metavariables;
88
97
  }
89
98
 
90
- getSubstitutions() {
91
- const context = this.getContext(),
92
- substitutions = context.getSubstitutions();
99
+ getSubstitutions(substitutions = []) {
100
+ const context = this.getContext();
101
+
102
+ context.getSubstitutions(substitutions);
93
103
 
94
104
  return substitutions;
95
105
  }
@@ -115,20 +125,27 @@ export default class Context extends ContextBase {
115
125
  return constructors;
116
126
  }
117
127
 
118
- getDeclaredVariables(includeRelease) {
128
+ getDeclaredVariables() {
119
129
  const context = this.getContext(),
120
- declaredVariables = context.getDeclaredVariables(includeRelease);
130
+ declaredVariables = context.getDeclaredVariables();
121
131
 
122
132
  return declaredVariables;
123
133
  }
124
134
 
125
- getDeclaredMetavariables(includeRelease) {
135
+ getDeclaredMetavariables() {
126
136
  const context = this.getContext(),
127
- declaredMetavariables = context.getDeclaredMetavariables(includeRelease);
137
+ declaredMetavariables = context.getDeclaredMetavariables();
128
138
 
129
139
  return declaredMetavariables;
130
140
  }
131
141
 
142
+ getDeclaredJudgements() {
143
+ const context = this.getContext(),
144
+ declaredJudgements = context.getDeclaredJudgements();
145
+
146
+ return declaredJudgements;
147
+ }
148
+
132
149
  getSubproofOrProofAssertions() {
133
150
  const context = this.getContext(),
134
151
  subproofOrProofAssertions = context.getSubproofOrProofAssertions();
@@ -260,6 +277,13 @@ export default class Context extends ContextBase {
260
277
  return substitution;
261
278
  }
262
279
 
280
+ findDeclaredJudgementsByMetavariableNode(metavariableNode) {
281
+ const context = this.getContext(),
282
+ declaredJudgements = context.findDeclaredJudgementsByMetavariableNode(metavariableNode);
283
+
284
+ return declaredJudgements;
285
+ }
286
+
263
287
  findMetaLevelAssumptionByMetaLevelAssumptionNode(metaLevelAssumptionNode) {
264
288
  const context = this.getContext(),
265
289
  metaLevelAssumption = context.findMetaLevelAssumptionByMetaLevelAssumptionNode(metaLevelAssumptionNode);
@@ -303,9 +327,9 @@ export default class Context extends ContextBase {
303
327
  return substitution;
304
328
  }
305
329
 
306
- findTypeByTypeName(metaTypeName) {
330
+ findTypeByTypeName(typeName) {
307
331
  const context = this.getContext(),
308
- type = context.findTypeByTypeName(metaTypeName);
332
+ type = context.findTypeByTypeName(typeName);
309
333
 
310
334
  return type;
311
335
  }
@@ -461,18 +485,18 @@ export default class Context extends ContextBase {
461
485
  return referencePresent;
462
486
  }
463
487
 
464
- isJudgementPresentByMetavariableNode(metavariableNode) {
488
+ isSubstitutionPresentByMetavariableNode(metavariableNode) {
465
489
  const context = this.getContext(),
466
- judgementPresent = context.isJudgementPresentByMetavariableNode(metavariableNode);
490
+ substitutionPresent = context.isSubstitutionPresentByMetavariableNode(metavariableNode);
467
491
 
468
- return judgementPresent;
492
+ return substitutionPresent;
469
493
  }
470
494
 
471
- isSubstitutionPresentByMetavariableNode(metavariableNode) {
495
+ isDeclaredJudgementPresentByMetavariableNode(metavariableNode) {
472
496
  const context = this.getContext(),
473
- substitutionPresent = context.isSubstitutionPresentByMetavariableNode(metavariableNode);
497
+ declaredJudgementPresent = context.isDeclaredJudgementPresentByMetavariableNode(metavariableNode);
474
498
 
475
- return substitutionPresent;
499
+ return declaredJudgementPresent;
476
500
  }
477
501
 
478
502
  isSubstitutionPresentByMetavariableNodeAndSubstitution(metavariableNode, substitution) {
@@ -243,14 +243,19 @@ export default define(class ContainedAssertion extends Assertion {
243
243
  return unifiesIndependently;
244
244
  }
245
245
 
246
+ static name = "ContainedAssertion";
247
+
246
248
  toJSON() {
247
- const json = super.toJSON();
249
+ const string = this.getString(),
250
+ lineIndex = this.getLineIndex(),
251
+ json = {
252
+ string,
253
+ lineIndex
254
+ };
248
255
 
249
256
  return json;
250
257
  }
251
258
 
252
- static name = "ContainedAssertion";
253
-
254
259
  static fromJSON(json, context) {
255
260
  let containedAssertion = null;
256
261
 
@@ -213,6 +213,17 @@ export default define(class DefinedAssertion extends Assertion {
213
213
 
214
214
  static name = "DefinedAssertion";
215
215
 
216
+ toJSON() {
217
+ const string = this.getString(),
218
+ lineIndex = this.getLineIndex(),
219
+ json = {
220
+ string,
221
+ lineIndex
222
+ };
223
+
224
+ return json;
225
+ }
226
+
216
227
  static fromJSON(json, context) {
217
228
  let definedAssertion = null;
218
229
 
@@ -220,7 +231,7 @@ export default define(class DefinedAssertion extends Assertion {
220
231
 
221
232
  if (this.name === name) {
222
233
  instantiate((context) => {
223
- const { string } = json,
234
+ const { string, lineIndex } = json,
224
235
  definedAssertionNode = instantiateDefinedAssertion(string, context),
225
236
  node = definedAssertionNode, ///
226
237
  term = termFromJDefinedAssertionNode(definedAssertionNode, context),
@@ -229,7 +240,7 @@ export default define(class DefinedAssertion extends Assertion {
229
240
 
230
241
  context = null;
231
242
 
232
- definedAssertion = new DefinedAssertion(context, string, node, term, frame, negated);
243
+ definedAssertion = new DefinedAssertion(context, string, node, lineIndex, term, frame, negated);
233
244
  }, context);
234
245
  }
235
246
 
@@ -301,8 +312,8 @@ function isVariableDefined(variable, context) {
301
312
 
302
313
  function isMetavariableDefined(metavariable, context) {
303
314
  const metavariableNode = metavariable.getNode(),
304
- judgementPresent = context.isJudgementPresentByMetavariableNode(metavariableNode),
305
- metavariableDefined = judgementPresent; ///
315
+ declaredJudgementPresent = context.isDeclaredJudgementPresentByMetavariableNode(metavariableNode),
316
+ metavariableDefined = declaredJudgementPresent; ///
306
317
 
307
318
  return metavariableDefined
308
319
  }