occam-verify-cli 1.0.184 → 1.0.192

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 (196) hide show
  1. package/lib/constants.js +5 -1
  2. package/lib/dom/assertion/property.js +2 -4
  3. package/lib/dom/assertion/subproof.js +3 -5
  4. package/lib/dom/assertion/type.js +6 -8
  5. package/lib/dom/axiom.js +15 -100
  6. package/lib/dom/conjecture.js +5 -4
  7. package/lib/dom/constructor/bracketed.js +6 -7
  8. package/lib/dom/declaration/complexType.js +6 -6
  9. package/lib/dom/declaration/metavariable.js +3 -5
  10. package/lib/dom/declaration/type.js +2 -2
  11. package/lib/dom/declaration.js +2 -4
  12. package/lib/dom/derivation.js +2 -4
  13. package/lib/dom/equality.js +9 -11
  14. package/lib/dom/frame.js +8 -12
  15. package/lib/dom/judgement.js +2 -4
  16. package/lib/dom/lemma.js +5 -4
  17. package/lib/dom/metaLemma.js +5 -4
  18. package/lib/dom/metaType.js +2 -4
  19. package/lib/dom/metatheorem.js +5 -4
  20. package/lib/dom/metavariable.js +12 -15
  21. package/lib/dom/parameter.js +2 -4
  22. package/lib/dom/procedureCall.js +6 -10
  23. package/lib/dom/proof.js +2 -4
  24. package/lib/dom/property.js +16 -51
  25. package/lib/dom/propertyRelation.js +8 -10
  26. package/lib/dom/reference.js +7 -11
  27. package/lib/dom/rule.js +6 -8
  28. package/lib/dom/statement.js +27 -31
  29. package/lib/dom/step.js +4 -6
  30. package/lib/dom/subDerivation.js +2 -4
  31. package/lib/dom/subproof.js +6 -8
  32. package/lib/dom/term.js +14 -20
  33. package/lib/dom/theorem.js +5 -4
  34. package/lib/dom/topLevelAssertion.js +30 -24
  35. package/lib/dom/topLevelMetaAssertion.js +5 -15
  36. package/lib/dom/type.js +8 -25
  37. package/lib/dom/variable.js +5 -11
  38. package/lib/node/assertion/contained.js +45 -58
  39. package/lib/node/assertion/defined.js +33 -58
  40. package/lib/node/assertion/property.js +33 -58
  41. package/lib/node/assertion/satisfies.js +21 -58
  42. package/lib/node/assertion/subproof.js +21 -58
  43. package/lib/node/assertion/type.js +33 -58
  44. package/lib/node/axiom.js +6 -52
  45. package/lib/node/combinator.js +6 -57
  46. package/lib/node/conclusion.js +21 -58
  47. package/lib/node/conjecture.js +6 -52
  48. package/lib/node/constructor.js +6 -57
  49. package/lib/node/declaration/combinator.js +13 -61
  50. package/lib/node/declaration/complexType.js +27 -75
  51. package/lib/node/declaration/constructor.js +24 -70
  52. package/lib/node/declaration/metavariable.js +40 -58
  53. package/lib/node/declaration/property.js +27 -72
  54. package/lib/node/declaration/type.js +23 -69
  55. package/lib/node/declaration/variable.js +28 -83
  56. package/lib/node/declaration.js +33 -58
  57. package/lib/node/deduction.js +21 -58
  58. package/lib/node/derivation.js +21 -58
  59. package/lib/node/equality.js +34 -58
  60. package/lib/node/error.js +6 -57
  61. package/lib/node/frame.js +52 -58
  62. package/lib/node/judgement.js +33 -58
  63. package/lib/node/label.js +21 -58
  64. package/lib/{node.js → node/labels.js} +25 -27
  65. package/lib/node/lemma.js +6 -52
  66. package/lib/node/metaLemma.js +6 -52
  67. package/lib/node/metaType.js +18 -60
  68. package/lib/node/metatheorem.js +6 -52
  69. package/lib/node/metavariable.js +40 -61
  70. package/lib/node/parameter.js +22 -58
  71. package/lib/node/parenthesisedLabels.js +123 -0
  72. package/lib/node/premise.js +33 -58
  73. package/lib/node/procedureCall.js +33 -58
  74. package/lib/node/proof.js +21 -58
  75. package/lib/node/property.js +18 -62
  76. package/lib/node/propertyRelation.js +40 -58
  77. package/lib/node/reference.js +21 -58
  78. package/lib/node/rule.js +6 -52
  79. package/lib/node/statement.js +105 -58
  80. package/lib/node/step.js +47 -58
  81. package/lib/node/subDerivation.js +21 -58
  82. package/lib/node/subproof.js +47 -58
  83. package/lib/node/supposition.js +33 -58
  84. package/lib/node/term.js +57 -58
  85. package/lib/node/theorem.js +6 -52
  86. package/lib/node/topLevelAssertion.js +86 -59
  87. package/lib/node/topLevelMetaAssertion.js +65 -59
  88. package/lib/node/type.js +14 -60
  89. package/lib/node/variable.js +14 -60
  90. package/lib/nominal/parser.js +3 -3
  91. package/lib/nonTerminalNodeMap.js +5 -3
  92. package/lib/ruleNames.js +10 -2
  93. package/lib/utilities/node.js +283 -7
  94. package/lib/utilities/type.js +16 -4
  95. package/lib/verifier/topLevel.js +6 -6
  96. package/package.json +8 -8
  97. package/src/constants.js +1 -0
  98. package/src/dom/assertion/property.js +1 -4
  99. package/src/dom/assertion/subproof.js +2 -6
  100. package/src/dom/assertion/type.js +7 -10
  101. package/src/dom/axiom.js +7 -77
  102. package/src/dom/conjecture.js +6 -1
  103. package/src/dom/constructor/bracketed.js +6 -8
  104. package/src/dom/declaration/complexType.js +7 -6
  105. package/src/dom/declaration/metavariable.js +2 -6
  106. package/src/dom/declaration/type.js +4 -2
  107. package/src/dom/declaration.js +1 -5
  108. package/src/dom/derivation.js +1 -4
  109. package/src/dom/equality.js +13 -17
  110. package/src/dom/frame.js +7 -19
  111. package/src/dom/judgement.js +1 -4
  112. package/src/dom/lemma.js +6 -1
  113. package/src/dom/metaLemma.js +6 -1
  114. package/src/dom/metaType.js +1 -5
  115. package/src/dom/metatheorem.js +6 -1
  116. package/src/dom/metavariable.js +11 -25
  117. package/src/dom/parameter.js +2 -6
  118. package/src/dom/procedureCall.js +5 -14
  119. package/src/dom/proof.js +1 -4
  120. package/src/dom/property.js +21 -78
  121. package/src/dom/propertyRelation.js +10 -14
  122. package/src/dom/reference.js +6 -18
  123. package/src/dom/rule.js +6 -12
  124. package/src/dom/statement.js +26 -46
  125. package/src/dom/step.js +3 -5
  126. package/src/dom/subDerivation.js +1 -4
  127. package/src/dom/subproof.js +8 -12
  128. package/src/dom/term.js +16 -32
  129. package/src/dom/theorem.js +6 -1
  130. package/src/dom/topLevelAssertion.js +30 -25
  131. package/src/dom/topLevelMetaAssertion.js +16 -28
  132. package/src/dom/type.js +9 -35
  133. package/src/dom/variable.js +4 -12
  134. package/src/node/assertion/contained.js +41 -3
  135. package/src/node/assertion/defined.js +29 -3
  136. package/src/node/assertion/property.js +29 -3
  137. package/src/node/assertion/satisfies.js +17 -3
  138. package/src/node/assertion/subproof.js +17 -3
  139. package/src/node/assertion/type.js +29 -3
  140. package/src/node/axiom.js +3 -3
  141. package/src/node/combinator.js +3 -3
  142. package/src/node/conclusion.js +17 -3
  143. package/src/node/conjecture.js +3 -3
  144. package/src/node/constructor.js +3 -3
  145. package/src/node/declaration/combinator.js +11 -7
  146. package/src/node/declaration/complexType.js +25 -24
  147. package/src/node/declaration/constructor.js +22 -17
  148. package/src/node/declaration/metavariable.js +36 -3
  149. package/src/node/declaration/property.js +21 -17
  150. package/src/node/declaration/type.js +22 -17
  151. package/src/node/declaration/variable.js +24 -32
  152. package/src/node/declaration.js +29 -3
  153. package/src/node/deduction.js +17 -3
  154. package/src/node/derivation.js +18 -3
  155. package/src/node/equality.js +31 -3
  156. package/src/node/error.js +3 -3
  157. package/src/node/frame.js +53 -3
  158. package/src/node/judgement.js +29 -3
  159. package/src/node/label.js +17 -3
  160. package/src/node/labels.js +21 -0
  161. package/src/node/lemma.js +3 -3
  162. package/src/node/metaLemma.js +3 -3
  163. package/src/node/metaType.js +19 -8
  164. package/src/node/metatheorem.js +3 -3
  165. package/src/node/metavariable.js +42 -9
  166. package/src/node/parameter.js +20 -3
  167. package/src/node/parenthesisedLabels.js +28 -0
  168. package/src/node/premise.js +29 -3
  169. package/src/node/procedureCall.js +29 -3
  170. package/src/node/proof.js +17 -3
  171. package/src/node/property.js +18 -12
  172. package/src/node/propertyRelation.js +35 -3
  173. package/src/node/reference.js +17 -3
  174. package/src/node/rule.js +3 -3
  175. package/src/node/statement.js +108 -3
  176. package/src/node/step.js +41 -3
  177. package/src/node/subDerivation.js +18 -3
  178. package/src/node/subproof.js +41 -3
  179. package/src/node/supposition.js +29 -3
  180. package/src/node/term.js +62 -3
  181. package/src/node/theorem.js +3 -3
  182. package/src/node/topLevelAssertion.js +89 -3
  183. package/src/node/topLevelMetaAssertion.js +59 -3
  184. package/src/node/type.js +15 -8
  185. package/src/node/variable.js +15 -8
  186. package/src/nominal/parser.js +1 -1
  187. package/src/nonTerminalNodeMap.js +9 -3
  188. package/src/ruleNames.js +3 -1
  189. package/src/utilities/node.js +147 -6
  190. package/src/utilities/type.js +9 -0
  191. package/src/verifier/topLevel.js +5 -10
  192. package/lib/defaultTerminalNode.js +0 -20
  193. package/lib/mixins/node.js +0 -145
  194. package/src/defaultTerminalNode.js +0 -7
  195. package/src/mixins/node.js +0 -201
  196. package/src/node.js +0 -29
