occam-verify-cli 1.0.185 → 1.0.198

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 (244) hide show
  1. package/lib/constants.js +5 -1
  2. package/lib/context/file.js +3 -3
  3. package/lib/dom/assertion/contained.js +12 -24
  4. package/lib/dom/assertion/defined.js +9 -21
  5. package/lib/dom/assertion/property.js +8 -10
  6. package/lib/dom/assertion/satisfies.js +6 -8
  7. package/lib/dom/assertion/subproof.js +3 -5
  8. package/lib/dom/assertion/type.js +6 -8
  9. package/lib/dom/axiom.js +15 -100
  10. package/lib/dom/conjecture.js +5 -4
  11. package/lib/dom/constructor/bracketed.js +6 -7
  12. package/lib/dom/declaration/complexType.js +6 -6
  13. package/lib/dom/declaration/constructor.js +6 -6
  14. package/lib/dom/declaration/metavariable.js +3 -5
  15. package/lib/dom/declaration/type.js +2 -2
  16. package/lib/dom/declaration/variable.js +6 -6
  17. package/lib/dom/declaration.js +14 -16
  18. package/lib/dom/derivation.js +2 -4
  19. package/lib/dom/equality.js +9 -11
  20. package/lib/dom/frame.js +14 -18
  21. package/lib/dom/judgement.js +8 -10
  22. package/lib/dom/lemma.js +5 -4
  23. package/lib/dom/metaLemma.js +5 -4
  24. package/lib/dom/metaType.js +2 -4
  25. package/lib/dom/metatheorem.js +5 -4
  26. package/lib/dom/metavariable.js +12 -15
  27. package/lib/dom/parameter.js +2 -4
  28. package/lib/dom/procedureCall.js +6 -10
  29. package/lib/dom/proof.js +2 -4
  30. package/lib/dom/property.js +16 -51
  31. package/lib/dom/propertyRelation.js +14 -16
  32. package/lib/dom/reference.js +7 -11
  33. package/lib/dom/rule.js +6 -8
  34. package/lib/dom/statement.js +27 -31
  35. package/lib/dom/step.js +4 -6
  36. package/lib/dom/subDerivation.js +2 -4
  37. package/lib/dom/subproof.js +6 -8
  38. package/lib/dom/term.js +12 -20
  39. package/lib/dom/theorem.js +5 -4
  40. package/lib/dom/topLevelAssertion.js +30 -24
  41. package/lib/dom/topLevelMetaAssertion.js +76 -140
  42. package/lib/dom/type.js +8 -25
  43. package/lib/dom/variable.js +5 -11
  44. package/lib/equivalence.js +4 -6
  45. package/lib/mixins/term/verify.js +4 -8
  46. package/lib/node/argument.js +116 -0
  47. package/lib/node/assertion/contained.js +48 -53
  48. package/lib/node/assertion/defined.js +41 -53
  49. package/lib/node/assertion/property.js +23 -53
  50. package/lib/node/assertion/satisfies.js +23 -53
  51. package/lib/node/assertion/subproof.js +16 -53
  52. package/lib/node/assertion/type.js +23 -53
  53. package/lib/node/axiom.js +6 -52
  54. package/lib/node/combinator.js +6 -52
  55. package/lib/node/conclusion.js +16 -53
  56. package/lib/node/conjecture.js +6 -52
  57. package/lib/node/constructor.js +6 -52
  58. package/lib/node/declaration/combinator.js +8 -56
  59. package/lib/node/declaration/complexType.js +42 -86
  60. package/lib/node/declaration/constructor.js +26 -77
  61. package/lib/node/declaration/metavariable.js +30 -53
  62. package/lib/node/declaration/property.js +19 -69
  63. package/lib/node/declaration/type.js +45 -78
  64. package/lib/node/declaration/variable.js +21 -81
  65. package/lib/node/declaration.js +23 -53
  66. package/lib/node/deduction.js +16 -53
  67. package/lib/node/derivation.js +42 -51
  68. package/lib/node/equality.js +32 -53
  69. package/lib/node/error.js +6 -52
  70. package/lib/node/frame.js +30 -53
  71. package/lib/node/judgement.js +23 -53
  72. package/lib/node/label.js +16 -53
  73. package/lib/node/labels.js +116 -0
  74. package/lib/node/lemma.js +6 -52
  75. package/lib/node/metaArgument.js +116 -0
  76. package/lib/node/metaLemma.js +6 -52
  77. package/lib/node/metaType.js +14 -55
  78. package/lib/node/metatheorem.js +6 -52
  79. package/lib/node/metavariable.js +30 -56
  80. package/lib/node/nonTerminal.js +200 -0
  81. package/lib/node/parameter.js +22 -53
  82. package/lib/node/parenthesisedLabel.js +116 -0
  83. package/lib/node/parenthesisedLabels.js +123 -0
  84. package/lib/node/premise.js +23 -53
  85. package/lib/node/procedureCall.js +23 -53
  86. package/lib/node/proof.js +16 -53
  87. package/lib/node/property.js +18 -57
  88. package/lib/node/propertyRelation.js +30 -53
  89. package/lib/node/reference.js +16 -53
  90. package/lib/node/rule.js +44 -53
  91. package/lib/node/statement.js +139 -53
  92. package/lib/node/step.js +37 -53
  93. package/lib/node/subDerivation.js +49 -51
  94. package/lib/node/subproof.js +44 -53
  95. package/lib/node/substitution/frame.js +123 -0
  96. package/lib/node/substitution/reference.js +123 -0
  97. package/lib/node/substitution/statement.js +123 -0
  98. package/lib/node/substitution/term.js +123 -0
  99. package/lib/node/supposition.js +23 -53
  100. package/lib/node/term.js +41 -53
  101. package/lib/node/theorem.js +6 -52
  102. package/lib/node/topLevelAssertion.js +66 -54
  103. package/lib/node/topLevelMetaAssertion.js +45 -54
  104. package/lib/node/type.js +14 -55
  105. package/lib/{node.js → node/types.js} +22 -24
  106. package/lib/node/variable.js +14 -55
  107. package/lib/nominal/parser.js +3 -3
  108. package/lib/nonTerminalNodeMap.js +14 -4
  109. package/lib/ruleNames.js +42 -2
  110. package/lib/substitution/frame.js +5 -7
  111. package/lib/substitution/reference.js +5 -7
  112. package/lib/substitution/term.js +5 -7
  113. package/lib/unifier/metaLevel.js +4 -4
  114. package/lib/utilities/brackets.js +5 -5
  115. package/lib/utilities/json.js +18 -1
  116. package/lib/utilities/node.js +1 -37
  117. package/lib/utilities/subproof.js +13 -4
  118. package/lib/utilities/type.js +16 -4
  119. package/lib/verifier/topLevel.js +6 -6
  120. package/package.json +2 -2
  121. package/src/constants.js +1 -0
  122. package/src/context/file.js +2 -2
  123. package/src/dom/assertion/contained.js +12 -34
  124. package/src/dom/assertion/defined.js +9 -30
  125. package/src/dom/assertion/property.js +7 -12
  126. package/src/dom/assertion/satisfies.js +5 -10
  127. package/src/dom/assertion/subproof.js +2 -6
  128. package/src/dom/assertion/type.js +7 -10
  129. package/src/dom/axiom.js +7 -77
  130. package/src/dom/conjecture.js +6 -1
  131. package/src/dom/constructor/bracketed.js +6 -8
  132. package/src/dom/declaration/complexType.js +8 -7
  133. package/src/dom/declaration/constructor.js +6 -7
  134. package/src/dom/declaration/metavariable.js +2 -6
  135. package/src/dom/declaration/type.js +4 -2
  136. package/src/dom/declaration/variable.js +6 -7
  137. package/src/dom/declaration.js +12 -20
  138. package/src/dom/derivation.js +1 -4
  139. package/src/dom/equality.js +13 -17
  140. package/src/dom/frame.js +11 -25
  141. package/src/dom/judgement.js +7 -12
  142. package/src/dom/lemma.js +6 -1
  143. package/src/dom/metaLemma.js +6 -1
  144. package/src/dom/metaType.js +1 -5
  145. package/src/dom/metatheorem.js +6 -1
  146. package/src/dom/metavariable.js +11 -25
  147. package/src/dom/parameter.js +2 -6
  148. package/src/dom/procedureCall.js +5 -14
  149. package/src/dom/proof.js +1 -4
  150. package/src/dom/property.js +21 -78
  151. package/src/dom/propertyRelation.js +16 -22
  152. package/src/dom/reference.js +6 -18
  153. package/src/dom/rule.js +6 -12
  154. package/src/dom/statement.js +26 -46
  155. package/src/dom/step.js +3 -5
  156. package/src/dom/subDerivation.js +1 -4
  157. package/src/dom/subproof.js +8 -12
  158. package/src/dom/term.js +14 -33
  159. package/src/dom/theorem.js +6 -1
  160. package/src/dom/topLevelAssertion.js +30 -25
  161. package/src/dom/topLevelMetaAssertion.js +87 -55
  162. package/src/dom/type.js +11 -37
  163. package/src/dom/variable.js +4 -12
  164. package/src/equivalence.js +3 -6
  165. package/src/mixins/term/verify.js +5 -11
  166. package/src/node/argument.js +16 -0
  167. package/src/node/assertion/contained.js +49 -3
  168. package/src/node/assertion/defined.js +42 -3
  169. package/src/node/assertion/property.js +19 -3
  170. package/src/node/assertion/satisfies.js +19 -3
  171. package/src/node/assertion/subproof.js +12 -3
  172. package/src/node/assertion/type.js +19 -3
  173. package/src/node/axiom.js +3 -3
  174. package/src/node/combinator.js +3 -3
  175. package/src/node/conclusion.js +12 -3
  176. package/src/node/conjecture.js +3 -3
  177. package/src/node/constructor.js +3 -3
  178. package/src/node/declaration/combinator.js +7 -8
  179. package/src/node/declaration/complexType.js +40 -43
  180. package/src/node/declaration/constructor.js +25 -30
  181. package/src/node/declaration/metavariable.js +26 -3
  182. package/src/node/declaration/property.js +17 -23
  183. package/src/node/declaration/type.js +43 -32
  184. package/src/node/declaration/variable.js +19 -37
  185. package/src/node/declaration.js +19 -3
  186. package/src/node/deduction.js +12 -3
  187. package/src/node/derivation.js +15 -3
  188. package/src/node/equality.js +32 -3
  189. package/src/node/error.js +3 -3
  190. package/src/node/frame.js +26 -3
  191. package/src/node/judgement.js +19 -3
  192. package/src/node/label.js +12 -3
  193. package/src/node/labels.js +16 -0
  194. package/src/node/lemma.js +3 -3
  195. package/src/node/metaArgument.js +16 -0
  196. package/src/node/metaLemma.js +3 -3
  197. package/src/node/metaType.js +15 -8
  198. package/src/node/metatheorem.js +3 -3
  199. package/src/node/metavariable.js +32 -9
  200. package/src/node/nonTerminal.js +112 -0
  201. package/src/node/parameter.js +20 -3
  202. package/src/node/parenthesisedLabel.js +16 -0
  203. package/src/node/parenthesisedLabels.js +23 -0
  204. package/src/node/premise.js +19 -3
  205. package/src/node/procedureCall.js +19 -3
  206. package/src/node/proof.js +12 -3
  207. package/src/node/property.js +18 -12
  208. package/src/node/propertyRelation.js +26 -3
  209. package/src/node/reference.js +12 -3
  210. package/src/node/rule.js +40 -3
  211. package/src/node/statement.js +151 -3
  212. package/src/node/step.js +31 -3
  213. package/src/node/subDerivation.js +22 -3
  214. package/src/node/subproof.js +38 -3
  215. package/src/node/substitution/frame.js +23 -0
  216. package/src/node/substitution/reference.js +23 -0
  217. package/src/node/substitution/statement.js +23 -0
  218. package/src/node/substitution/term.js +23 -0
  219. package/src/node/supposition.js +19 -3
  220. package/src/node/term.js +38 -3
  221. package/src/node/theorem.js +3 -3
  222. package/src/node/topLevelAssertion.js +69 -3
  223. package/src/node/topLevelMetaAssertion.js +40 -3
  224. package/src/node/type.js +15 -8
  225. package/src/node/types.js +16 -0
  226. package/src/node/variable.js +15 -8
  227. package/src/nominal/parser.js +1 -1
  228. package/src/nonTerminalNodeMap.js +67 -37
  229. package/src/ruleNames.js +11 -1
  230. package/src/substitution/frame.js +7 -10
  231. package/src/substitution/reference.js +7 -10
  232. package/src/substitution/term.js +7 -9
  233. package/src/unifier/metaLevel.js +2 -3
  234. package/src/utilities/brackets.js +8 -8
  235. package/src/utilities/json.js +19 -0
  236. package/src/utilities/node.js +0 -27
  237. package/src/utilities/subproof.js +22 -6
  238. package/src/utilities/type.js +9 -0
  239. package/src/verifier/topLevel.js +5 -10
  240. package/lib/defaultTerminalNode.js +0 -20
  241. package/lib/mixins/node.js +0 -145
  242. package/src/defaultTerminalNode.js +0 -7
  243. package/src/mixins/node.js +0 -201
  244. package/src/node.js +0 -29
