occam-verify-cli 1.0.427 → 1.0.436

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 (125) hide show
  1. package/lib/context/file.js +1 -1
  2. package/lib/element/assertion.js +115 -24
  3. package/lib/element/assumption.js +120 -20
  4. package/lib/element/axiomLemmaTheoremConjecture.js +118 -30
  5. package/lib/element/conclusion.js +113 -25
  6. package/lib/element/declaration.js +112 -37
  7. package/lib/element/deduction.js +112 -66
  8. package/lib/element/derivation.js +114 -5
  9. package/lib/element/equality.js +119 -26
  10. package/lib/element/equivalence.js +129 -40
  11. package/lib/element/equivalences.js +122 -7
  12. package/lib/element/error.js +115 -32
  13. package/lib/element/frame.js +119 -59
  14. package/lib/element/hypothesis.js +115 -27
  15. package/lib/element/judgement.js +120 -33
  16. package/lib/element/label.js +116 -63
  17. package/lib/element/lemma.js +1 -9
  18. package/lib/element/metaLemma.js +1 -8
  19. package/lib/element/metaLemmaMetatheorem.js +117 -29
  20. package/lib/element/metaType.js +68 -61
  21. package/lib/element/metatheorem.js +1 -8
  22. package/lib/element/metavariable.js +122 -93
  23. package/lib/element/parameter.js +120 -20
  24. package/lib/element/premise.js +114 -35
  25. package/lib/element/procedureCall.js +117 -99
  26. package/lib/element/procedureReference.js +120 -20
  27. package/lib/element/proof.js +111 -55
  28. package/lib/element/property.js +121 -35
  29. package/lib/element/propertyRelation.js +116 -72
  30. package/lib/element/reference.js +120 -70
  31. package/lib/element/rule.js +116 -41
  32. package/lib/element/section.js +114 -133
  33. package/lib/element/signature.js +120 -20
  34. package/lib/element/statement/combinator/bracketed.js +4 -9
  35. package/lib/element/statement.js +110 -125
  36. package/lib/element/step.js +115 -27
  37. package/lib/element/subDerivation.js +111 -43
  38. package/lib/element/subproof.js +115 -20
  39. package/lib/element/substitution.js +115 -31
  40. package/lib/element/substitutions.js +120 -6
  41. package/lib/element/supposition.js +114 -35
  42. package/lib/element/term/constructor/bracketed.js +4 -8
  43. package/lib/element/term.js +111 -98
  44. package/lib/element/theorem.js +1 -8
  45. package/lib/element/type.js +71 -91
  46. package/lib/element/typePrefix.js +120 -20
  47. package/lib/element/variable.js +116 -111
  48. package/lib/element.js +67 -0
  49. package/lib/node/equivalence.js +116 -0
  50. package/lib/node/{nonsense.js → equivalences.js} +10 -10
  51. package/lib/node/frame.js +11 -5
  52. package/lib/node/procedureReference.js +6 -6
  53. package/lib/node/statement.js +11 -5
  54. package/lib/node/term.js +8 -1
  55. package/lib/nonTerminalNodeMap.js +5 -4
  56. package/lib/process/instantiate.js +13 -38
  57. package/lib/process/verify.js +22 -29
  58. package/lib/ruleNames.js +9 -5
  59. package/lib/utilities/brackets.js +11 -11
  60. package/lib/utilities/element.js +606 -99
  61. package/lib/utilities/instance.js +61 -0
  62. package/lib/utilities/string.js +87 -34
  63. package/package.json +6 -6
  64. package/src/context/file.js +1 -1
  65. package/src/element/assertion.js +4 -16
  66. package/src/element/assumption.js +5 -12
  67. package/src/element/axiomLemmaTheoremConjecture.js +4 -16
  68. package/src/element/conclusion.js +4 -16
  69. package/src/element/declaration.js +4 -16
  70. package/src/element/deduction.js +5 -19
  71. package/src/element/derivation.js +5 -2
  72. package/src/element/equality.js +4 -16
  73. package/src/element/equivalence.js +25 -37
  74. package/src/element/equivalences.js +12 -6
  75. package/src/element/error.js +4 -24
  76. package/src/element/frame.js +5 -56
  77. package/src/element/hypothesis.js +6 -23
  78. package/src/element/judgement.js +5 -30
  79. package/src/element/label.js +8 -19
  80. package/src/element/lemma.js +0 -7
  81. package/src/element/metaLemma.js +0 -7
  82. package/src/element/metaLemmaMetatheorem.js +4 -16
  83. package/src/element/metaType.js +23 -64
  84. package/src/element/metatheorem.js +0 -7
  85. package/src/element/metavariable.js +6 -94
  86. package/src/element/parameter.js +10 -18
  87. package/src/element/premise.js +4 -31
  88. package/src/element/procedureCall.js +5 -77
  89. package/src/element/procedureReference.js +7 -17
  90. package/src/element/proof.js +5 -17
  91. package/src/element/property.js +8 -30
  92. package/src/element/propertyRelation.js +5 -33
  93. package/src/element/reference.js +8 -72
  94. package/src/element/rule.js +4 -41
  95. package/src/element/section.js +4 -129
  96. package/src/element/signature.js +7 -13
  97. package/src/element/statement/combinator/bracketed.js +3 -9
  98. package/src/element/statement.js +3 -126
  99. package/src/element/step.js +4 -16
  100. package/src/element/subDerivation.js +5 -3
  101. package/src/element/subproof.js +5 -12
  102. package/src/element/substitution.js +4 -24
  103. package/src/element/substitutions.js +6 -2
  104. package/src/element/supposition.js +4 -31
  105. package/src/element/term/constructor/bracketed.js +4 -9
  106. package/src/element/term.js +6 -59
  107. package/src/element/theorem.js +0 -7
  108. package/src/element/type.js +9 -104
  109. package/src/element/typePrefix.js +8 -13
  110. package/src/element/variable.js +6 -109
  111. package/src/element.js +29 -0
  112. package/src/node/equivalence.js +16 -0
  113. package/src/node/{nonsense.js → equivalences.js} +2 -2
  114. package/src/node/frame.js +10 -5
  115. package/src/node/procedureReference.js +4 -4
  116. package/src/node/statement.js +10 -5
  117. package/src/node/term.js +7 -0
  118. package/src/nonTerminalNodeMap.js +7 -4
  119. package/src/process/instantiate.js +8 -36
  120. package/src/process/verify.js +42 -47
  121. package/src/ruleNames.js +2 -1
  122. package/src/utilities/brackets.js +13 -13
  123. package/src/utilities/element.js +760 -139
  124. package/src/utilities/instance.js +53 -0
  125. package/src/utilities/string.js +118 -59
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
 
