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
@@ -2,29 +2,20 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import elements from "../elements";
5
+ import Element from "../element";
6
6
  import verifyMixins from "../mixins/term/verify";
7
7
 
8
8
  import { define } from "../elements";
9
9
  import { instantiateTerm } from "../process/instantiate";
10
- import { termFromTermNode } from "../utilities/node.old";
11
10
  import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
12
11
 
13
12
  const { filter, compress } = arrayUtilities;
14
13
 
15
- export default define(class Term {
16
- constructor(string, node, type) {
17
- this.string = string;
18
- this.node = node;
19
- this.type = type;
20
- }
21
-
22
- getString() {
23
- return this.string;
24
- }
14
+ export default define(class Term extends Element {
15
+ constructor(context, string, node, type) {
16
+ super(context, string, node);
25
17
 
26
- getNode() {
27
- return this.node;
18
+ this.type = type;
28
19
  }
29
20
 
30
21
  getType() {
@@ -180,51 +171,7 @@ export default define(class Term {
180
171
  termNode = instantiateTerm(string, context),
181
172
  node = termNode, ///
182
173
  type = typeFromJSON(json, context),
183
- term = new Term(string, node, type);
184
-
185
- return term;
186
- }
187
-
188
- static fromTermNode(termNode, context) {
189
- const term = termFromTermNode(termNode, context);
190
-
191
- return term;
192
- }
193
-
194
- static fromTermNodeAndType(termNode, type, context) {
195
- const node = termNode, ///
196
- string = context.nodeAsString(node),
197
- term = new Term(string, node, type);
198
-
199
- return term;
200
- }
201
-
202
- static fromDefinedAssertionNode(definedAssertionNode, context) {
203
- let term = null;
204
-
205
- const termNode = definedAssertionNode.getTermNode();
206
-
207
- if (termNode !== null) {
208
- term = termFromTermNode(termNode, context);
209
- }
210
-
211
- return term;
212
- }
213
-
214
- static fromPropertyRelationNode(propertyRelationNode, context) {
215
- const termNode = propertyRelationNode.getTermNode(),
216
- term = termFromTermNode(termNode, context);
217
-
218
- return term;
219
- }
220
-
221
- static fromConstructorDeclarationNode(constructorDeclarationNode, context) {
222
- const { Type } = elements,
223
- termNode = constructorDeclarationNode.getTermNode(),
224
- term = termFromTermNode(termNode, context),
225
- type = Type.fromConstructorDeclarationNode(constructorDeclarationNode, context);
226
-
227
- term.setType(type);
174
+ term = new Term(context, string, node, type);
228
175
 
229
176
  return term;
230
177
  }
@@ -30,11 +30,4 @@ export default define(class Theorem extends AxiomLemmaTheoremConjecture {
30
30
  static name = "Theorem";
31
31
 
32
32
  static fromJSON(json, context) { return AxiomLemmaTheoremConjecture.fromJSON(Theorem, json, context); }
33
-
34
- static fromTheoremNode(theoremNode, context) {
35
- const node = theoremNode, ///
36
- theorem = AxiomLemmaTheoremConjecture.fromNode(Theorem, node, context);
37
-
38
- return theorem;
39
- }
40
33
  });
@@ -2,18 +2,18 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
+ import Element from "../element";
6
+
5
7
  import { define } from "../elements";
6
8
  import { BASE_TYPE_SYMBOL } from "../constants";
7
- import { typeFromTypeNode } from "../utilities/node.old";
8
9
  import { typeStringFromTypeNameTypePrefixNameAndSuperTypes } from "../utilities/string";
9
10
  import { superTypesFromJSON, propertiesFromJSON, superTypesToSuperTypesJSON, propertiesToPropertiesJSON } from "../utilities/json";
10
11
 
11
12
  const { push, first } = arrayUtilities;
12
13
 
13
- class Type {
14
- constructor(string, node, name, prefixName, superTypes, properties, provisional) {
15
- this.string = string;
16
- this.node = node;
14
+ class Type extends Element {
15
+ constructor(context, string, node, name, prefixName, superTypes, properties, provisional) {
16
+ super(context, string, node);
17
17
  this.name = name;
18
18
  this.prefixName = prefixName;
19
19
  this.superTypes = superTypes;
@@ -21,14 +21,6 @@ class Type {
21
21
  this.provisional = provisional;
22
22
  }
23
23
 
24
- getString() {
25
- return this.string;
26
- }
27
-
28
- getNode() {
29
- return this.node;
30
- }
31
-
32
24
  getName() {
33
25
  return this.name;
34
26
  }
@@ -310,78 +302,8 @@ class Type {
310
302
  typeName = name, ///
311
303
  typePrefixName = null,
312
304
  string = typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixName, superTypes),
313
- type = new Type(string, node, name, prefixName, superTypes, properties, provisional);
314
-
315
- return type;
316
- }
317
-
318
- static fromTypeNode(typeNode, context) {
319
- const type = typeFromTypeNode(typeNode, context);
320
-
321
- return type;
322
- }
323
-
324
- static fromSuperTypeNode(superTypeNode, context) {
325
- context = null; ///
326
-
327
- const typeNode = superTypeNode, ///
328
- type = typeFromTypeNode(typeNode, context);
329
-
330
- return type;
331
- }
332
-
333
- static fromTypeAndProvisional(type, provisional) {
334
- const name = type.getName(),
335
- prefixName = type.getPrefixName(),
336
- superType = type, ///
337
- typeName = name, ///
338
- typePrefixName = prefixName, ///
339
- superTypes = [
340
- superType
341
- ],
342
- string = typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixName, superTypes),
343
- properties = type.getProperties();
344
-
345
- type = new Type(string, node, name, prefixName, superTypes, properties, provisional); ///
346
-
347
- return type;
348
- }
349
-
350
- static fromPropertyDeclarationNode(propertyDeclarationNode, context) {
351
- const typeNode = propertyDeclarationNode.getTypeNode(),
352
- type = typeFromTypeNode(typeNode, context);
353
-
354
- return type;
355
- }
356
-
357
- static fromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, context) {
358
- const typeName = simpleTypeDeclarationNode.getTypeName(),
359
- provisional = simpleTypeDeclarationNode.isProvisional(),
360
- typePrefixName = simpleTypeDeclarationNode.getTypePrefixName(),
361
- superTypes = superTypesFromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, context),
362
- name = typeName, ///
363
- prefixName = typePrefixName, ///
364
- properties = [],
365
- string = typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixName, superTypes),
366
- type = new Type(string, node, name, prefixName, superTypes, properties, provisional);
367
-
368
- return type;
369
- }
370
-
371
- static fromConstructorDeclarationNode(constructorDeclarationNode, context) {
372
- let type;
373
-
374
- const typeNode = constructorDeclarationNode.getTypeNode();
375
-
376
- if (typeNode === null) {
377
- type = baseType;
378
- } else {
379
- const provisional = constructorDeclarationNode.isProvisional();
380
-
381
- type = typeFromTypeNode(typeNode, context);
382
-
383
- type.setProvisional(provisional);
384
- }
305
+ node = null,
306
+ type = new Type(context, string, node, name, prefixName, superTypes, properties, provisional);
385
307
 
386
308
  return type;
387
309
  }
@@ -389,34 +311,17 @@ class Type {
389
311
 
390
312
  export default define(Type);
391
313
 
392
- function superTypesFromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, context) {
393
- const superTypeNodes = simpleTypeDeclarationNode.getSuperTypeNodes(),
394
- superTypes = superTypeNodes.map((superTypeNode) => {
395
- const superType = Type.fromSuperTypeNode(superTypeNode, context);
396
-
397
- return superType;
398
- }),
399
- superTypesLength = superTypes.length;
400
-
401
- if (superTypesLength === 0) {
402
- const superType = baseType; ///
403
-
404
- superTypes.push(superType);
405
- }
406
-
407
- return superTypes;
408
- }
409
-
410
314
  class BaseType extends Type {
411
315
  static fromNothing() {
412
316
  const name = BASE_TYPE_SYMBOL, ///
317
+ context = null,
413
318
  string = name, ///
414
319
  node = null,
415
320
  prefixName = null,
416
321
  superTypes = [],
417
322
  properties = [],
418
323
  provisional = false,
419
- baseType = new BaseType(string, node, name, prefixName, superTypes, properties, provisional);
324
+ baseType = new BaseType(context, string, node, name, prefixName, superTypes, properties, provisional);
420
325
 
421
326
  return baseType;
422
327
  }
@@ -1,20 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import { define } from "../elements";
3
+ import Element from "../element";
4
4
 
5
- export default define(class TypePrefix {
6
- constructor(string, node, name) {
7
- this.string = string;
8
- this.node = node;
9
- this.name = name;
10
- }
5
+ import { define } from "../elements";
11
6
 
12
- getString() {
13
- return this.string;
14
- }
7
+ export default define(class TypePrefix extends Element {
8
+ constructor(context, string, node, name) {
9
+ super(context, string, node);
15
10
 
16
- getNode() {
17
- return this.node;
11
+ this.name = name;
18
12
  }
19
13
 
20
14
  getName() {
@@ -41,7 +35,8 @@ export default define(class TypePrefix {
41
35
  static fromJSON(json, context) {
42
36
  const { name } = json,
43
37
  string = name, ///
44
- typePrefix = new TypePrefix(string, name);
38
+ node = null,
39
+ typePrefix = new TypePrefix(context, string, node, name);
45
40
 
46
41
  return typePrefix;
47
42
  }
@@ -1,30 +1,21 @@
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";
6
- import { EMPTY_STRING } from "../constants";
7
- import { typeFromTypeNode } from "../utilities/node.old";
8
7
  import { instantiateVariable } from "../process/instantiate";
9
8
  import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
10
9
 
11
- export default define(class Variable {
12
- constructor(string, node, type, identifier, propertyRelations) {
13
- this.string = string;
14
- this.node = node;
10
+ export default define(class Variable extends Element {
11
+ constructor(context, string, node, type, identifier, propertyRelations) {
12
+ super(context, string, node);
13
+
15
14
  this.type = type;
16
15
  this.identifier = identifier;
17
16
  this.propertyRelations = propertyRelations;
18
17
  }
19
18
 
20
- getString() {
21
- return this.string;
22
- }
23
-
24
- getNode() {
25
- return this.node;
26
- }
27
-
28
19
  getIdentifier() {
29
20
  return this.identifier;
30
21
  }
@@ -43,14 +34,6 @@ export default define(class Variable {
43
34
 
44
35
  getTypeString() { return this.type.getString(); }
45
36
 
46
- isEqualTo(variable) {
47
- const variableNode = variable.getNode(),
48
- matches = this.node.match(variableNode),
49
- equalTo = matches; ///
50
-
51
- return equalTo;
52
- }
53
-
54
37
  matchParameter(parameter) {
55
38
  const parameterName = parameter.getName(),
56
39
  parameterNameMatchesIdentifier = (parameterName === this.identifier),
@@ -197,94 +180,8 @@ export default define(class Variable {
197
180
  identifier = variableIdentifier, ///
198
181
  type = typeFromJSON(json, context),
199
182
  propertyRelations = [],
200
- variable = new Variable(string, node, type, identifier, propertyRelations);
201
-
202
- return variable;
203
- }
204
-
205
- static fromTermNode(termNode, context) {
206
- let variable = null;
207
-
208
- const singularVariableNode = termNode.getSingularVariableNode();
209
-
210
- if (singularVariableNode !== null) {
211
- const variableNode = singularVariableNode, ///
212
- type = null;
213
-
214
- variable = variableFromVariableNodeAndType(variableNode, type);
215
- }
216
-
217
- return variable;
218
- }
219
-
220
- static fromVariableNode(variableNode, context) {
221
- let variable = null;
222
-
223
- if (variableNode !== null) {
224
- const type = null;
225
-
226
- variable = variableFromVariableNodeAndType(variableNode, type);
227
- }
228
-
229
- return variable;
230
- }
231
-
232
- static fromVariableNodeAndType(variableNode, type, context) {
233
- const variable = variableFromVariableNodeAndType(variableNode, type);
234
-
235
- return variable;
236
- }
237
-
238
- static fromVariableDeclarationNode(variableDeclarationNode, context) {
239
- const { Variable } = elements,
240
- provisional = variableDeclarationNode.isProvisional(),
241
- typeNode = variableDeclarationNode.getTypeNode(),
242
- type = typeFromTypeNode(typeNode, context);
243
-
244
- type.setProvisional(provisional);
245
-
246
- const variableNode = variableDeclarationNode.getVariableNode(),
247
- variableIdentifier = variableDeclarationNode.getVariableIdentifier(),
248
- node = variableNode, ///
249
- identifier = variableIdentifier, ///
250
- string = identifier, ///
251
- propertyRelations = [],
252
- variable = new Variable(string, node, type, identifier, propertyRelations);
253
-
254
- return variable;
255
- }
256
-
257
- static fromVariableAndPropertyRelation(variable, propertyRelation, context) {
258
- let propertyRelations;
259
-
260
- const node = variable.getNode(),
261
- type = variable.getType(),
262
- identifier = variable.getIdentifier();
263
-
264
- propertyRelations = variable.getPropertyRelations();
265
-
266
- propertyRelations = [
267
- ...propertyRelations,
268
- propertyRelation
269
- ];
270
-
271
- const string = stringFromNameAndPropertyRelations(identifier, propertyRelations);
272
-
273
- variable = new Variable(string, node, type, identifier, propertyRelations);
183
+ variable = new Variable(context, string, node, type, identifier, propertyRelations);
274
184
 
275
185
  return variable;
276
186
  }
277
187
  });
278
-
279
- function stringFromNameAndPropertyRelations(identifier, propertyRelations) {
280
- const propertyRelationsString = propertyRelations.reduce((propertyRelationsString, propertyRelation) => {
281
- const propertyRelationString = propertyRelation.getString();
282
-
283
- propertyRelationsString = `${propertyRelationsString}, ${propertyRelationString}`;
284
-
285
- return propertyRelationsString;
286
- }, EMPTY_STRING),
287
- string = `${identifier}${propertyRelationsString}`;
288
-
289
- return string;
290
- }
package/src/element.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ export default class Element {
4
+ constructor(context, string, node) {
5
+ this.context = context;
6
+ this.string = string;
7
+ this.node = node;
8
+ }
9
+
10
+ getContext() {
11
+ return this.context;
12
+ }
13
+
14
+ getString() {
15
+ return this.string;
16
+ }
17
+
18
+ getNode() {
19
+ return this.node;
20
+ }
21
+
22
+ isEQualTo(element) {
23
+ const elementNode = element.getNode(),
24
+ matches = this.node.match(elementNode),
25
+ equalTo = matches; ///
26
+
27
+ return equalTo;
28
+ }
29
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../nonTerminalNode";
4
+
5
+ import { TERM_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class EquivalenceNode extends NonTerminalNode {
8
+ getTermNodes() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNodes = this.getNodesByRuleName(ruleName);
11
+
12
+ return termNodes;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(EquivalenceNode, ruleName, childNodes, opacity, precedence); }
16
+ }
@@ -2,6 +2,6 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- export default class NonsenseNode extends NonTerminalNode {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(NonsenseNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class EquivalencesNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(EquivalencesNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
package/src/node/frame.js CHANGED
@@ -27,17 +27,22 @@ export default class FrameNode extends NonTerminalNode {
27
27
  getMetavariableName() {
28
28
  let metavariableName = null;
29
29
 
30
- const singular = this.isSingular();
30
+ const metavariableNode = this.getMetavariableNode();
31
31
 
32
- if (singular) {
33
- const singularMetavariableNode = this.getSingularMetavariableNode();
34
-
35
- metavariableName = singularMetavariableNode.getMetavariableName();
32
+ if (metavariableName !== null) {
33
+ metavariableName = metavariableNode.getMetavariableName();
36
34
  }
37
35
 
38
36
  return metavariableName;
39
37
  }
40
38
 
39
+ getMetavariableNode() {
40
+ const singularMetavariableNode = this.getSingularMetavariableNode(),
41
+ metavariableNode = singularMetavariableNode; ///
42
+
43
+ return metavariableNode;
44
+ }
45
+
41
46
  getMetavariableNodes() {
42
47
  const ruleName = METAVARIABLE_RULE_NAME,
43
48
  metavariableNodes = this.getNodesByRuleName(ruleName);
@@ -3,8 +3,8 @@
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class ProcedureReferenceNode extends NonTerminalNode {
6
- getProcedureName() {
7
- let procedureName;
6
+ getName() {
7
+ let name;
8
8
 
9
9
  this.someChildNode((childNode) => {
10
10
  const childNodeTerminalNode = childNode.isTerminalNode();
@@ -13,13 +13,13 @@ export default class ProcedureReferenceNode extends NonTerminalNode {
13
13
  const terminalNode = childNode, ///
14
14
  content = terminalNode.getContent();
15
15
 
16
- procedureName = content; ///
16
+ name = content; ///
17
17
 
18
18
  return true;
19
19
  }
20
20
  });
21
21
 
22
- return procedureName;
22
+ return name;
23
23
  }
24
24
 
25
25
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProcedureReferenceNode, ruleName, childNodes, opacity, precedence); }
@@ -22,17 +22,22 @@ export default class StatementNode extends NonTerminalNode {
22
22
  getMetavariableName() {
23
23
  let metavariableName = null;
24
24
 
25
- const singular = this.isSingular();
25
+ const metavariableNode = this.getMetavariableNode();
26
26
 
27
- if (singular) {
28
- const singularMetavariableNode = this.getSingularMetavariableNode();
29
-
30
- metavariableName = singularMetavariableNode.getMetavariableName();
27
+ if (metavariableName !== null) {
28
+ metavariableName = metavariableNode.getMetavariableName();
31
29
  }
32
30
 
33
31
  return metavariableName;
34
32
  }
35
33
 
34
+ getMetavariableNode() {
35
+ const singularMetavariableNode = this.getSingularMetavariableNode(),
36
+ metavariableNode = singularMetavariableNode; ///
37
+
38
+ return metavariableNode;
39
+ }
40
+
36
41
  getSubstitutionNode() {
37
42
  const frameSubstitutionNode = this.getFrameSubstitutionNode(),
38
43
  termSubstitutionNode = this.getTermSubstitutionNode(),
package/src/node/term.js CHANGED
@@ -19,6 +19,13 @@ export default class TermNode extends NonTerminalNode {
19
19
  return variableIdentifier;
20
20
  }
21
21
 
22
+ getVariableNode() {
23
+ const singularVariableNode = this.getSingularVariableNode(),
24
+ variableNode = singularVariableNode; //
25
+
26
+ return variableNode;
27
+ }
28
+
22
29
  isSingular() {
23
30
  let singular = false;
24
31
 
@@ -15,7 +15,6 @@ import LabelsNode from "./node/labels";
15
15
  import SectionNode from "./node/section";
16
16
  import PremiseNode from "./node/premise";
17
17
  import TheoremNode from "./node/theorem";
18
- import NonsenseNode from "./node/nonsense";
19
18
  import ArgumentNode from "./node/argument";
20
19
  import SubproofNode from "./node/subproof";
21
20
  import PropertyNode from "./node/property";
@@ -44,10 +43,12 @@ import RuleHeaderNode from "./node/header/rule";
44
43
  import SuppositionNode from "./node/supposition";
45
44
  import PlaceholderNode from "./node/placeholder";
46
45
  import ConstructorNode from "./node/constructor";
47
- import MetatheoremNode from "./node/metatheorem";
48
46
  import TheoremBodyNode from "./node/body/theorem";
49
47
  import AxiomHeaderNode from "./node/header/axiom";
50
48
  import LemmaHeaderNode from "./node/header/lemma";
49
+ import MetatheoremNode from "./node/metatheorem";
50
+ import EquivalenceNode from "./node/equivalence";
51
+ import EquivalencesNode from "./node/equivalences";
51
52
  import MetaArgumentNode from "./node/metaArgument";
52
53
  import MetavariableNode from "./node/metavariable";
53
54
  import QualificationNode from "./node/qualification";
@@ -98,7 +99,6 @@ import {
98
99
  THEOREM_RULE_NAME,
99
100
  PREMISE_RULE_NAME,
100
101
  SECTION_RULE_NAME,
101
- NONSENSE_RULE_NAME,
102
102
  ARGUMENT_RULE_NAME,
103
103
  SUBPROOF_RULE_NAME,
104
104
  PROPERTY_RULE_NAME,
@@ -128,6 +128,8 @@ import {
128
128
  RULE_HEADER_RULE_NAME,
129
129
  CONSTRUCTOR_RULE_NAME,
130
130
  METATHEOREM_RULE_NAME,
131
+ EQUIVALENCE_RULE_NAME,
132
+ EQUIVALENCES_RULE_NAME,
131
133
  AXIOM_HEADER_RULE_NAME,
132
134
  LEMMA_HEADER_RULE_NAME,
133
135
  THEOREM_BODY_RULE_NAME,
@@ -186,7 +188,6 @@ const NonTerminalNodeMap = {
186
188
  [SUBPROOF_RULE_NAME]: SubproofNode,
187
189
  [EQUALITY_RULE_NAME]: EqualityNode,
188
190
  [VARIABLE_RULE_NAME]: VariableNode,
189
- [NONSENSE_RULE_NAME]: NonsenseNode,
190
191
  [DOCUMENT_RULE_NAME]: DocumentNode,
191
192
  [RULE_BODY_RULE_NAME]: RuleBodyNode,
192
193
  [META_TYPE_RULE_NAME]: MetaTypeNode,
@@ -211,10 +212,12 @@ const NonTerminalNodeMap = {
211
212
  [SUPPOSITION_RULE_NAME]: SuppositionNode,
212
213
  [CONSTRUCTOR_RULE_NAME]: ConstructorNode,
213
214
  [METATHEOREM_RULE_NAME]: MetatheoremNode,
215
+ [EQUIVALENCE_RULE_NAME]: EquivalenceNode,
214
216
  [AXIOM_HEADER_RULE_NAME]: AxiomHeaderNode,
215
217
  [LEMMA_HEADER_RULE_NAME]: LemmaHeaderNode,
216
218
  [THEOREM_BODY_RULE_NAME]: TheoremBodyNode,
217
219
  [METAVARIABLE_RULE_NAME]: MetavariableNode,
220
+ [EQUIVALENCES_RULE_NAME]: EquivalencesNode,
218
221
  [META_ARGUMENT_RULE_NAME]: MetaArgumentNode,
219
222
  [QUALIFICATION_RULE_NAME]: QualificationNode,
220
223
  [TYPE_ASSERTION_RULE_NAME]: TypeAssertionNode,