package/src/node/rule.js CHANGED
@@ -1,7 +1,44 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
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
+ import { PROOF_RULE_NAME, PREMISE_RULE_NAME, CONCLUSION_RULE_NAME, PARENTHESISED_LABELS_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class RuleNode extends NonTerminalNode {
8
+ getLabelNodes() {
9
+ const parenthesisedLabelsNode = this.getParenthesisedLabelsNode(),
10
+ labelNodes = parenthesisedLabelsNode.getLabelNodes();
11
+
12
+ return labelNodes;
13
+ }
14
+
15
+ getProofNode() {
16
+ const ruleName = PROOF_RULE_NAME,
17
+ proofNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return proofNode;
20
+ }
21
+
22
+ getPremiseNodes() {
23
+ const ruleName = PREMISE_RULE_NAME,
24
+ premiseNodes = this.getNodesByRuleName(ruleName);
25
+
26
+ return premiseNodes;
27
+ }
28
+
29
+ getConclusionNode() {
30
+ const ruleName = CONCLUSION_RULE_NAME,
31
+ conclusionNode = this.getNodeByRuleName(ruleName);
32
+
33
+ return conclusionNode;
34
+ }
35
+
36
+ getParenthesisedLabelsNode() {
37
+ const ruleName = PARENTHESISED_LABELS_RULE_NAME,
38
+ parenthesisedLabelsNode = this.getNodeByRuleName(ruleName);
39
+
40
+ return parenthesisedLabelsNode;
41
+ }
42
+
43
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
7
44
  }
@@ -1,7 +1,155 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
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 { TERM_RULE_NAME,
6
+ FRAME_RULE_NAME,
7
+ EQUALITY_RULE_NAME,
8
+ JUDGEMENT_RULE_NAME,
9
+ METAVARIABLE_RULE_NAME,
10
+ META_ARGUMENT_RULE_NAME,
11
+ TYPE_ASSERTION_RULE_NAME,
12
+ DEFINED_ASSERTION_RULE_NAME,
13
+ TERM_SUBSTITUTION_RULE_NAME,
14
+ PROPERTY_ASSERTION_RULE_NAME,
15
+ SUBPROOF_ASSERTION_RULE_NAME,
16
+ FRAME_SUBSTITUTION_RULE_NAME,
17
+ SATISFIES_ASSERTION_RULE_NAME,
18
+ CONTAINED_ASSERTION_RULE_NAME,
19
+ REFERENCE_SUBSTITUTION_RULE_NAME,
20
+ STATEMENT_SUBSTITUTION_RULE_NAME } from "../ruleNames";
21
+
22
+ export default class StatementNode extends NonTerminalNode {
23
+ getTermNodes() {
24
+ const ruleName = TERM_RULE_NAME,
25
+ termNodes = this.getNodeByRuleName(ruleName);
26
+
27
+ return termNodes;
28
+ }
29
+
30
+ getFrameNodes() {
31
+ const ruleName = FRAME_RULE_NAME,
32
+ frameNodes = this.getNodeByRuleName(ruleName);
33
+
34
+ return frameNodes;
35
+ }
36
+
37
+ getEqualityNode() {
38
+ const ruleName = EQUALITY_RULE_NAME,
39
+ equalityNode = this.getNodeByRuleName(ruleName);
40
+
41
+ return equalityNode;
42
+ }
43
+
44
+ getJudgementNode() {
45
+ const ruleName = JUDGEMENT_RULE_NAME,
46
+ judgementNode = this.getNodeByRuleName(ruleName);
47
+
48
+ return judgementNode;
49
+ }
50
+
51
+ getMetavariableNode() {
52
+ const ruleName = METAVARIABLE_RULE_NAME,
53
+ metavariableNode = this.getNodeByRuleName(ruleName);
54
+
55
+ return metavariableNode;
56
+ }
57
+
58
+ getTypeAssertionNode() {
59
+ const ruleName = TYPE_ASSERTION_RULE_NAME,
60
+ typeAssertionNode = this.getNodeByRuleName(ruleName);
61
+
62
+ return typeAssertionNode;
63
+ }
64
+
65
+ getDefinedAssertionNode() {
66
+ const ruleName = DEFINED_ASSERTION_RULE_NAME,
67
+ definedAssertionNode = this.getNodeByRuleName(ruleName);
68
+
69
+ return definedAssertionNode;
70
+ }
71
+
72
+ getTermSubstitutionNode() {
73
+ const ruleName = TERM_SUBSTITUTION_RULE_NAME,
74
+ termSubstitutionNode = this.getNodeByRuleName(ruleName);
75
+
76
+ return termSubstitutionNode;
77
+ }
78
+
79
+ getFrameSubstitutionNode() {
80
+ const ruleName = FRAME_SUBSTITUTION_RULE_NAME,
81
+ frameSubstitutionNode = this.getNodeByRuleName(ruleName);
82
+
83
+ return frameSubstitutionNode;
84
+ }
85
+
86
+ getSubproofAssertionNode() {
87
+ const ruleName = SUBPROOF_ASSERTION_RULE_NAME,
88
+ subproofAssertionNode = this.getNodeByRuleName(ruleName);
89
+
90
+ return subproofAssertionNode;
91
+ }
92
+
93
+ getPropertyAssertionNode() {
94
+ const ruleName = PROPERTY_ASSERTION_RULE_NAME,
95
+ propertyAssertionNode = this.getNodeByRuleName(ruleName);
96
+
97
+ return propertyAssertionNode;
98
+ }
99
+
100
+ getSingularStatementNode() {
101
+ let singularStatementNode = null;
102
+
103
+ const singularMetaArgumentNode = this.getSingularMetaArgumentNode();
104
+
105
+ if (singularMetaArgumentNode !== null) {
106
+ singularStatementNode = singularMetaArgumentNode.getSingularStatementNode();
107
+ }
108
+
109
+ return singularStatementNode;
110
+ }
111
+
112
+ getContainedAssertionNode() {
113
+ const ruleName = CONTAINED_ASSERTION_RULE_NAME,
114
+ containedAssertionNode = this.getNodeByRuleName(ruleName);
115
+
116
+ return containedAssertionNode;
117
+ }
118
+
119
+ getSatisfiedAssertionNode() {
120
+ const ruleName = SATISFIES_ASSERTION_RULE_NAME,
121
+ satisfiedAssertionNode = this.getNodeByRuleName(ruleName);
122
+
123
+ return satisfiedAssertionNode;
124
+ }
125
+
126
+ getSingularMetavariableNode() {
127
+ const ruleName = METAVARIABLE_RULE_NAME,
128
+ singularMetavariableNode = this.getSingularTNodeByRuleName(ruleName);
129
+
130
+ return singularMetavariableNode;
131
+ }
132
+
133
+ getSingularMetaArgumentNode() {
134
+ const ruleName = META_ARGUMENT_RULE_NAME,
135
+ singularMetaArgumentNode = this.getNodeByRuleName(ruleName);
136
+
137
+ return singularMetaArgumentNode;
138
+ }
139
+
140
+ getReferenceSubstitutionNode() {
141
+ const ruleName = REFERENCE_SUBSTITUTION_RULE_NAME,
142
+ referenceSubstitutionNode = this.getNodeByRuleName(ruleName);
143
+
144
+ return referenceSubstitutionNode;
145
+ }
146
+
147
+ getStatementSubstitutionNode() {
148
+ const ruleName = STATEMENT_SUBSTITUTION_RULE_NAME,
149
+ statementSubstitutionNode = this.getNodeByRuleName(ruleName);
150
+
151
+ return statementSubstitutionNode;
152
+ }
153
+
154
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementNode, ruleName, childNodes, opacity, precedence); }
7
155
  }
