occam-verify-cli 1.0.185 → 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 +2 -2
  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,19 +1,52 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
+
5
+ import { isNodeTermNode, isNodeTypeNode } from "../utilities/node";
6
+
7
+ export default class MetavariableNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const termNode = this.findChildNode((childNode) => {
10
+ const childNodeTermNode = isNodeTermNode(childNode);
11
+
12
+ if (childNodeTermNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return termNode;
18
+ }
19
+
20
+ getTypeNode() {
21
+ const typeNode = this.findChildNode((childNode) => {
22
+ const childNodeTypeNode = isNodeTypeNode(childNode);
23
+
24
+ if (childNodeTypeNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return typeNode;
30
+ }
4
31
 
5
- export default class MetavariableNode extends Node {
6
32
  getMetavariableName() {
7
- const metavariableName = this.fromFirstChildNode((firstChildNode) => {
8
- const nameTerminalNode = firstChildNode, ///
9
- content = nameTerminalNode.getContent(),
10
- metavariableName = content; ///
33
+ let metaVariableName;
34
+
35
+ this.someChildNode((childNode) => {
36
+ const childNodeTerminalNode = childNode.isTerminalNode();
37
+
38
+ if (childNodeTerminalNode) {
39
+ const terminalNode = childNode, ///
40
+ content = terminalNode.getContent();
41
+
42
+ metaVariableName = content; ///
11
43
 
12
- return metavariableName;
44
+ return true;
45
+ }
13
46
  });
14
47
 
15
- return metavariableName;
48
+ return metaVariableName;
16
49
  }
17
50
 
18
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableNode, ruleName, childNodes, opacity, precedence); }
51
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableNode, ruleName, childNodes, opacity, precedence); }
19
52
  }
@@ -1,7 +1,24 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class ParameterNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ParameterNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class ParameterNode extends NonTerminalNode {
6
+ getParameterName() {
7
+ let parameterName;
8
+
9
+ this.someChildNode((childNode, index) => {
10
+ const nameTerminalNode = childNode, ///
11
+ content = nameTerminalNode.getContent();
12
+
13
+ parameterName = content; ///
14
+
15
+ if (index === 0) {
16
+ return true;
17
+ }
18
+ });
19
+
20
+ return parameterName;
21
+ }
22
+
23
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParameterNode, ruleName, childNodes, opacity, precedence); }
7
24
  }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import { NonTerminalNode } from "occam-parsers";
4
+
5
+ import { isNodeLabelsNode } from "../utilities/node";
6
+
7
+ export default class ParenthesisedLabelsNode extends NonTerminalNode {
8
+ getLabelNodes() {
9
+ const labelsNode = this.getLabelsNode(),
10
+ labelNodes = labelsNode.getLabelNodes();
11
+
12
+ return labelNodes;
13
+ }
14
+
15
+ getLabelsNode() {
16
+ const labelsNode = this.findChildNode((childNode) => {
17
+ const childNodeLabelsNode = isNodeLabelsNode(childNode);
18
+
19
+ if (childNodeLabelsNode) {
20
+ return true;
21
+ }
22
+ }) || null;
23
+
24
+ return labelsNode;
25
+ }
26
+
27
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParenthesisedLabelsNode, ruleName, childNodes, opacity, precedence); }
28
+ }
@@ -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 PremiseNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(PremiseNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode, isNodeProcedureCallNode } from "../utilities/node";
6
+
7
+ export default class PremiseNode 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
+ getProcedureCallNode() {
21
+ const procedureCallNode = this.findChildNode((childNode) => {
22
+ const childNodeProcedureCallNode = isNodeProcedureCallNode(childNode);
23
+
24
+ if (childNodeProcedureCallNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return procedureCallNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PremiseNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
@@ -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 ProcedureCallNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ProcedureCallNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeParameterNode, isNodeReferenceNode } from "../utilities/node";
6
+
7
+ export default class ProcedureCallNode extends NonTerminalNode {
8
+ getReferenceNode() {
9
+ const referenceNode = this.findChildNode((childNode) => {
10
+ const childNodeReferenceNode = isNodeReferenceNode(childNode);
11
+
12
+ if (childNodeReferenceNode) {
13
+ return true;
14
+ }
15
+ }) || null;
16
+
17
+ return referenceNode;
18
+ }
19
+
20
+ getParameterNodes() {
21
+ const parameterNodes = this.filterChildNode((childNode) => {
22
+ const childNodeParameterNode = isNodeParameterNode(childNode);
23
+
24
+ if (childNodeParameterNode) {
25
+ return true;
26
+ }
27
+ });
28
+
29
+ return parameterNodes;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProcedureCallNode, ruleName, childNodes, opacity, precedence); }
7
33
  }
package/src/node/proof.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 ProofNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ProofNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeDerivationNode } from "../utilities/node";
6
+
7
+ export default class ProofNode extends NonTerminalNode {
8
+ getDerivationNode() {
9
+ const derivationNode = this.findChildNode((childNode) => {
10
+ const childNodeDerivationNode = isNodeDerivationNode(childNode);
11
+
12
+ if (childNodeDerivationNode) {
13
+ return true;
14
+ }
15
+ });
16
+
17
+ return derivationNode;
18
+ }
19
+
20
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProofNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
@@ -1,22 +1,28 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class PropertyNode extends Node {
5
+ import { SINGLE_SPACE } from "../constants";
6
+
7
+ export default class PropertyNode extends NonTerminalNode {
6
8
  getPropertyName() {
7
- const propertyName = this.reduceChildNode((propertyName, firstChildNode) => {
8
- const nameTerminalNode = firstChildNode, ///
9
- content = nameTerminalNode.getContent();
9
+ const names = this.getNames(),
10
+ propertyName = names.join(SINGLE_SPACE);
10
11
 
11
- propertyName = (propertyName !== null) ?
12
- `${propertyName} ${content}` :
13
- content; ///
12
+ return propertyName;
13
+ }
14
14
 
15
- return propertyName;
16
- }, null);
15
+ getNames() {
16
+ const names = this.mapChildNode((childNode) => {
17
+ const terminalNode = childNode, ///
18
+ content = terminalNode.getContent(),
19
+ name = content; //
17
20
 
18
- return propertyName;
21
+ return name;
22
+ });
23
+
24
+ return names;
19
25
  }
20
26
 
21
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(PropertyNode, ruleName, childNodes, opacity, precedence); }
27
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyNode, ruleName, childNodes, opacity, precedence); }
22
28
  }
