occam-verify-cli 1.0.438 → 1.0.444

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 (216) hide show
  1. package/lib/context/file.js +38 -35
  2. package/lib/context/local.js +10 -10
  3. package/lib/context/release.js +6 -6
  4. package/lib/context/temporary.js +14 -14
  5. package/lib/element/assertion/contained.js +45 -45
  6. package/lib/element/assertion/defined.js +13 -13
  7. package/lib/element/assertion/property.js +23 -22
  8. package/lib/element/assertion/satisfies.js +7 -6
  9. package/lib/element/assertion/subproof.js +20 -17
  10. package/lib/element/assertion/type.js +3 -2
  11. package/lib/element/assertion.js +1 -23
  12. package/lib/element/assumption.js +24 -22
  13. package/lib/element/axiom.js +9 -12
  14. package/lib/element/axiomLemmaTheoremConjecture.js +32 -32
  15. package/lib/element/{statement/combinator → combinator}/bracketed.js +16 -16
  16. package/lib/element/combinator.js +229 -0
  17. package/lib/element/conclusion.js +11 -9
  18. package/lib/element/{term/constructor → constructor}/bracketed.js +5 -5
  19. package/lib/element/constructor.js +232 -0
  20. package/lib/element/declaration/combinator.js +2 -16
  21. package/lib/element/declaration/complexType.js +12 -12
  22. package/lib/element/declaration/constructor.js +13 -11
  23. package/lib/element/declaration/simpleType.js +4 -4
  24. package/lib/element/declaration/typePrefix.js +2 -2
  25. package/lib/element/declaration/variable.js +3 -3
  26. package/lib/element/deduction.js +11 -9
  27. package/lib/element/derivation.js +7 -10
  28. package/lib/element/equivalence.js +10 -10
  29. package/lib/element/equivalences.js +5 -5
  30. package/lib/element/frame.js +32 -38
  31. package/lib/element/hypothesis.js +3 -3
  32. package/lib/element/judgement.js +6 -4
  33. package/lib/element/label.js +8 -8
  34. package/lib/element/metaLemmaMetatheorem.js +5 -5
  35. package/lib/element/metaType.js +17 -80
  36. package/lib/element/metavariable.js +34 -34
  37. package/lib/element/parameter.js +3 -3
  38. package/lib/element/premise.js +49 -58
  39. package/lib/element/property.js +9 -9
  40. package/lib/element/propertyRelation.js +13 -13
  41. package/lib/element/reference.js +14 -17
  42. package/lib/element/rule.js +21 -21
  43. package/lib/element/signature.js +11 -11
  44. package/lib/element/statement.js +18 -18
  45. package/lib/element/step.js +83 -55
  46. package/lib/element/subDerivation.js +7 -10
  47. package/lib/element/subproof.js +6 -14
  48. package/lib/element/substitution/frame.js +1 -7
  49. package/lib/element/substitution/reference.js +2 -3
  50. package/lib/element/substitution/statement.js +44 -15
  51. package/lib/element/substitution/term.js +10 -57
  52. package/lib/element/substitution.js +5 -11
  53. package/lib/element/substitutions.js +29 -29
  54. package/lib/element/supposition.js +63 -55
  55. package/lib/element/term.js +21 -34
  56. package/lib/element/type.js +47 -60
  57. package/lib/element/typePrefix.js +5 -5
  58. package/lib/element/variable.js +9 -9
  59. package/lib/element.js +9 -3
  60. package/lib/metaTypes.js +52 -0
  61. package/lib/node/axiomLemmaTheoremConjecture.js +9 -9
  62. package/lib/node/body/axiom.js +2 -25
  63. package/lib/node/body/conjecture.js +2 -25
  64. package/lib/node/body/lemma.js +2 -25
  65. package/lib/node/body/metaLemma.js +2 -25
  66. package/lib/node/body/metatheorem.js +2 -25
  67. package/lib/node/body/rule.js +15 -1
  68. package/lib/node/body/theorem.js +2 -25
  69. package/lib/node/body.js +25 -2
  70. package/lib/node/combinator.js +11 -2
  71. package/lib/node/constructor.js +11 -2
  72. package/lib/node/declaration/combinator.js +5 -5
  73. package/lib/node/declaration/constructor.js +8 -8
  74. package/lib/node/declaration/property.js +15 -15
  75. package/lib/node/declaration/simpleType.js +31 -31
  76. package/lib/node/declaration/variable.js +8 -8
  77. package/lib/node/equality.js +8 -8
  78. package/lib/node/frame.js +20 -20
  79. package/lib/node/header.js +22 -22
  80. package/lib/node/metaLemmaMetaTheorem.js +16 -16
  81. package/lib/node/metavariable.js +15 -15
  82. package/lib/node/property.js +8 -8
  83. package/lib/node/propertyRelation.js +8 -8
  84. package/lib/node/rule.js +16 -16
  85. package/lib/node/statement.js +12 -12
  86. package/lib/node/step.js +22 -22
  87. package/lib/node/subproof.js +8 -8
  88. package/lib/node/substitution/frame.js +19 -19
  89. package/lib/node/substitution/statement.js +19 -19
  90. package/lib/node/substitution/term.js +19 -19
  91. package/lib/node/term.js +35 -35
  92. package/lib/preamble.js +5 -5
  93. package/lib/process/instantiate.js +20 -2
  94. package/lib/process/unify.js +39 -42
  95. package/lib/process/validate.js +431 -0
  96. package/lib/process/verify.js +44 -135
  97. package/lib/types.js +27 -0
  98. package/lib/utilities/brackets.js +4 -4
  99. package/lib/utilities/element.js +91 -55
  100. package/lib/utilities/instance.js +18 -18
  101. package/lib/utilities/statement.js +2 -2
  102. package/lib/utilities/string.js +21 -10
  103. package/lib/utilities/unification.js +237 -0
  104. package/lib/utilities/validation.js +251 -0
  105. package/package.json +6 -6
  106. package/src/context/file.js +37 -31
  107. package/src/context/local.js +8 -8
  108. package/src/context/release.js +9 -6
  109. package/src/context/temporary.js +11 -11
  110. package/src/element/assertion/contained.js +19 -20
  111. package/src/element/assertion/defined.js +11 -12
  112. package/src/element/assertion/property.js +20 -20
  113. package/src/element/assertion/satisfies.js +6 -6
  114. package/src/element/assertion/subproof.js +17 -15
  115. package/src/element/assertion/type.js +2 -2
  116. package/src/element/assertion.js +0 -2
  117. package/src/element/assumption.js +22 -19
  118. package/src/element/axiom.js +7 -11
  119. package/src/element/axiomLemmaTheoremConjecture.js +36 -36
  120. package/src/element/{statement/combinator → combinator}/bracketed.js +7 -7
  121. package/src/element/combinator.js +90 -0
  122. package/src/element/conclusion.js +12 -10
  123. package/src/element/{term/constructor → constructor}/bracketed.js +5 -5
  124. package/src/element/{term/constructor.js → constructor.js} +17 -25
  125. package/src/element/declaration/combinator.js +1 -22
  126. package/src/element/declaration/complexType.js +11 -11
  127. package/src/element/declaration/constructor.js +13 -10
  128. package/src/element/declaration/simpleType.js +3 -3
  129. package/src/element/declaration/typePrefix.js +1 -1
  130. package/src/element/declaration/variable.js +2 -2
  131. package/src/element/deduction.js +12 -9
  132. package/src/element/derivation.js +6 -10
  133. package/src/element/equivalence.js +8 -8
  134. package/src/element/equivalences.js +4 -4
  135. package/src/element/frame.js +28 -30
  136. package/src/element/hypothesis.js +2 -2
  137. package/src/element/judgement.js +6 -3
  138. package/src/element/label.js +4 -4
  139. package/src/element/metaLemmaMetatheorem.js +4 -3
  140. package/src/element/metaType.js +9 -45
  141. package/src/element/metavariable.js +29 -31
  142. package/src/element/parameter.js +2 -2
  143. package/src/element/premise.js +55 -62
  144. package/src/element/property.js +6 -6
  145. package/src/element/propertyRelation.js +11 -11
  146. package/src/element/reference.js +12 -21
  147. package/src/element/rule.js +17 -16
  148. package/src/element/signature.js +10 -9
  149. package/src/element/statement.js +16 -18
  150. package/src/element/step.js +93 -55
  151. package/src/element/subDerivation.js +6 -10
  152. package/src/element/subproof.js +4 -12
  153. package/src/element/substitution/frame.js +0 -2
  154. package/src/element/substitution/reference.js +1 -5
  155. package/src/element/substitution/statement.js +44 -14
  156. package/src/element/substitution/term.js +10 -13
  157. package/src/element/substitution.js +3 -5
  158. package/src/element/substitutions.js +48 -30
  159. package/src/element/supposition.js +88 -70
  160. package/src/element/term.js +18 -28
  161. package/src/element/type.js +42 -36
  162. package/src/element/typePrefix.js +3 -3
  163. package/src/element/variable.js +7 -7
  164. package/src/element.js +3 -1
  165. package/src/metaTypes.js +42 -0
  166. package/src/node/axiomLemmaTheoremConjecture.js +6 -6
  167. package/src/node/body/axiom.js +0 -21
  168. package/src/node/body/conjecture.js +0 -23
  169. package/src/node/body/lemma.js +0 -23
  170. package/src/node/body/metaLemma.js +0 -23
  171. package/src/node/body/metatheorem.js +0 -23
  172. package/src/node/body/rule.js +12 -0
  173. package/src/node/body/theorem.js +0 -23
  174. package/src/node/body.js +23 -0
  175. package/src/node/combinator.js +9 -0
  176. package/src/node/constructor.js +9 -0
  177. package/src/node/declaration/combinator.js +5 -5
  178. package/src/node/declaration/constructor.js +8 -8
  179. package/src/node/declaration/property.js +14 -14
  180. package/src/node/declaration/simpleType.js +31 -31
  181. package/src/node/declaration/variable.js +7 -7
  182. package/src/node/equality.js +7 -7
  183. package/src/node/frame.js +21 -21
  184. package/src/node/header.js +22 -22
  185. package/src/node/metaLemmaMetaTheorem.js +14 -14
  186. package/src/node/metavariable.js +14 -14
  187. package/src/node/property.js +7 -7
  188. package/src/node/propertyRelation.js +7 -7
  189. package/src/node/rule.js +15 -15
  190. package/src/node/statement.js +12 -12
  191. package/src/node/step.js +21 -21
  192. package/src/node/subproof.js +7 -7
  193. package/src/node/substitution/frame.js +18 -18
  194. package/src/node/substitution/statement.js +18 -18
  195. package/src/node/substitution/term.js +18 -18
  196. package/src/node/term.js +34 -34
  197. package/src/preamble.js +4 -4
  198. package/src/process/instantiate.js +12 -0
  199. package/src/process/unify.js +53 -57
  200. package/src/process/validate.js +316 -0
  201. package/src/process/verify.js +50 -138
  202. package/src/types.js +18 -0
  203. package/src/utilities/brackets.js +10 -6
  204. package/src/utilities/element.js +125 -82
  205. package/src/utilities/instance.js +18 -18
  206. package/src/utilities/statement.js +2 -2
  207. package/src/utilities/string.js +34 -20
  208. package/src/{mixins/step/unify.js → utilities/unification.js} +82 -68
  209. package/src/{mixins/statement/validate.js → utilities/validation.js} +143 -69
  210. package/lib/element/statement/combinator.js +0 -105
  211. package/lib/element/term/constructor.js +0 -172
  212. package/lib/mixins/statement/validate.js +0 -198
  213. package/lib/mixins/step/unify.js +0 -228
  214. package/lib/mixins/term/verify.js +0 -65
  215. package/src/element/statement/combinator.js +0 -59
  216. package/src/mixins/term/verify.js +0 -81
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import { nodeQuery } from "../utilities/query";
4
- import { isLastRemainingArgumentFunction } from "../utilities/pass";
5
- import { termFromTermNode,
6
- ruleFromRuleNode,
4
+ import { termFromTermNode, statementFromStatementNode } from "../utilities/element";
5
+ import { ruleFromRuleNode,
7
6
  errorFromErrorNode,
8
7
  axiomFromAxiomNode,
9
8
  lemmaFromLemmaNode,
10
9
  sectionFromSectionNode,
11
10
  theoremFromTheoremNode,
12
11
  metaLemmaFromMetaLemmaNode,
13
- statementFromStatementNode,
14
12
  conjectureFromConjectureNode,
15
13
  metatheoremFromMetatheoremNode,
16
14
  variableDeclarationFromVariableDeclarationNode,
@@ -21,17 +19,18 @@ import { termFromTermNode,
21
19
  complexTypeDeclarationFromComplexTypeDeclarationNode,
22
20
  metavariableDeclarationFromMetavariableDeclarationNode } from "../utilities/element";
23
21
 
24
- const nonTerminalNodeQuery = nodeQuery("/*"),
22
+ const nonTerminalNodeQuery = nodeQuery("/*");
23
+
24
+ const ruleNodeQuery = nodeQuery("/rule"),
25
25
  termNodeQuery = nodeQuery("/term"),
26
26
  typeNodeQuery = nodeQuery("/type"),
27
- ruleNodeQuery = nodeQuery("/rule"),
28
27
  errorNodeQuery = nodeQuery("/error"),
29
28
  axiomNodeQuery = nodeQuery("/axiom"),
30
29
  lemmaNodeQuery = nodeQuery("/lemma"),
31
30
  sectionNodeQuery = nodeQuery("/section"),
32
31
  theoremNodeQuery = nodeQuery("/theorem"),
33
- statementNodeQuery = nodeQuery("/statement"),
34
32
  metaLemmaNodeQuery = nodeQuery("/metaLemma"),
33
+ statementNodeQuery = nodeQuery("/statement"),
35
34
  conjectureNodeQuery = nodeQuery("/conjecture"),
36
35
  metatheoremNodeQuery = nodeQuery("/metatheorem"),
37
36
  variableDeclarationNodeQuery = nodeQuery("/variableDeclaration"),
@@ -42,7 +41,7 @@ const nonTerminalNodeQuery = nodeQuery("/*"),
42
41
  complexTypeDeclarationNodeQuery = nodeQuery("/complexTypeDeclaration"),
43
42
  metavariableDeclarationNodeQuery = nodeQuery("/metavariableDeclaration");
44
43
 
45
- export default class Pass {
44
+ class Pass {
46
45
  run(node, ...remainingArguments) {
47
46
  let success;
48
47
 
@@ -54,58 +53,22 @@ export default class Pass {
54
53
  }
55
54
 
56
55
  descend(childNodes, ...remainingArguments) {
57
- let descendedAhead = false;
58
-
59
- const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
56
+ let descended = false;
60
57
 
61
- if (lastRemainingArgumentFunction) {
62
- const index = 0;
63
-
64
- descendedAhead = this.descendAhead(index, childNodes, ...remainingArguments); ///
65
- } else {
66
- const visited = childNodes.every((childNode) => {
67
- const node = childNode, ///
68
- visited = this.visitNode(node, ...remainingArguments);
69
-
70
- if (visited) {
71
- return true;
72
- }
73
- });
58
+ const visited = childNodes.every((childNode) => {
59
+ const node = childNode, ///
60
+ visited = this.visitNode(node, ...remainingArguments);
74
61
 
75
62
  if (visited) {
76
- descendedAhead = true;
63
+ return true;
77
64
  }
78
- }
79
-
80
- return descendedAhead;
81
- }
82
-
83
- descendAhead(index, childNodes, ...remainingArguments) {
84
- let descendedAhead = false;
85
-
86
- const descendAhead = remainingArguments.pop(), ///
87
- childNodesLength = childNodes.length;
88
-
89
- if (index === childNodesLength) {
90
- descendedAhead = descendAhead();
91
- } else {
92
- const childNode = childNodes[index],
93
- node = childNode, ///
94
- visited = this.visitNode(node, ...remainingArguments, () => {
95
- remainingArguments.push(descendAhead);
96
-
97
- const aheadIndex = index + 1,
98
- descendedAhead = this.descendAhead(aheadIndex, childNodes, ...remainingArguments);
99
-
100
- return descendedAhead;
101
- });
65
+ });
102
66
 
103
- if (visited) {
104
- descendedAhead = true;
105
- }
67
+ if (visited) {
68
+ descended = true;
106
69
  }
107
70
 
108
- return descendedAhead;
71
+ return descended;
109
72
  }
110
73
 
111
74
  visitNode(node, ...remainingArguments) {
@@ -127,22 +90,7 @@ export default class Pass {
127
90
  }
128
91
 
129
92
  visitTerminalNode(terminalNode, ...remainingArguments) {
130
- let visited = false;
131
-
132
- const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
133
-
134
- if (lastRemainingArgumentFunction) {
135
- const descendAhead = remainingArguments.pop(), ///
136
- descendedAhead = descendAhead();
137
-
138
- if (descendedAhead) {
139
- visited = true;
140
- }
141
-
142
- remainingArguments.push(descendAhead);
143
- } else {
144
- visited = true;
145
- }
93
+ const visited = true;
146
94
 
147
95
  return visited;
148
96
  }
@@ -434,21 +382,7 @@ class TopLevelPass extends Pass {
434
382
  ];
435
383
  }
436
384
 
437
- class CombinatorPass extends Pass {
438
- run(statementNode, context) {
439
- let success = false;
440
-
441
- const nonTerminalNode = statementNode, ///
442
- childNodes = nonTerminalNode.getChildNodes(), ///
443
- descended = this.descend(childNodes,context);
444
-
445
- if (descended) {
446
- success = true;
447
- }
448
-
449
- return success;
450
- }
451
-
385
+ class ConbinatorPass extends Pass {
452
386
  static maps = [
453
387
  {
454
388
  nodeQuery: statementNodeQuery,
@@ -458,9 +392,9 @@ class CombinatorPass extends Pass {
458
392
  const statement = statementFromStatementNode(statementNode, context),
459
393
  assignments = null,
460
394
  stated = false,
461
- statementVerifies = statement.verify(assignments, stated, context);
395
+ statementValidates = statement.validate(assignments, stated, context);
462
396
 
463
- if (statementVerifies) {
397
+ if (statementValidates) {
464
398
  success = true;
465
399
  }
466
400
 
@@ -473,13 +407,13 @@ class CombinatorPass extends Pass {
473
407
  let success = false;
474
408
 
475
409
  const term = termFromTermNode(termNode, context),
476
- termVerifies = term.verify(context, () => {
410
+ termValidates = term.validate(context, () => {
477
411
  const verifiesAhead = true;
478
412
 
479
413
  return verifiesAhead;
480
414
  });
481
415
 
482
- if (termVerifies) {
416
+ if (termValidates) {
483
417
  success = true;
484
418
  }
485
419
 
@@ -505,30 +439,20 @@ class CombinatorPass extends Pass {
505
439
  }
506
440
 
507
441
  class ConstructorPass extends Pass {
508
- run(statementNode, context) {
509
- let success = false;
510
-
511
- const nonTerminalNode = statementNode, ///
512
- childNodes = nonTerminalNode.getChildNodes(), ///
513
- descended = this.descend(childNodes,context);
514
-
515
- if (descended) {
516
- success = true;
517
- }
518
-
519
- return success;
520
- }
521
-
522
442
  static maps = [
523
443
  {
524
444
  nodeQuery: termNodeQuery,
525
- run: (termNode, context, verifyAhead) => {
445
+ run: (termNode, context) => {
526
446
  let success = false;
527
447
 
528
448
  const term = termFromTermNode(termNode, context),
529
- termVerifies = term.verify(context, verifyAhead);
449
+ termValidates = term.validate(context, () => {
450
+ const verifiesAhead = true;
530
451
 
531
- if (termVerifies) {
452
+ return verifiesAhead;
453
+ });
454
+
455
+ if (termValidates) {
532
456
  success = true;
533
457
  }
534
458
 
@@ -537,24 +461,14 @@ class ConstructorPass extends Pass {
537
461
  },
538
462
  {
539
463
  nodeQuery: typeNodeQuery,
540
- run: (typeNode, context, verifyAhead) => {
464
+ run: (typeNode, context) => {
541
465
  let success = false;
542
466
 
543
467
  const nominalTypeName = typeNode.getNominalTypeName(),
544
468
  typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
545
469
 
546
470
  if (typePresent) {
547
- const verifiesAhead = verifyAhead();
548
-
549
- if (verifiesAhead) {
550
- success = true;
551
- }
552
- } else {
553
- const typeString = nominalTypeName; ///
554
-
555
- context.debug(`The '${typeString}' type is not present.`);
556
-
557
- success = false;
471
+ success = true;
558
472
  }
559
473
 
560
474
  return success;
@@ -564,7 +478,7 @@ class ConstructorPass extends Pass {
564
478
  }
565
479
 
566
480
  const topLevelPass = new TopLevelPass(),
567
- combinatorPass = new CombinatorPass(),
481
+ combinatorPass = new ConbinatorPass(),
568
482
  constructorPass = new ConstructorPass();
569
483
 
570
484
  export function verifyFile(fileNode, context) {
@@ -580,28 +494,26 @@ export function verifyFile(fileNode, context) {
580
494
  return fileVerifies;
581
495
  }
582
496
 
583
- export function verifyTerm(termNode, context) {
584
- let termVerifies = false;
585
-
586
- const node = termNode, ///
587
- sucess = constructorPass.run(node, context);
497
+ export function verifyCombinator(combintot) {
498
+ const context = combintot.getContext(),
499
+ statement = combintot.getStatement(),
500
+ statementNode = statement.getNode(),
501
+ nonTerminalNode = statementNode, ///
502
+ childNodes = nonTerminalNode.getChildNodes(),
503
+ descended = combinatorPass.descend(childNodes, context),
504
+ combinatorVerifies = descended; ///
588
505
 
589
- if (sucess) {
590
- termVerifies = true;
591
- }
592
-
593
- return termVerifies;
506
+ return combinatorVerifies;
594
507
  }
595
508
 
596
- export function verifyStatement(statementNode, context) {
597
- let statementVerifies = false;
598
-
599
- const node = statementNode, ///
600
- sucess = combinatorPass.run(node, context);
601
-
602
- if (sucess) {
603
- statementVerifies = true;
604
- }
509
+ export function verifyConstrcctor(constructor) {
510
+ const context = constructor.getContext(),
511
+ term = constructor.getStatement(),
512
+ termNode = term.getNode(),
513
+ nonTerminalNode = termNode, ///
514
+ childNodes = nonTerminalNode.getChildNodes(),
515
+ descended = constructorPass.descend(childNodes, context),
516
+ constrcctorVerifies = descended; ///
605
517
 
606
- return statementVerifies;
518
+ return constrcctorVerifies;
607
519
  }
package/src/types.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import elements from "./elements";
4
+
5
+ import { BASE_TYPE_SYMBOL } from "./constants";
6
+
7
+ let baseType = null;
8
+
9
+ export function baseTypeFromNothing() {
10
+ if (baseType === null) {
11
+ const { Type } = elements,
12
+ name = BASE_TYPE_SYMBOL; ///
13
+
14
+ baseType = Type.fromName(name);
15
+ }
16
+
17
+ return baseType;
18
+ }
@@ -3,7 +3,7 @@
3
3
  import elements from "../elements";
4
4
 
5
5
  import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
6
- import { bracketedConstructorTermFromNothing, bracketedCombinatorStatementFromNothing } from "../utilities/instance";
6
+ import { bracketedConstructorFromNothing, bracketedCombinatorFromNothing } from "../utilities/instance";
7
7
 
8
8
  export function stripBracketsFromTerm(term, context) {
9
9
  const termNode = term.getNode(),
@@ -57,10 +57,12 @@ function bracketedTermChildNodeFromTermNode(termNode) {
57
57
  let bracketedTermChildNode = null;
58
58
 
59
59
  const depth = BRACKETED_TERM_DEPTH,
60
- bracketedConstructorTermNode = bracketedConstructorTermFromNothing(),
61
- termNodeMatchBracketedConstructorTermNode = termNode.match(bracketedConstructorTermNode, depth);
60
+ bracketedConstructor = bracketedConstructorFromNothing(),
61
+ bracketedConstructorTerm = bracketedConstructor.getTerm(),
62
+ bracketedConstructorTermNode = bracketedConstructorTerm.getNode(),
63
+ termNodeMatchBracketedConstructorNode = termNode.match(bracketedConstructorTermNode, depth);
62
64
 
63
- if (termNodeMatchBracketedConstructorTermNode) {
65
+ if (termNodeMatchBracketedConstructorNode) {
64
66
  const singularTermNode = termNode.getSingularTermNode();
65
67
 
66
68
  bracketedTermChildNode = singularTermNode; ///
@@ -73,8 +75,10 @@ function bracketedStatementChildNodeFromStatementNode(statementNode) {
73
75
  let bracketedStatementChildNode = null;
74
76
 
75
77
  const depth = BRACKETED_STATEMENT_DEPTH,
76
- bracketedCombinatorStatementNode = bracketedCombinatorStatementFromNothing(),
77
- statementNodeMatchBracketedCombinatorStatementNode = statementNode.match(bracketedCombinatorStatementNode, depth);
78
+ bracketedCombinator = bracketedCombinatorFromNothing(),
79
+ bracketedCombinatorStatement = bracketedCombinator.getStatement(),
80
+ bracketedCombinatorStatementnNode = bracketedCombinatorStatement.getNode(),
81
+ statementNodeMatchBracketedCombinatorStatementNode = statementNode.match(bracketedCombinatorStatementnNode, depth);
78
82
 
79
83
  if (statementNodeMatchBracketedCombinatorStatementNode) {
80
84
  const singularStatementNode = statementNode.getSingularStatementNode();