package/src/node/step.js CHANGED
@@ -1,7 +1,35 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
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 { REFERENCE_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
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 ruleName = STATEMENT_RULE_NAME,
22
+ statementNode = this.getNodeByRuleName(ruleName);
23
+
24
+ return statementNode;
25
+ }
26
+
27
+ getReferenceNode() {
28
+ const ruleName = REFERENCE_RULE_NAME,
29
+ referenceNode = this.getNodeByRuleName(ruleName);
30
+
31
+ return referenceNode;
32
+ }
33
+
34
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
7
35
  }
@@ -1,7 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
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 { STEP_RULE_NAME, SUBPROOF_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class SubDerivationNode extends NonTerminalNode {
8
+ getLastStepNode() {
9
+ const ruleName = STEP_RULE_NAME,
10
+ lastStepNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastStepNode;
13
+ }
14
+
15
+ getStepOrSubproofNodes() {
16
+ const ruleNames = [
17
+ STEP_RULE_NAME,
18
+ SUBPROOF_RULE_NAME,
19
+ ],
20
+ stepOrSubproofNodes = this.getNodesByRuleName(...ruleNames);
21
+
22
+ return stepOrSubproofNodes;
23
+ }
24
+
25
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubDerivationNode, ruleName, childNodes, opacity, precedence); }
7
26
  }