@@ -1,7 +1,40 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class MetavariableDeclarationNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeMetaTypeNode, isNodeMetavariableNode } from "../../utilities/node";
6
+
7
+ export default class MetavariableDeclarationNode extends NonTerminalNode {
8
+ getTypeNode() {
9
+ const metavariableNode = this.getMetavariableNode(),
10
+ typeNode = metavariableNode.getTypeNode();
11
+
12
+ return typeNode;
13
+ }
14
+
15
+ getMetaTypeNode() {
16
+ const metaTypeNode = this.findChildNode((childNode) => {
17
+ const childNodeMetaTypeNode = isNodeMetaTypeNode(childNode);
18
+
19
+ if (childNodeMetaTypeNode) {
20
+ return true;
21
+ }
22
+ }) || null;
23
+
24
+ return metaTypeNode
25
+ }
26
+
27
+ getMetavariableNode() {
28
+ const metavariableNode = this.findChildNode((childNode) => {
29
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
30
+
31
+ if (childNodeMetavariableNode) {
32
+ return true;
33
+ }
34
+ }) || null;
35
+
36
+ return metavariableNode;
37
+ }
38
+
39
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
7
40
  }
@@ -1,36 +1,40 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- import { isNodePropertyNode } from "../../utilities/node";
5
+ import { isNodeTypeNode, isNodePropertyNode } from "../../utilities/node";
6
6
 