@@ -1,7 +1,39 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
+ import { isNodeTermNode, isNodePropertyNode } from "../utilities/node";
4
5
 
5
- export default class PropertyRelationNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(PropertyRelationNode, ruleName, childNodes, opacity, precedence); }
6
+ export default class PropertyRelationNode extends NonTerminalNode {
7
+ getTermNode() {
8
+ const termNode = this.findChildNode((childNode) => {
9
+ const childNodeTermNode = isNodeTermNode(childNode);
10
+
11
+ if (childNodeTermNode) {
12
+ return true;
13
+ }
14
+ }) || null;
15
+
16
+ return termNode;
17
+ }
18
+
19
+ getPropertyNode() {
20
+ const propertyNode = this.findChildNode((childNode) => {
21
+ const childNodePropertyNode = isNodePropertyNode(childNode);
22
+
23
+ if (childNodePropertyNode) {
24
+ return true;
25
+ }
26
+ }) || null;
27
+
28
+ return propertyNode;
29
+ }
30
+
31
+ getPropertyName() {
32
+ const propertyNode = this.getPropertyNode(),
33
+ propertyName = propertyNode.getPropertyName();
34
+
35
+ return propertyName;
36
+ }
37
+
38
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyRelationNode, ruleName, childNodes, opacity, precedence); }
7
39
  }
@@ -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 ReferenceNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ReferenceNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeMetavariableNode } from "../utilities/node";
6
+
7
+ export default class ReferenceNode 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(ReferenceNode, ruleName, childNodes, opacity, precedence); }
7
21
  }
package/src/node/rule.js CHANGED
@@ -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 RuleNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class RuleNode extends TopLevelMetaAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,7 +1,112 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class StatementNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(StatementNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeTermNode,
6
+ isNodeFrameNode,
7
+ isNodeEqualityNode,
8
+ isNodeJudgementNode,
9
+ isNodeMetavariableNode,
10
+ isNodeTypeAssertionNode,
11
+ isNodeSubproofAssertionNode,
12
+ isNodePropertyAssertionNode } from "../utilities/node";
13
+
14
+ export default class StatementNode extends NonTerminalNode {
15
+ getTermNodes() {
16
+ const termNodes = this.filterDescendantNode((descendantNode) => {
17
+ const descendantNodeTermNode = isNodeTermNode(descendantNode);
18
+
19
+ if (descendantNodeTermNode) {
20
+ return true;
21
+ }
22
+ });
23
+
24
+ return termNodes;
25
+ }
26
+
27
+ getFrameNodes() {
28
+ const frameNodes = this.filterDescendantNode((descendantNode) => {
29
+ const descendantNodeFrameNode = isNodeFrameNode(descendantNode);
30
+
31
+ if (descendantNodeFrameNode) {
32
+ return true;
33
+ }
34
+ });
35
+
36
+ return frameNodes;
37
+ }
38
+
39
+ getEqualityNode() {
40
+ const equalityNode = this.findChildNode((childNode) => {
41
+ const childNodeEqualityNode = isNodeEqualityNode(childNode);
42
+
43
+ if (childNodeEqualityNode) {
44
+ return true;
45
+ }
46
+ }) || null;
47
+
48
+ return equalityNode;
49
+ }
50
+
51
+ getJudgementNode() {
52
+ const judgementNode = this.findChildNode((childNode) => {
53
+ const childNodeJudgementNode = isNodeJudgementNode(childNode);
54
+
55
+ if (childNodeJudgementNode) {
56
+ return true;
57
+ }
58
+ }) || null;
59
+
60
+ return judgementNode;
61
+ }
62
+
63
+ getMetavariableNode() {
64
+ const metavariableNode = this.findChildNode((childNode) => {
65
+ const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
66
+
67
+ if (childNodeMetavariableNode) {
68
+ return true;
69
+ }
70
+ }) || null;
71
+
72
+ return metavariableNode;
73
+ }
74
+
75
+ getTypeAssertionNode() {
76
+ const typeAssertionNode = this.findChildNode((childNode) => {
77
+ const childNodeTypeAssertionNode = isNodeTypeAssertionNode(childNode);
78
+
79
+ if (childNodeTypeAssertionNode) {
80
+ return true;
81
+ }
82
+ }) || null;
83
+
84
+ return typeAssertionNode;
85
+ }
86
+
87
+ getSubproofAssertionNode() {
88
+ const subproofAssertionNode = this.findChildNode((childNode) => {
89
+ const childNodeSubproofAssertionNode = isNodeSubproofAssertionNode(childNode);
90
+
91
+ if (childNodeSubproofAssertionNode) {
92
+ return true;
93
+ }
94
+ }) || null;
95
+
96
+ return subproofAssertionNode;
97
+ }
98
+
99
+ getPropertyAssertionNode() {
100
+ const propertyAssertionNode = this.findChildNode((childNode) => {
101
+ const childNodePropertyAssertionNode = isNodePropertyAssertionNode(childNode);
102
+
103
+ if (childNodePropertyAssertionNode) {
104
+ return true;
105
+ }
106
+ }) || null;
107
+
108
+ return propertyAssertionNode;
109
+ }
110
+
111
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementNode, ruleName, childNodes, opacity, precedence); }
7
112
  }