5
6
  import { define } from "../elements";
@@ -9,23 +10,15 @@ import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
9
10
  import { metaTypeFromJSON, metaTypeToMetaTypeJSON } from "../utilities/json";
10
11
  import { unifyMetavariable, unifyMetavariableIntrinsically } from "../process/unify";
11
12
 
12
- export default define(class Metavariable {
13
- constructor(string, node, name, type, metaType) {
14
- this.string = string;
15
- this.node = node;
13
+ export default define(class Metavariable extends Element {
14
+ constructor(context, string, node, name, type, metaType) {
15
+ super(context, string, node);
16
+
16
17
  this.name = name;
17
18
  this.type = type;
18
19
  this.metaType = metaType;
19
20
  }
20
21
 
21
- getString() {
22
- return this.string;
23
- }
24
-
25
- getNode() {
26
- return this.node;
27
- }
28
-
29
22
  getName() {
30
23
  return this.name;
31
24
  }
@@ -62,14 +55,6 @@ export default define(class Metavariable {
62
55
 
63
56
  isMetaTypeEqualTo(metaType) { return this.metaType.isEqualTo(metaType); }
64
57
 
65
- isEqualTo(metavariable) {
66
- const metavariableNode = metavariable.getNode(),
67
- matches = this.node.match(metavariableNode),
68
- equalTo = matches; ///
69
-
70
- return equalTo;
71
- }
72
-
73
58
  verify(context) {
74
59
  let verifies;
75
60
 
@@ -411,80 +396,7 @@ export default define(class Metavariable {
411
396
  node = metavariableNode, ///
412
397
  type = typeFromJSON(json, context),
413
398
  metaType = metaTypeFromJSON(json, context),
414
- metavariable = new Metavariable(string, node, name, type, metaType);
415
-
416
- return metavariable;
417
- }
418
-
419
- static fromLabelNode(labelNode, context) {
420
- const metavariableNode = labelNode.getMetavariableNode(),
421
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
422
-
423
- return metavariable;
424
- }
425
-
426
- static fromFrameNode(frameNode, context) {
427
- let metavariable = null;
428
-
429
- const singularMetavariableNode = frameNode.getSingularMetavariableNode();
430
-
431
- if (singularMetavariableNode !== null) {
432
- const metavariableNode = singularMetavariableNode; ///
433
-
434
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
435
- }
436
-
437
- return metavariable;
438
- }
439
-
440
- static fromReferenceNode(referenceNode, context) {
441
- const metavariableNode = referenceNode.getMetavariableNode(),
442
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
443
-
444
- return metavariable;
445
- }
446
-
447
- static fromStatementNode(statementNode, context) {
448
- let metavariable = null;
449
-
450
- const singularMetavariableNode = statementNode.getSingularMetavariableNode();
451
-
452
- if (singularMetavariableNode !== null) {
453
- const metavariableNode = singularMetavariableNode; ///
454
-
455
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
456
- }
457
-
458
- return metavariable;
459
- }
460
-
461
- static fromAssumptionNode(assumptionNode, context) {
462
- const metavariableNode = assumptionNode.getMetavariableNode(),
463
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
464
-
465
- return metavariable;
466
- }
467
-
468
- static fromMetavariableNode(metavariableNode, context) {
469
- let metavariable = null;
470
-
471
- if (metavariableNode !== null) {
472
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
473
- }
474
-
475
- return metavariable;
476
- }
477
-
478
- static fromMetavariableDeclarationNode(metavariableDeclarationNode, context) {
479
- const { MetaType } = elements,
480
- metavariableNode = metavariableDeclarationNode.getMetavariableNode(),
481
- type = typeFromMetavariableDeclarationNode(metavariableDeclarationNode, context),
482
- metaType = MetaType.fromMetavariableDeclarationNode(metavariableDeclarationNode, context),
483
- metavariable = metavariableFromMetavariableNode(metavariableNode, context);
484
-
485
- metavariable.setType(type);
486
-
487
- metavariable.setMetaType(metaType);
399
+ metavariable = new Metavariable(context, string, node, name, type, metaType);
488
400
 
489
401
  return metavariable;
490
402
  }
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class Parameter {
6
- constructor(name) {
7
+ export default define(class Parameter extends Element {
8
+ constructor(context, string, node, name) {
9
+ super(context, string, node);
10
+
7
11
  this.name = name;
8
12
  }
9
-
13
+
10
14
  getName() {
11
15
  return this.name;
12
16
  }
13
17
 
14
- getString() {
15
- const string = this.name; ///
16
-
17
- return string;
18
- }
19
-
20
18
  findReplacementNode(substitutions) {
21
19
  let replacementNode = null;
22
20
 
@@ -49,15 +47,9 @@ export default define(class Parameter {
49
47
 
50
48
  static fromJSON(json, context) {
51
49
  const { name } = json,
52
- parameter = new Parameter(name);
53
-
54
- return parameter;
55
- }
56
-
57
- static fromParameterNode(parameterNode, context) {
58
- const parameterName = parameterNode.getParameterName(),
59
- name = parameterName, ///
60
- parameter = new Parameter(name);
50
+ string = null,
51
+ node = null,
52
+ parameter = new Parameter(context, string, node, name);
61
53
 
62
54
  return parameter;
63
55
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
  import TemporaryContext from "../context/temporary";
5
6
  import assignAssignments from "../process/assign";
@@ -8,27 +9,14 @@ import { define } from "../elements";
8
9
  import { subproofAssertionFromStatement } from "../utilities/statement";
9
10
  import { termsFromJSON, framesFromJSON, statementFromJSON, procedureCallFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON, procedureCallToProcedureCallJSON } from "../utilities/json";
10
11
 
11
- export default define(class Premise {
12
+ export default define(class Premise extends Element {
12
13
  constructor(context, string, node, statement, procedureCall) {
13
- this.context = context;
14
- this.string = string;
15
- this.node = node;
14
+ super(context, string, node);
15
+
16
16
  this.statement = statement;
17
17
  this.procedureCall = procedureCall;
18
18
  }
19
19
 
20
- getContext() {
21
- return this.context;
22
- }
23
-
24
- getString() {
25
- return this.string;
26
- }
27
-
28
- getNode() {
29
- return this.node;
30
- }
31
-
32
20
  getStatement() {
33
21
  return this.statement;
34
22
  }
@@ -277,19 +265,4 @@ export default define(class Premise {
277
265
 
278
266
  return premise;
279
267
  }
280
-
281
- static fromPremiseNode(premiseNode, context) {
282
- const { Statement, ProcedureCall } = elements,
283
- node = premiseNode, ///
284
- string = context.nodeAsString(node),
285
- statement = Statement.fromPremiseNode(premiseNode, context),
286
- procedureCall = ProcedureCall.fromPremiseNode(premiseNode, context),
287
- temporaryContext = null;
288
-
289
- context = temporaryContext; ///
290
-
291
- const premise = new Premise(context, string, node, statement, procedureCall);
292
-
293
- return premise
294
- }
295
268
  });
@@ -2,27 +2,18 @@
2
2
 
3
3
  import { Expressions } from "occam-furtle";
4
4
 
5
- import elements from "../elements";
5
+ import Element from "../element";
6
6
 
7
7
  import { define } from "../elements";
8
8
  import { parametersFromJSON, procedureReferenceFromJSON, parametersToParametersJSON, procedureReferenceToProcedureReferenceJSON } from "../utilities/json";
9
9
 
10
- export default define(class ProcedureCall {
11
- constructor(string, node, parameters, procedureReference) {
12
- this.string = string;
13
- this.node = node;
10
+ export default define(class ProcedureCall extends Element {
11
+ constructor(context, string, node, parameters, procedureReference) {
12
+ super(context, string, node);
14
13
  this.parameters = parameters;
15
14
  this.procedureReference = procedureReference;
16
15
  }
17
16
 
18
- getString() {
19
- return this.string;
20
- }
21
-
22
- getNode() {
23
- return this.node;
24
- }
25
-
26
17
  getParameters() {
27
18
  return this.parameters;
28
19
  }
@@ -122,71 +113,8 @@ export default define(class ProcedureCall {
122
113
  parameters = parametersFromJSON(json, context),
123
114
  procedureReference = procedureReferenceFromJSON(json, context),
124
115
  string = stringFromProcedureReferenceAndParameters(procedureReference, parameters),
125
- procedureCall = new ProcedureCall(string, node, parameters, procedureReference);
126
-
127
- return procedureCall;
128
- }
129
-
130
- static fromPremiseNode(premiseNode, context) {
131
- let procedureCall = null;
132
-
133
- const procedureCallNode = premiseNode.getProcedureCallNode();
134
-
135
- if (procedureCallNode !== null) {
136
- procedureCall = procedureCallFromProcedureCallNode(procedureCallNode, context);
137
- }
138
-
139
- return procedureCall;
140
- }
141
-
142
- static fromSuppositionNode(suppositionNode, context) {
143
- let procedureCall = null;
144
-
145
- const procedureCallNode = suppositionNode.getProcedureCallNode();
146
-
147
- if (procedureCallNode !== null) {
148
- procedureCall = procedureCallFromProcedureCallNode(procedureCallNode, context);
149
- }
116
+ procedureCall = new ProcedureCall(context, string, node, parameters, procedureReference);
150
117
 
151
118
  return procedureCall;
152
119
  }
153
120
  });
154
-
155
- function procedureCallFromProcedureCallNode(procedureCallNode, context) {
156
- const { ProcedureCall, ProcedureReference } = elements,
157
- node = procedureCallNode, ///
158
- parameters = parametersFromProcedureCallNode(procedureCallNode, context),
159
- procedureReference = ProcedureReference.fromProcedureCallNode(procedureCallNode, context),
160
- string = stringFromProcedureReferenceAndParameters(procedureReference, parameters),
161
- procedureCall = new ProcedureCall(string, node, parameters, procedureReference);
162
-
163
- return procedureCall;
164
- }
165
-
166
- function parametersFromProcedureCallNode(procedureCallNode, context) {
167
- const { Parameter } = elements,
168
- parameterNodes = procedureCallNode.getParameterNodes(),
169
- parameters = parameterNodes.map((parameterNode) => {
170
- const parameter = Parameter.fromParameterNode(parameterNode, context);
171
-
172
- return parameter;
173
- });
174
-
175
- return parameters;
176
- }
177
-
178
- function stringFromProcedureReferenceAndParameters(procedureReference, parameters) {
179
- const name = procedureReference.getName(),
180
- parametersString = parameters.reduce((parametersString, parameter) => {
181
- const parameterString = parameter.getString();
182
-
183
- parametersString = (parametersString === null) ?
184
- parameterString : ///
185
- `${parametersString}, ${parameterString}`;
186
-
187
- return parametersString;
188
- }, null),
189
- string = `${name}(${parametersString})`;
190
-
191
- return string;
192
- }
@@ -1,17 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class ProcedureReference {
6
- constructor(string, name) {
7
- this.string = string;
7
+ export default define(class ProcedureReference extends Element {
8
+ constructor(context, string, node, name) {
9
+ super(context, string, node);
8
10
  this.name = name;
9
11
  }
10
12
 
11
- getString() {
12
- return this.string;
13
- }
14
-
15
13
  getName() {
16
14
  return this.name;
17
15
  }
@@ -30,16 +28,8 @@ export default define(class ProcedureReference {
30
28
  static fromJSON(json, context) {
31
29
  const { name } = json,
32
30
  string = name, ///
33
- procedureReference = new ProcedureReference(string, name);
34
-
35
- return procedureReference;
36
- }
37
-
38
- static fromProcedureCallNode(procedureCallNode, context) {
39
- const procedureName = procedureCallNode.getProcedureName(),
40
- name = procedureName, ///
41
- string = name, ///
42
- procedureReference = new ProcedureReference(string, name);
31
+ node = null,
32
+ procedureReference = new ProcedureReference(context, string, node, name);
43
33
 
44
34
  return procedureReference;
45
35
  }
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import elements from "../elements";
3
+ import Element from "../element";
4
4
  import LocalContext from "../context/local";
5
5
 
6
6
  import { define } from "../elements";
7
7
 
8
- export default define(class Proof {
9
- constructor(derivation) {
8
+ export default define(class Proof extends Element {
9
+ constructor(context, string, node, derivation) {
10
+ super(context, string, node);
11
+
10
12
  this.derivation = derivation;
11
13
  }
12
14
 
@@ -51,18 +53,4 @@ export default define(class Proof {
51
53
  }
52
54
 
53
55
  static name = "Proof";
54
-
55
- static fromProofNode(proofNode, context) {
56
- let proof = null;
57
-
58
- if (proofNode !== null) {
59
- const { Derivation } = elements,
60
- derivationNode = proofNode.getDerivationNode(),
61
- derivation = Derivation.fromDerivationNode(derivationNode, context);
62
-
63
- proof = new Proof(derivation);
64
- }
65
-
66
- return proof;
67
- }
68
56
  });
@@ -1,23 +1,17 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
4
+
3
5
  import { define } from "../elements";
4
6
 
5
- export default define(class Property {
6
- constructor(string, node, name, nominalTypeName) {
7
- this.string = string;
8
- this.node = node;
7
+ export default define(class Property extends Element {
8
+ constructor(context, string, node, name, nominalTypeName) {
9
+ super(context, string, node);
10
+
9
11
  this.name = name;
10
12
  this.nominalTypeName = nominalTypeName;
11
13
  }
12
14
 
13
- getString() {
14
- return this.string;
15
- }
16
-
17
- getNode() {
18
- return this.node;
19
- }
20
-
21
15
  getName() {
22
16
  return this.name;
23
17
  }
@@ -54,24 +48,8 @@ export default define(class Property {
54
48
  static fromJSON(json, context) {
55
49
  const { name, nominalTypeName } = json,
56
50
  string = name, ///
57
- property = new Property(string, name, nominalTypeName);
58
-
59
- return property;
60
- }
61
-
62
- static fromPropertyRelationNode(propertyRelationNode, context) {
63
- const propertyNode = propertyRelationNode.getPropertyNode(),
64
- property = propertyFromPropertyNode(propertyNode, context);
65
-
66
- return property;
67
- }
68
-
69
- static fromPropertyDeclarationNode(propertyDeclarationNode, context) {
70
- const propertyName = propertyDeclarationNode.getPropertyName(),
71
- nominalTypeName = propertyDeclarationNode.getNominalTypeName(),
72
- name = propertyName, ///
73
- string = name, ///
74
- property = new Property(string, name, nominalTypeName);
51
+ node = null,
52
+ property = new Property(context, string, node, name, nominalTypeName);
75
53
 
76
54
  return property;
77
55
  }
@@ -1,25 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import elements from "../elements";
3
+ import Element from "../element";
4
4
 
5
5
  import { define } from "../elements";
6
6
 
7
- export default define(class PropertyRelation {
8
- constructor(string, node, property, term) {
9
- this.string = string;
10
- this.node = node;
7
+ export default define(class PropertyRelation extends Element {
8
+ constructor(context, string, node, property, term) {
9
+ super(context, string, node);
10
+
11
11
  this.property = property;
12
12
  this.term = term;
13
13
  }
14
14
 
15
- getString() {
16
- return this.string;
17
- }
18
-
19
- getNode() {
20
- return this.node;
21
- }
22
-
23
15
  getProperty() {
24
16
  return this.property;
25
17
  }
@@ -28,14 +20,6 @@ export default define(class PropertyRelation {
28
20
  return this.term;
29
21
  }
30
22
 
31
- isEqualTo(propertyRelation) {
32
- const propertyRelationNode = propertyRelation.getNode(),
33
- matches = this.node.match(propertyRelationNode),
34
- equalTo = matches; ///
35
-
36
- return equalTo;
37
- }
38
-
39
23
  verify(context) {
40
24
  let verifies = false;
41
25
 
@@ -113,16 +97,4 @@ export default define(class PropertyRelation {
113
97
  }
114
98
 
115
99
  static name = "PropertyRelation";
116
-
117
- static fromPropertyAssertionNode(propertyAssertionNode, context) {
118
- const { Term, Property } = elements,
119
- propertyRelationNode = propertyAssertionNode.getPropertyRelationNode(),
120
- node = propertyRelationNode, ///
121
- string = context.nodeAsString(node),
122
- property = Property.fromPropertyRelationNode(propertyRelationNode, context),
123
- term = Term.fromPropertyRelationNode(propertyRelationNode, context),
124
- propertyRelation = new PropertyRelation(string, node, property, term);
125
-
126
- return propertyRelation;
127
- }
128
100
  });
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import Element from "../element";
3
4
  import elements from "../elements";
4
5
 
5
6
  import { define } from "../elements";
@@ -7,8 +8,10 @@ import { referenceMetaType } from ".//metaType";
7
8
  import { unifyMetavariableIntrinsically } from "../process/unify";
8
9
  import { metavariableFromJSON, metavariableToMetavariableJSON } from "../utilities/json";
9
10
 
10
- export default define(class Reference {
11
- constructor(metavariable) {
11
+ export default define(class Reference extends Element {
12
+ constructor(context, string, node, metavariable) {
13
+ super(context, string, node);
14
+
12
15
  this.metavariable = metavariable;
13
16
  }
14
17
 
@@ -18,10 +21,6 @@ export default define(class Reference {
18
21
 
19
22
  getName() { return this.metavariable.getName(); }
20
23
 
21
- getName() { return this.metavariable.getName(); }
22
-
23
- getString() { return this.metavariable.getString(); }
24
-
25
24
  getMetavariableName() {
26
25
  const metavariableName = this.metavariable.getName();
27
26
 
@@ -34,14 +33,6 @@ export default define(class Reference {
34
33
  return metavariableNode;
35
34
  }
36
35
 
37
- isEqualTo(refernece) {
38
- const metavariable = refernece.getMetavariable(),
39
- metavariableEqualToMetvariable = this.metavariable.isEqualTo(metavariable),
40
- equalTo = metavariableEqualToMetvariable; ///
41
-
42
- return equalTo;
43
- }
44
-
45
36
  isMetavariableEqualToMetavariable(metavariable) { return this.metavariable.isEqualTo(metavariable); }
46
37
 
47
38
  matchMetavariableName(metavariableName) { return this.metavariable.matchMetavariableName(metavariableName); }
@@ -194,65 +185,10 @@ export default define(class Reference {
194
185
 
195
186
  static fromJSON(json, context) {
196
187
  const metavariable = metavariableFromJSON(json, context),
197
- reference = new Reference(metavariable);
198
-
199
- return reference;
200
- }
201
-
202
- static fromStepNode(stepNode, context) {
203
- let reference = null;
204
-
205
- const referenceNode = stepNode.getReferenceNode();
206
-
207
- if (referenceNode !== null) {
208
- reference = referenceFromReferenceNode(referenceNode, context);
209
- }
210
-
211
- return reference;
212
- }
213
-
214
- static fromAssumptionNode(assumptionNode, context) {
215
- let reference = null;
216
-
217
- const metavariableNode = assumptionNode.getMetavariableNode();
218
-
219
- if (metavariableNode !== null) {
220
- reference = referenceFromMetavariableNode(metavariableNode, context);
221
- }
222
-
223
- return reference;
224
- }
225
-
226
- static fromMetavariableNode(metavariableNode, context) {
227
- const reference = referenceFromMetavariableNode(metavariableNode, context);
228
-
229
- return reference;
230
- }
231
-
232
- static fromProcedureCallNode(procedureCallNode, context) {
233
- let reference = null;
234
-
235
- const referenceNode = procedureCallNode.getReferenceNode();
236
-
237
- if (referenceNode !== null) {
238
- reference = referenceFromReferenceNode(referenceNode, context);
239
- }
240
-
241
- return reference;
242
- }
243
-
244
- static fromSatisfiesAssertionNode(satisfiesAssertionNode, context) {
245
- const metavariableNode = satisfiesAssertionNode.getMetavariableNode(),
246
- reference = referenceFromMetavariableNode(metavariableNode, context);
188
+ string = metavariable.getString(),
189
+ node = metavariable.getNode(),
190
+ reference = new Reference(context, string, node, metavariable);
247
191
 
248
192
  return reference;
249
193
  }
250
194
  });
251
-
252
- function referenceFromMetavariableNode(metavariableNode, context) {
253
- const { Reference, Metavariable } = elements,
254
- metavariable = Metavariable.fromMetavariableNode(metavariableNode, context),
255
- reference = new Reference(metavariable);
256
-
257
- return reference;
258
- }