7
- export default class PropertyDeclarationNode extends Node {
7
+ export default class PropertyDeclarationNode extends NonTerminalNode {
8
8
  getTypeNode() {
9
- const typeNode = this.fromSecondLastChildNode((secondLastChildNode) => {
10
- const typeNode = secondLastChildNode;; ///
9
+ const typeNode = this.findChildNode((childNode) => {
10
+ const childNodeTypeNode = isNodeTypeNode(childNode);
11
11
 
12
- return typeNode;
13
- });
12
+ if (childNodeTypeNode) {
13
+ return true;
14
+ }
15
+ }) || null;
14
16
 
15
17
  return typeNode;
16
18
  }
17
19
 
18
- getPropertyNames() {
19
- const propertyNames = this.reduceChildNode((propertyNames, childNode) => {
20
+ getPropertyNode() {
21
+ const propertyNode = this.findChildNode((childNode) => {
20
22
  const childNodePropertyNode = isNodePropertyNode(childNode);
21
23
 
22
24
  if (childNodePropertyNode) {
23
- const propertyNode = childNode, ///
24
- propertyName = propertyNode.getPropertyName();
25
-
26
- propertyNames.push(propertyName);
25
+ return true;
27
26
  }
27
+ }) || null;
28
+
29
+ return propertyNode;
30
+ }
28
31
 
29
- return propertyNames;
30
- }, []);
32
+ getPropertyName() {
33
+ const propertyNode = this.getPropertyNode(),
34
+ propertyName = propertyNode.getPropertyName();
31
35
 
32
- return propertyNames;
36
+ return propertyName;
33
37
  }
34
38
 
35
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(PropertyDeclarationNode, ruleName, childNodes, opacity, precedence); }
39
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyDeclarationNode, ruleName, childNodes, opacity, precedence); }
36
40
  }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