@@ -1,7 +1,42 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
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 { SUPPOSITION_RULE_NAME, SUB_DERIVATION_RULE_NAME } from "../ruleNames";
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
+ getLastStepNode() {
21
+ const subDerivationNode = this.getSubDerivationNode(),
22
+ lastStepNode = subDerivationNode.getLastStepNode();
23
+
24
+ return lastStepNode;
25
+ }
26
+
27
+ getSubDerivationNode() {
28
+ const ruleName = SUB_DERIVATION_RULE_NAME,
29
+ subDerivationNode = this.getNodeByRuleName(ruleName);
30
+
31
+ return subDerivationNode;
32
+ }
33
+
34
+ getSuppositionNodes() {
35
+ const ruleName = SUPPOSITION_RULE_NAME,
36
+ suppositionNodes = this.getNodesByRuleName(ruleName);
37
+
38
+ return suppositionNodes;
39
+ }
40
+
41
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofNode, ruleName, childNodes, opacity, precedence); }
7
42
  }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { FRAME_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class FrameSubstitutionNode extends NonTerminalNode {
8
+ getLastFrameNode() {
9
+ const ruleName = FRAME_RULE_NAME,
10
+ lastFrameNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastFrameNode;
13
+ }
14
+
15
+ getFirstFrameNode() {
16
+ const ruleName = FRAME_RULE_NAME,
17
+ firstFrameNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstFrameNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { REFERENCE_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class ReferenceSubstitutionNode extends NonTerminalNode {
8
+ getLastReferenceNode() {
9
+ const ruleName = REFERENCE_RULE_NAME,
10
+ lastReferenceNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastReferenceNode;
13
+ }
14
+
15
+ getFirstReferenceNode() {
16
+ const ruleName = REFERENCE_RULE_NAME,
17
+ firstReferenceNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstReferenceNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ReferenceSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class StatementSubstitutionNode extends NonTerminalNode {
8
+ getLastStatementNode() {
9
+ const ruleName = STATEMENT_RULE_NAME,
10
+ lastStatementNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastStatementNode;
13
+ }
14
+
15
+ getFirstStatementNode() {
16
+ const ruleName = STATEMENT_RULE_NAME,
17
+ firstStatementNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstStatementNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
+
5
+ import { TERM_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class TermSubstitutionNode extends NonTerminalNode {
8
+ getLastTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ lastTermNode = this.getLastNodeByRuleName(ruleName);
11
+
12
+ return lastTermNode;
13
+ }
14
+
15
+ getFirstTermNode() {
16
+ const ruleName = TERM_RULE_NAME,
17
+ firstTermNode = this.getFirstNodeByRuleName(ruleName);
18
+
19
+ return firstTermNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -1,7 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
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 { STATEMENT_RULE_NAME, PROCEDURE_CALL_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class SuppositionNode extends NonTerminalNode {
8
+ getStatementNode() {
9
+ const ruleName = STATEMENT_RULE_NAME,
10
+ statementNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return statementNode;
13
+ }
14
+
15
+ getProcedureCallNode() {
16
+ const ruleName = PROCEDURE_CALL_RULE_NAME,
17
+ procedureCallNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return procedureCallNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SuppositionNode, ruleName, childNodes, opacity, precedence); }
7
23
  }
package/src/node/term.js CHANGED
@@ -1,7 +1,42 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- export default class TermNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
5
+ import { ARGUMENT_RULE_NAME, VARIABLE_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class TermNode extends NonTerminalNode {
8
+ getVariableNodes() {
9
+ const ruleName = VARIABLE_RULE_NAME,
10
+ variableNodes = this.getNodesByRuleName(ruleName);
11
+
12
+ return variableNodes;
13
+ }
14
+
15
+ getSingularTermNode() {
16
+ let singularTermNode = null;
17
+
18
+ const singularArgumentNode = this.getSingularArgumentNode();
19
+
20
+ if (singularArgumentNode !== null) {
21
+ singularTermNode = singularArgumentNode.getSingularTermNode();
22
+ }
23
+
24
+ return singularTermNode;
25
+ }
26
+
27
+ getSingularArgumentNode() {
28
+ const ruleName = ARGUMENT_RULE_NAME,
29
+ singularArgumentNode = this.getSingularTNodeByRuleName(ruleName);
30
+
31
+ return singularArgumentNode;
32
+ }
33
+
34
+ getSingularVariableNode() {
35
+ const ruleName = VARIABLE_RULE_NAME,
36
+ singularVariableNode = this.getSingularTNodeByRuleName(ruleName);
37
+
38
+ return singularVariableNode;
39
+ }
40
+
41
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
7
42
  }
@@ -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 TheoremNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TheoremNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class TheoremNode extends TopLevelAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(TheoremNode, ruleName, childNodes, opacity, precedence); }
7
7
  }
@@ -1,7 +1,73 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- export default class TopLevelAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TopLevelAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { SATISFIABLE } from "../constants";
6
+ import { PROOF_RULE_NAME,
7
+ DEDUCTION_RULE_NAME,
8
+ SUPPOSITION_RULE_NAME,
9
+ PARENTHESISED_LABELS_RULE_NAME } from "../ruleNames";
10
+
11
+ export default class TopLevelAssertionNode extends NonTerminalNode {
12
+ isSatisfiable() {
13
+ let satisfiable = false;
14
+
15
+ this.someChildNode((childNode, index) => {
16
+ const terminalNode = childNode,
17
+ content = terminalNode.getContent(),
18
+ contentSatisfiable = (content === SATISFIABLE);
19
+
20
+ if (contentSatisfiable) {
21
+ satisfiable = true;
22
+ }
23
+
24
+ if (index === 0) {
25
+ return true;
26
+ }
27
+ });
28
+
29
+ return satisfiable;
30
+ }
31
+
32
+ getLabelNodes() {
33
+ let labelNodes = [];
34
+
35
+ const parenthesisedLabelsNode = this.getParenthesisedLabelsNode();
36
+
37
+ if (parenthesisedLabelsNode !== null) {
38
+ labelNodes = parenthesisedLabelsNode.getLabelNodes();
39
+ }
40
+
41
+ return labelNodes;
42
+ }
43
+
44
+ getProofNode() {
45
+ const ruleName = PROOF_RULE_NAME,
46
+ proofNode = this.getNodeByRuleName(ruleName);
47
+
48
+ return proofNode;
49
+ }
50
+
51
+ getDeductionNode() {
52
+ const ruleName = DEDUCTION_RULE_NAME,
53
+ deductionNode = this.getNodeByRuleName(ruleName);
54
+
55
+ return deductionNode;
56
+ }
57
+
58
+ getSuppositionNodes() {
59
+ const ruleName = SUPPOSITION_RULE_NAME,
60
+ suppositionNodes = this.getNodesByRuleName(ruleName);
61
+
62
+ return suppositionNodes;
63
+ }
64
+
65
+ getParenthesisedLabelsNode() {
66
+ const ruleName = PARENTHESISED_LABELS_RULE_NAME,
67
+ parenthesisedLabelsNode = this.getNodesByRuleName(ruleName);
68
+
69
+ return parenthesisedLabelsNode;
70
+ }
71
+
72
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
7
73
  }
@@ -1,7 +1,44 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- export default class TopLevelMetaAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TopLevelMetaAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME, PARENTHESISED_LABEL_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class TopLevelMetaAssertionNode extends NonTerminalNode {
8
+ getLabelNode() {
9
+ const parenthesisedLabelNode = this.getParenthesisedLabelNode(),
10
+ labelNodes = parenthesisedLabelNode.getLabelNode();
11
+
12
+ return labelNodes;
13
+ }
14
+
15
+ getProofNode() {
16
+ const ruleName = PROOF_RULE_NAME,
17
+ proofNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return proofNode;
20
+ }
21
+
22
+ getDeductionNode() {
23
+ const ruleName = DEDUCTION_RULE_NAME,
24
+ deductionNode = this.getNodeByRuleName(ruleName);
25
+
26
+ return deductionNode;
27
+ }
28
+
29
+ getSuppositionNodes() {
30
+ const ruleName = SUPPOSITION_RULE_NAME,
31
+ suppositionNodes = this.getNodesByRuleName(ruleName);
32
+
33
+ return suppositionNodes;
34
+ }
35
+
36
+ getParenthesisedLabelNode() {
37
+ const ruleName = PARENTHESISED_LABEL_RULE_NAME,
38
+ parenthesisedLabelNode = this.getNodeByRuleName(ruleName);
39
+
40
+ return parenthesisedLabelNode;
41
+ }
42
+
43
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
7
44
  }
package/src/node/type.js CHANGED
@@ -1,19 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- export default class TypeNode extends Node {
5
+ export default class TypeNode extends NonTerminalNode {
6
6
  getTypeName() {
7
- const typeName = this.fromFirstChildNode((firstChildNode) => {
8
- const typeTerminalNode = firstChildNode, ///
9
- content = typeTerminalNode.getContent(),
10
- typeName = content; ///
7
+ let typeName;
11
8
 
12
- return typeName;
9
+ this.someChildNode((childNode) => {
10
+ const childNodeTerminalNode = childNode.isTerminalNode();
11
+
12
+ if (childNodeTerminalNode) {
13
+ const terminalNode = childNode, ///
14
+ content = terminalNode.getContent();
15
+
16
+ typeName = content; ///
17
+
18
+ return true;
19
+ }
13
20
  });
14
21
 
15
22
  return typeName;
16
23
  }
17
24
 
18
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TypeNode, ruleName, childNodes, opacity, precedence); }
25
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeNode, ruleName, childNodes, opacity, precedence); }
19
26
  }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../node/nonTerminal";
4
+
5
+ import { TYPE_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class TypesNode extends NonTerminalNode {
8
+ getTypeNodes() {
9
+ const ruleName = TYPE_RULE_NAME,
10
+ typeNodes = this.getNodesByRuleName(ruleName);
11
+
12
+ return typeNodes;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypesNode, ruleName, childNodes, opacity, precedence); }
16
+ }