package/src/node/step.js CHANGED
@@ -1,7 +1,45 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class StepNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode, isNodeReferenceNode } from "../utilities/node";
6
+
7
+ export default class StepNode extends NonTerminalNode {
8
+ isStepNode() {
9
+ const stepNode = true;
10
+
11
+ return stepNode;
12
+ }
13
+
14
+ isSubproofNode() {
15
+ const subproofNode = false;
16
+
17
+ return subproofNode;
18
+ }
19
+
20
+ getStatementNode() {
21
+ const statementNode = this.findChildNode((childNode) => {
22
+ const childNodeStatementNode = isNodeStatementNode(childNode);
23
+
24
+ if (childNodeStatementNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return statementNode;
30
+ }
31
+
32
+ getReferenceNode() {
33
+ const referenceNode = this.findChildNode((childNode) => {
34
+ const childNodeReferenceNode = isNodeReferenceNode(childNode);
35
+
36
+ if (childNodeReferenceNode) {
37
+ return true;
38
+ }
39
+ }) || null;
40
+
41
+ return referenceNode;
42
+ }
43
+
44
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
7
45
  }
@@ -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 SubDerivationNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SubDerivationNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStepNode, isNodeSubproofNode } from "../utilities/node";
6
+
7
+ export default class SubDerivationNode 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(SubDerivationNode, ruleName, childNodes, opacity, precedence); }
7
22
  }
@@ -1,7 +1,45 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class SubproofNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SubproofNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeSuppositionNode, isNodeSubDerivationNode } from "../utilities/node";
6
+
7
+ export default class SubproofNode extends NonTerminalNode {
8
+ isStepNode() {
9
+ const stepNode = false;
10
+
11
+ return stepNode;
12
+ }
13
+
14
+ isSubproofNode() {
15
+ const subproofNode = true;
16
+
17
+ return subproofNode;
18
+ }
19
+
20
+ getSubDerivationNode() {
21
+ const subDerivationNode = this.findChildNode((childNode) => {
22
+ const childNodeSubDerivationNode = isNodeSubDerivationNode(childNode);
23
+
24
+ if (childNodeSubDerivationNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return subDerivationNode;
30
+ }
31
+
32
+ getSuppositionNodes() {
33
+ const suppositionNodes = this.filterChildNode((childNode) => {
34
+ const childNodeSuppositionNode = isNodeSuppositionNode(childNode);
35
+
36
+ if (childNodeSuppositionNode) {
37
+ return true;
38
+ }
39
+ });
40
+
41
+ return suppositionNodes;
42
+ }
43
+
44
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofNode, ruleName, childNodes, opacity, precedence); }
7
45
  }
@@ -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 SuppositionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SuppositionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { isNodeStatementNode, isNodeProcedureCallNode } from "../utilities/node";
6
+
7
+ export default class SuppositionNode 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
+ getProcedureCallNode() {
21
+ const procedureCallNode = this.findChildNode((childNode) => {
22
+ const childNodeProcedureCallNode = isNodeProcedureCallNode(childNode);
23
+
24
+ if (childNodeProcedureCallNode) {
25
+ return true;
26
+ }
27
+ }) || null;
28
+
29
+ return procedureCallNode;
30
+ }
31
+
32
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SuppositionNode, ruleName, childNodes, opacity, precedence); }
7
33
  }