5
  import { PROVISIONAL } from "../../constants";
6
6
  import { isNodeTypeNode } from "../../utilities/node";
7
7
 
8
- export default class TypeDeclarationNode extends Node {
8
+ export default class TypeDeclarationNode extends NonTerminalNode {
9
9
  getTypeName() {
10
- let typeName;
10
+ let typeName = null;
11
11
 
12
12
  this.someChildNode((childNode) => {
13
13
  const childNodeTypeNode = isNodeTypeNode(childNode);
@@ -25,30 +25,35 @@ export default class TypeDeclarationNode extends Node {
25
25
  }
26
26
 
27
27
  isProvisional() {
28
- const provisional = this.fromFirstChildNode((firstChildNode) => {
29
- const terminalNode = firstChildNode, ///
30
- content = terminalNode.getContent(),
31
- contentProvisional = (content === PROVISIONAL),
32
- provisional = contentProvisional; ///
28
+ let provisional = false;
33
29
 
34
- return provisional;
30
+ this.someChildNode((childNode) => {
31
+ const childNodeTerminalNode = childNode.isTerminalNode();
32
+
33
+ if (childNodeTerminalNode) {
34
+ const terminalNode = childNode, ///
35
+ content = terminalNode.getContent(),
36
+ contentProvisional = (content === PROVISIONAL);
37
+
38
+ if (contentProvisional) {
39
+ provisional = true;
40
+
41
+ return true;
42
+ }
43
+ }
35
44
  });
36
45
 
37
46
  return provisional;
38
47
  }
39
48
 
40
49
  getSuperTypeNodes() {
41
- const typeNodes = this.reduceChildNode((typeNodes, childNode) => {
50
+ const typeNodes = this.filterChildNode((childNode) => {
42
51
  const childNodeTypeNode = isNodeTypeNode(childNode);
43
52
 
44
53
  if (childNodeTypeNode) {
45
- const typeNode = childNode; ///
46
-
47
- typeNodes.push(typeNode);
54
+ return true;
48
55
  }
49
-
50
- return typeNodes;
51
- }, []);
56
+ });
52
57
 
53
58
  typeNodes.pop();
54
59
 
@@ -57,6 +62,6 @@ export default class TypeDeclarationNode extends Node {
57
62
  return superTypeNodes;
58
63
  }
59
64
 
60
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
65
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
61
66
  }
62
67
 
@@ -1,61 +1,53 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
5
  import { PROVISIONALLY } from "../../constants";
6
6
  import { isNodeTypeNode, isNodeVariableNode } from "../../utilities/node";
7
7
 
8
- export default class VariableDeclarationNode extends Node {
9
- getTypeNode() {
10
- let typeNode;
11
-
12
- this.someChildNode((childNode) => {
13
- const childNodeTypeNode = isNodeTypeNode(childNode);
14
-
15
- if (childNodeTypeNode) {
16
- typeNode = childNode; ///
17
-
18
- return true;
19
- }
20
- });
21
-
22
- return typeNode;
23
- }
24
-
8
+ export default class VariableDeclarationNode extends NonTerminalNode {
25
9
  isProvisional() {
26
- const provisional = this.fromSecondLastChildNode((secondLastChildNode) => {
27
- let provisional = false;
10
+ let provisional = false;
28
11
 
29
- const secondLastChildNodeTerminalNode = secondLastChildNode.isTerminalNode();
12
+ this.someChildNode((childNode) => {
13
+ const childNodeTerminalNode = childNode.isTerminalNode();
30
14
 
31
- if (secondLastChildNodeTerminalNode) {
32
- const terminalNode = secondLastChildNode, ///
15
+ if (childNodeTerminalNode) {
16
+ const terminalNode = childNode, ///
33
17
  content = terminalNode.getContent(),
34
18
  contentProvisionally = (content === PROVISIONALLY);
35
19
 
36
20
  if (contentProvisionally) {
37
21
  provisional = true;
22
+
23
+ return true;
38
24
  }
39
25
  }
40
-
41
- return provisional;
42
26
  });
43
27
 
44
28
  return provisional;
45
29
  }
46
30
 
47
- getVariableNode() {
48
- let variableNode;
31
+ getTypeNode() {
32
+ const typeNode = this.findChildNode((childNode) => {
33
+ const childNodeTypeNode = isNodeTypeNode(childNode);
49
34
 
50
- this.someChildNode((childNode) => {
35
+ if (childNodeTypeNode) {
36
+ return true;
37
+ }
38
+ }) || null;
39
+
40
+ return typeNode;
41
+ }
42
+
43
+ getVariableNode() {
44
+ const variableNode = this.findChildNode((childNode) => {
51
45
  const childNodeVariableNode = isNodeVariableNode(childNode);
52
46
 
53
47
  if (childNodeVariableNode) {
54
- variableNode = childNode; ///
55
-
56
48
  return true;
57
49
  }
58
- });
50
+ }) || null;
59
51
 
60
52
  return variableNode;
61
53
  }
@@ -67,5 +59,5 @@ export default class VariableDeclarationNode extends Node {
67
59
  return variableName;
68
60
  }
69
61
 
70
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(VariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
62
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(VariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
71
63
  }
@@ -1,7 +1,33 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class DeclarationNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(DeclarationNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode, isNodeMetavariableNode } from "../utilities/node";
6
+
7
+ export default class DeclarationNode extends NonTerminalNode {
8
+ getStatementNode() {
9
+ const statementNode = this.findChildNode((childNode) => {
10
+ const childNodeStatementNode = isNodeStatementNode(childNode);
11
+
12
+ if (childNodeStatementNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return statementNode;
18
+ }
19
+
20
+ getMetavariableNode() {
21
+ const metavariableNode = this.findChildNode((childNode) => {
22
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
23
+
24
+ if (childNodeMetavariableNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return metavariableNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DeclarationNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
@@ -1,7 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class DeductionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(DeductionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode } from "../utilities/node";
6
+
7
+ export default class DeductionNode extends NonTerminalNode {
8
+ getStatementNode() {
9
+ const statementNode = this.findChildNode((childNode) => {
10
+ const childNodeStatementNode = isNodeStatementNode(childNode);
11
+
12
+ if (childNodeStatementNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return statementNode;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DeductionNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
@@ -1,7 +1,22 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class DerivationNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(DerivationNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStepNode, isNodeSubproofNode } from "../utilities/node";
6
+
7
+ export default class DerivationNode extends NonTerminalNode {
8
+ getStepOrSubproofNodes() {
9
+ const stepOrSubproofNodes = this.filterChildNode((childNode) => {
10
+ const childNodeStepNode = isNodeStepNode(childNode),
11
+ childNodeSubproofNode = isNodeSubproofNode(childNode);
12
+
13
+ if (childNodeStepNode || childNodeSubproofNode) {
14
+ return true;
15
+ }
16
+ });
17
+
18
+ return stepOrSubproofNodes;
19
+ }
20
+
21
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DerivationNode, ruleName, childNodes, opacity, precedence); }
7
22
  }
@@ -1,7 +1,35 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class EqualityNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(EqualityNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class EqualityNode extends NonTerminalNode {
6
+ getLeftTermNode() {
7
+ let leftTermNode;
8
+
9
+ this.someChildNode((childNode, index) => {
10
+ if (index === 0) {
11
+ leftTermNode = childNode; ///
12
+
13
+ return true;
14
+ }
15
+ });
16
+
17
+ return leftTermNode;
18
+ }
19
+
20
+ getRightTermNode() {
21
+ let rightTermNode;
22
+
23
+ this.someChildNode((childNode, index) => {
24
+ if (index === 2) {
25
+ rightTermNode = childNode; ///
26
+
27
+ return true;
28
+ }
29
+ });
30
+
31
+ return rightTermNode;
32
+ }
33
+
34
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(EqualityNode, ruleName, childNodes, opacity, precedence); }
7
35
  }
package/src/node/error.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class ErrorNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ErrorNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class ErrorNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ErrorNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
package/src/node/frame.js CHANGED
@@ -1,7 +1,57 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { arrayUtilities } from "necessary";
4
+ import { NonTerminalNode } from "occam-parsers";
4
5
 
5
- export default class FrameNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(FrameNode, ruleName, childNodes, opacity, precedence); }
6
+ import { isNodeDeclarationNode, isNodeMetavariableNode } from "../utilities/node";
7
+
8
+ const { first } = arrayUtilities;
9
+
10
+ export default class FrameNode extends NonTerminalNode {
11
+ getDeclarationNodes() {
12
+ const declarationNodes = this.filterChildNode((childNode) => {
13
+ const childNodeDeclarationNode = isNodeDeclarationNode(childNode);
14
+
15
+ if (childNodeDeclarationNode) {
16
+ return true;
17
+ }
18
+ });
19
+
20
+ return declarationNodes;
21
+ }
22
+
23
+ getMetavariableNodes() {
24
+ const metavariableNodes = this.filterChildNode((childNode) => {
25
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
26
+
27
+ if (childNodeMetavariableNode) {
28
+ return true;
29
+ }
30
+ });
31
+
32
+ return metavariableNodes;
33
+ }
34
+
35
+ getSingularMetavariableNode() {
36
+ let singularMetavariableNode = null;
37
+
38
+ const metavariableNodes = this.filterChildNode((childNode) => {
39
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
40
+
41
+ if (!childNodeMetavariableNode) {
42
+ return true;
43
+ }
44
+ }),
45
+ metavariableNodesLength = metavariableNodes.length;
46
+
47
+ if (metavariableNodesLength === 1) {
48
+ const firstMetavariableNode = first(metavariableNodes);
49
+
50
+ singularMetavariableNode = firstMetavariableNode; ///
51
+ }
52
+
53
+ return singularMetavariableNode;
54
+ }
55
+
56
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameNode, ruleName, childNodes, opacity, precedence); }
7
57
  }
@@ -1,7 +1,33 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class JudgementNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(JudgementNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeFrameNode, isNodeDeclarationNode } from "../utilities/node";
6
+
7
+ export default class JudgementNode extends NonTerminalNode {
8
+ getFrameNode() {
9
+ const frameNode = this.findChildNode((childNode) => {
10
+ const childNodeFrameNode = isNodeFrameNode(childNode);
11
+
12
+ if (childNodeFrameNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return frameNode;
18
+ }
19
+
20
+ getDeclarationNode() {
21
+ const declarationNode = this.findChildNode((childNode) => {
22
+ const childNodeDeclarationNode = isNodeDeclarationNode(childNode);
23
+
24
+ if (childNodeDeclarationNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return declarationNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(JudgementNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
package/src/node/label.js CHANGED
@@ -1,7 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class LabelNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(LabelNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeMetavariableNode } from "../utilities/node";
6
+
7
+ export default class LabelNode extends NonTerminalNode {
8
+ getMetavariableNode() {
9
+ const metavariableNode = this.findChildNode((childNode) => {
10
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
11
+
12
+ if (childNodeMetavariableNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return metavariableNode;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(LabelNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ import { NonTerminalNode } from "occam-parsers";
4
+
5
+ import { isNodeLabelNode } from "../utilities/node";
6
+
7
+ export default class LabelsNode extends NonTerminalNode {
8
+ getLabelNodes() {
9
+ const labelNodes = this.filterChildNode((childNode) => {
10
+ const childNodeLabelNode = isNodeLabelNode(childNode);
11
+
12
+ if (childNodeLabelNode) {
13
+ return true;
14
+ }
15
+ });
16
+
17
+ return labelNodes;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(LabelsNode, ruleName, childNodes, opacity, precedence); }
21
+ }
package/src/node/lemma.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import TopLevelAssertionNode from "../node/topLevelAssertion";
4
4
 
5
- export default class LemmaNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(LemmaNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class LemmaNode extends TopLevelAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(LemmaNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
4
4
 
5
- export default class MetaLemmaNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class MetaLemmaNode extends TopLevelMetaAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,19 +1,30 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
+
5
+ export default class MetaTypeNode extends NonTerminalNode {
6
+ getTypeNode() {
7
+
8
+ }
4
9
 
5
- export default class MetaTypeNode extends Node {
6
10
  getMetaTypeName() {
7
- const metaTypeName = this.fromFirstChildNode((firstChildNode) => {
8
- const metaTypeTerminalNode = firstChildNode, ///
9
- content = metaTypeTerminalNode.getContent(),
10
- metaTypeName = content; ///
11
+ let metaTypeName;
12
+
13
+ this.someChildNode((childNode) => {
14
+ const childNodeTerminalNode = childNode.isTerminalNode();
15
+
16
+ if (childNodeTerminalNode) {
17
+ const terminalNode = childNode, ///
18
+ content = terminalNode.getContent();
19
+
20
+ metaTypeName = content; ///
11
21
 
12
- return metaTypeName;
22
+ return true;
23
+ }
13
24
  });
14
25
 
15
26
  return metaTypeName;
16
27
  }
17
28
 
18
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(MetaTypeNode, ruleName, childNodes, opacity, precedence); }
29
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaTypeNode, ruleName, childNodes, opacity, precedence); }
19
30
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
4
4
 
5
- export default class MetatheoremNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class MetatheoremNode extends TopLevelMetaAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
7
7
  }