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
package/src/node/term.js CHANGED
@@ -1,7 +1,66 @@
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 TermNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
6
+ import { isNodeTermNode, isNodeVariableNode } from "../utilities/node";
7
+
8
+ const { first } = arrayUtilities;
9
+
10
+ export default class TermNode extends NonTerminalNode {
11
+ getVariableNodes() {
12
+ const variableNodes = this.filterDescendantNode((descendantNode) => {
13
+ const descendantNodeVariableNode = isNodeVariableNode(descendantNode);
14
+
15
+ if (descendantNodeVariableNode) {
16
+ return true;
17
+ }
18
+ });
19
+
20
+ return variableNodes;
21
+ }
22
+
23
+ getSingularTermNode() {
24
+ let singularTermNode = null;
25
+
26
+ const termNodes = this.filterChildNode((childNode) => {
27
+ const childNodeTermNode = isNodeTermNode(childNode);
28
+
29
+ if (!childNodeTermNode) {
30
+ return true;
31
+ }
32
+ }),
33
+ termNodesLength = termNodes.length;
34
+
35
+ if (termNodesLength === 1) {
36
+ const firstTermNode = first(termNodes);
37
+
38
+ singularTermNode = firstTermNode; ///
39
+ }
40
+
41
+ return singularTermNode;
42
+ }
43
+
44
+ getSingularVariableNode() {
45
+ let singularVariableNode = null;
46
+
47
+ const variableNodes = this.filterChildNode((childNode) => {
48
+ const childNodeVariableNode = isNodeVariableNode(childNode);
49
+
50
+ if (!childNodeVariableNode) {
51
+ return true;
52
+ }
53
+ }),
54
+ variableNodesLength = variableNodes.length;
55
+
56
+ if (variableNodesLength === 1) {
57
+ const firstVariableNode = first(variableNodes);
58
+
59
+ singularVariableNode = firstVariableNode; ///
60
+ }
61
+
62
+ return singularVariableNode;
63
+ }
64
+
65
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
7
66
  }
@@ -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,93 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
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 { isNodeProofNode,
7
+ isNodeDeductionNode,
8
+ isNodeSuppositionNode,
9
+ isNodeParenthesisedLabelsNode } from "../utilities/node";
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 proofNode = this.findChildNode((childNode) => {
46
+ const childNOdeProofNode = isNodeProofNode(childNode);
47
+
48
+ if (childNOdeProofNode) {
49
+ return true;
50
+ }
51
+ }) || null;
52
+
53
+ return proofNode;
54
+ }
55
+
56
+ getDeductionNode() {
57
+ const deductionNode = this.findChildNode((childNode) => {
58
+ const childNOdeDeductionNode = isNodeDeductionNode(childNode);
59
+
60
+ if (childNOdeDeductionNode) {
61
+ return true;
62
+ }
63
+ }) || null;
64
+
65
+ return deductionNode;
66
+ }
67
+
68
+ getSuppositionNodes() {
69
+ const suppositionNodes = this.filterChildNode((childNode) => {
70
+ const childNodeSuppositionNode = isNodeSuppositionNode(childNode);
71
+
72
+ if (childNodeSuppositionNode) {
73
+ return true;
74
+ }
75
+ });
76
+
77
+ return suppositionNodes;
78
+ }
79
+
80
+ getParenthesisedLabelsNode() {
81
+ const parenthesisedLabelsNode = this.findChildNode((childNode) => {
82
+ const childNodeParenthesisedLabelNode = isNodeParenthesisedLabelsNode(childNode);
83
+
84
+ if (childNodeParenthesisedLabelNode) {
85
+ return true;
86
+ }
87
+ }) || null;
88
+
89
+ return parenthesisedLabelsNode;
90
+ }
91
+
92
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
7
93
  }
@@ -1,7 +1,63 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
+ import { isNodeProofNode, isNodePremiseNode, isNodeConclusionNode, isNodeParenthesisedLabelsNode } from "../utilities/node";
4
5
 
5
- export default class TopLevelMetaAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TopLevelMetaAssertionNode, ruleName, childNodes, opacity, precedence); }
6
+ export default class TopLevelMetaAssertionNode extends NonTerminalNode {
7
+ getLabelNodes() {
8
+ const parenthesisedLabelsNode = this.getParenthesisedLabelsNode(),
9
+ labelNodes = parenthesisedLabelsNode.getLabelNodes();
10
+
11
+ return labelNodes;
12
+ }
13
+
14
+ getProofNode() {
15
+ const proofNode = this.findChildNode((childNode) => {
16
+ const childNOdeProofNode = isNodeProofNode(childNode);
17
+
18
+ if (childNOdeProofNode) {
19
+ return true;
20
+ }
21
+ }) || null;
22
+
23
+ return proofNode;
24
+ }
25
+
26
+ getPremiseNodes() {
27
+ const premiseNodes = this.filterChildNode((childNode) => {
28
+ const childNOdePremiseNode = isNodePremiseNode(childNode);
29
+
30
+ if (childNOdePremiseNode) {
31
+ return true;
32
+ }
33
+ }) || null;
34
+
35
+ return premiseNodes;
36
+ }
37
+
38
+ getConclusionNode() {
39
+ const conclusionNode = this.findChildNode((childNode) => {
40
+ const childNOdeConclusionNode = isNodeConclusionNode(childNode);
41
+
42
+ if (childNOdeConclusionNode) {
43
+ return true;
44
+ }
45
+ }) || null;
46
+
47
+ return conclusionNode;
48
+ }
49
+
50
+ getParenthesisedLabelsNode() {
51
+ const parenthesisedLabelsNode = this.findChildNode((childNode) => {
52
+ const childNodeParenthesisedLabelNode = isNodeParenthesisedLabelsNode(childNode);
53
+
54
+ if (childNodeParenthesisedLabelNode) {
55
+ return true;
56
+ }
57
+ }) || null;
58
+
59
+ return parenthesisedLabelsNode;
60
+ }
61
+
62
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
7
63
  }
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 "occam-parsers";
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
  }
@@ -1,19 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import { NonTerminalNode } from "occam-parsers";
4
4
 
5
- export default class VariableNode extends Node {
5
+ export default class VariableNode extends NonTerminalNode {
6
6
  getVariableName() {
7
- const variableName = this.fromFirstChildNode((firstChildNode) => {
8
- const nameTerminalNode = firstChildNode, ///
9
- content = nameTerminalNode.getContent(),
10
- variableName = content; ///
7
+ let variableName;
11
8
 
12
- return variableName;
9
+ this.someChildNode((childNode) => {
10
+ const childNodeTerminalNode = childNode.isTerminalNode();
11
+
12
+ if (childNodeTerminalNode) {
13
+ const terminalNode = childNode, ///
14
+ content = terminalNode.getContent();
15
+
16
+ variableName = content; ///
17
+
18
+ return true;
19
+ }
13
20
  });
14
21
 
15
22
  return variableName;
16
23
  }
17
24
 
18
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(VariableNode, ruleName, childNodes, opacity, precedence); }
25
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(VariableNode, ruleName, childNodes, opacity, precedence); }
19
26
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import { NominalParser as NominalParserBase } from "occam-grammars";
4
+ import { NonTerminalNode as defaultNonTerminalNode } from "occam-parsers";
4
5
 
5
6
  import NonTerminalNodeMap from "../nonTerminalNodeMap";
6
- import defaultNonTerminalNode from "../defaultTerminalNode";
7
7
 
8
8
  export default class NominalParser extends NominalParserBase {
9
9
  static NonTerminalNodeMap = NonTerminalNodeMap;
@@ -7,9 +7,10 @@ import StepNode from "./node/step"
7
7
  import ErrorNode from "./node/error"
8
8
  import FrameNode from "./node/frame"
9
9
  import AxiomNode from "./node/axiom"
10
- import LabelNode from "./node/label"
11
10
  import LemmaNode from "./node/lemma"
12
11
  import ProofNode from "./node/proof"
12
+ import LabelNode from "./node/label"
13
+ import LabelsNode from "./node/labels"
13
14
  import PremiseNode from "./node/premise"
14
15
  import TheoremNode from "./node/theorem"
15
16
  import SubproofNode from "./node/subproof"
@@ -42,6 +43,7 @@ import PropertyAssertionNode from "./node/assertion/property";
42
43
  import SubproofAssertionNode from "./node/assertion/subproof";
43
44
  import ContainedAssertionNode from "./node/assertion/contained";
44
45
  import SatisfiesAssertionNode from "./node/assertion/satisfies";
46
+ import ParenthesisedLabelsNode from "./node/parenthesisedLabels"
45
47
  import PropertyDeclarationNode from "./node/declaration/property";
46
48
  import variableDeclarationNode from "./node/declaration/variable";
47
49
  import combinatorDeclarationNode from "./node/declaration/combinator";
@@ -57,8 +59,9 @@ import { RULE_RULE_NAME,
57
59
  ERROR_RULE_NAME,
58
60
  FRAME_RULE_NAME,
59
61
  AXIOM_RULE_NAME,
60
- LABEL_RULE_NAME,
61
62
  LEMMA_RULE_NAME,
63
+ LABEL_RULE_NAME,
64
+ LABELS_RULE_NAME,
62
65
  THEOREM_RULE_NAME,
63
66
  PREMISE_RULE_NAME,
64
67
  SUBPROOF_RULE_NAME,
@@ -91,6 +94,7 @@ import { RULE_RULE_NAME,
91
94
  PROPERTY_ASSERTION_RULE_NAME,
92
95
  CONTAINED_ASSERTION_RULE_NAME,
93
96
  SATISFIES_ASSERTION_RULE_NAME,
97
+ PARENTHESISED_LABELS_RULE_NAME,
94
98
  PROPERTY_DECLARATION_RULE_NAME,
95
99
  VARIABLE_DECLARATION_RULE_NAME,
96
100
  COMBINATOR_DECLARATION_RULE_NAME,
@@ -105,10 +109,11 @@ const nonTerminalNodeMap = {
105
109
  [TYPE_RULE_NAME]: TypeNode,
106
110
  [ERROR_RULE_NAME]: ErrorNode,
107
111
  [FRAME_RULE_NAME]: FrameNode,
108
- [LABEL_RULE_NAME]: LabelNode,
109
112
  [LEMMA_RULE_NAME]: LemmaNode,
110
113
  [AXIOM_RULE_NAME]: AxiomNode,
111
114
  [PROOF_RULE_NAME]: ProofNode,
115
+ [LABEL_RULE_NAME]: LabelNode,
116
+ [LABELS_RULE_NAME]: LabelsNode,
112
117
  [THEOREM_RULE_NAME]: TheoremNode,
113
118
  [PREMISE_RULE_NAME]: PremiseNode,
114
119
  [PROPERTY_RULE_NAME]: PropertyNode,
@@ -141,6 +146,7 @@ const nonTerminalNodeMap = {
141
146
  [PROPERTY_ASSERTION_RULE_NAME]: PropertyAssertionNode,
142
147
  [SATISFIES_ASSERTION_RULE_NAME]: SatisfiesAssertionNode,
143
148
  [CONTAINED_ASSERTION_RULE_NAME]: ContainedAssertionNode,
149
+ [PARENTHESISED_LABELS_RULE_NAME]: ParenthesisedLabelsNode,
144
150
  [VARIABLE_DECLARATION_RULE_NAME]: variableDeclarationNode,
145
151
  [PROPERTY_DECLARATION_RULE_NAME]: PropertyDeclarationNode,
146
152
  [COMBINATOR_DECLARATION_RULE_NAME]: combinatorDeclarationNode,
package/src/ruleNames.js CHANGED
@@ -4,12 +4,13 @@ export const RULE_RULE_NAME = "rule";
4
4
  export const STEP_RULE_NAME = "step";
5
5
  export const TERM_RULE_NAME = "term";
6
6
  export const TYPE_RULE_NAME = "type";
7
- export const LABEL_RULE_NAME = "label";
8
7
  export const LEMMA_RULE_NAME = "lemma";
9
8
  export const AXIOM_RULE_NAME = "axiom";
10
9
  export const ERROR_RULE_NAME = "error";
11
10
  export const FRAME_RULE_NAME = "frame";
12
11
  export const PROOF_RULE_NAME = "proof";
12
+ export const LABEL_RULE_NAME = "label";
13
+ export const LABELS_RULE_NAME = "labels";
13
14
  export const THEOREM_RULE_NAME = "theorem";
14
15
  export const PREMISE_RULE_NAME = "premise";
15
16
  export const PROPERTY_RULE_NAME = "property";
@@ -42,6 +43,7 @@ export const PROPERTY_ASSERTION_RULE_NAME = "propertyAssertion";
42
43
  export const SUBPROOF_ASSERTION_RULE_NAME = "subproofAssertion";
43
44
  export const CONTAINED_ASSERTION_RULE_NAME = "containedAssertion";
44
45
  export const SATISFIES_ASSERTION_RULE_NAME = "satisfiesAssertion";
46
+ export const PARENTHESISED_LABELS_RULE_NAME = "parenthesisedLabels";
45
47
  export const PROPERTY_DECLARATION_RULE_NAME = "propertyDeclaration";
46
48
  export const VARIABLE_DECLARATION_RULE_NAME = "variableDeclaration";
47
49
  export const COMBINATOR_DECLARATION_RULE_NAME = "combinatorDeclaration";
@@ -3,15 +3,156 @@
3
3
  import dom from "../dom";
4
4
 
5
5
  import { objectType } from "../dom/type";
6
- import { TYPE_RULE_NAME, VARIABLE_RULE_NAME, PROPERTY_RULE_NAME, PROPERTY_DECLARATION_RULE_NAME } from "../ruleNames";
6
+ import { RULE_RULE_NAME,
7
+ STEP_RULE_NAME,
8
+ TERM_RULE_NAME,
9
+ TYPE_RULE_NAME,
10
+ LEMMA_RULE_NAME,
11
+ AXIOM_RULE_NAME,
12
+ ERROR_RULE_NAME,
13
+ FRAME_RULE_NAME,
14
+ PROOF_RULE_NAME,
15
+ LABEL_RULE_NAME,
16
+ LABELS_RULE_NAME,
17
+ THEOREM_RULE_NAME,
18
+ PREMISE_RULE_NAME,
19
+ PROPERTY_RULE_NAME,
20
+ EQUALITY_RULE_NAME,
21
+ VARIABLE_RULE_NAME,
22
+ SUBPROOF_RULE_NAME,
23
+ META_TYPE_RULE_NAME,
24
+ PARAMETER_RULE_NAME,
25
+ DEDUCTION_RULE_NAME,
26
+ JUDGEMENT_RULE_NAME,
27
+ REFERENCE_RULE_NAME,
28
+ STATEMENT_RULE_NAME,
29
+ META_LEMMA_RULE_NAME,
30
+ COMBINATOR_RULE_NAME,
31
+ CONCLUSION_RULE_NAME,
32
+ CONJECTURE_RULE_NAME,
33
+ DERIVATION_RULE_NAME,
34
+ SUPPOSITION_RULE_NAME,
35
+ CONSTRUCTOR_RULE_NAME,
36
+ DECLARATION_RULE_NAME,
37
+ METATHEOREM_RULE_NAME,
38
+ METAVARIABLE_RULE_NAME,
39
+ PROCEDURE_CALL_RULE_NAME,
40
+ SUB_DERIVATION_RULE_NAME,
41
+ TYPE_ASSERTION_RULE_NAME,
42
+ TYPE_DECLARATION_RULE_NAME,
43
+ PROPERTY_RELATION_RULE_NAME,
44
+ DEFINED_ASSERTION_RULE_NAME,
45
+ PROPERTY_ASSERTION_RULE_NAME,
46
+ SUBPROOF_ASSERTION_RULE_NAME,
47
+ CONTAINED_ASSERTION_RULE_NAME,
48
+ SATISFIES_ASSERTION_RULE_NAME,
49
+ PROPERTY_DECLARATION_RULE_NAME,
50
+ VARIABLE_DECLARATION_RULE_NAME,
51
+ PARENTHESISED_LABELS_RULE_NAME,
52
+ COMBINATOR_DECLARATION_RULE_NAME,
53
+ CONSTRUCTOR_DECLARATION_RULE_NAME,
54
+ COMPLEX_TYPE_DECLARATION_RULE_NAME,
55
+ METAVARIABLE_DECLARATION_RULE_NAME } from "../ruleNames";
7
56
 
8
- export function isNodeTypeNode(node) { return isNodeRuleNode(node, TYPE_RULE_NAME); }
57
+ export function isNodeRuleNode(node) { return isNodeRuleNodeByRuleName(node, RULE_RULE_NAME); }
9
58
 
10
- export function isNodeVariableNode(node) { return isNodeRuleNode(node, VARIABLE_RULE_NAME); }
59
+ export function isNodeStepNode(node) { return isNodeRuleNodeByRuleName(node, STEP_RULE_NAME); }
11
60
 
12
- export function isNodePropertyNode(node) { return isNodeRuleNode(node, PROPERTY_RULE_NAME); }
61
+ export function isNodeTermNode(node) { return isNodeRuleNodeByRuleName(node, TERM_RULE_NAME); }
13
62
 
14
- export function isNodePropertyDeclarationNode(node) { return isNodeRuleNode(node, PROPERTY_DECLARATION_RULE_NAME); }
63
+ export function isNodeTypeNode(node) { return isNodeRuleNodeByRuleName(node, TYPE_RULE_NAME); }
64
+
65
+ export function isNodeLemmaNode(node) { return isNodeRuleNodeByRuleName(node, LEMMA_RULE_NAME); }
66
+
67
+ export function isNodeAxiomNode(node) { return isNodeRuleNodeByRuleName(node, AXIOM_RULE_NAME); }
68
+
69
+ export function isNodeErrorNode(node) { return isNodeRuleNodeByRuleName(node, ERROR_RULE_NAME); }
70
+
71
+ export function isNodeFrameNode(node) { return isNodeRuleNodeByRuleName(node, FRAME_RULE_NAME); }
72
+
73
+ export function isNodeProofNode(node) { return isNodeRuleNodeByRuleName(node, PROOF_RULE_NAME); }
74
+
75
+ export function isNodeLabelNode(node) { return isNodeRuleNodeByRuleName(node, LABEL_RULE_NAME); }
76
+
77
+ export function isNodeLabelsNode(node) { return isNodeRuleNodeByRuleName(node, LABELS_RULE_NAME); }
78
+
79
+ export function isNodeTheoremNode(node) { return isNodeRuleNodeByRuleName(node, THEOREM_RULE_NAME); }
80
+
81
+ export function isNodePremiseNode(node) { return isNodeRuleNodeByRuleName(node, PREMISE_RULE_NAME); }
82
+
83
+ export function isNodePropertyNode(node) { return isNodeRuleNodeByRuleName(node, PROPERTY_RULE_NAME); }
84
+
85
+ export function isNodeEqualityNode(node) { return isNodeRuleNodeByRuleName(node, EQUALITY_RULE_NAME); }
86
+
87
+ export function isNodeVariableNode(node) { return isNodeRuleNodeByRuleName(node, VARIABLE_RULE_NAME); }
88
+
89
+ export function isNodeSubproofNode(node) { return isNodeRuleNodeByRuleName(node, SUBPROOF_RULE_NAME); }
90
+
91
+ export function isNodeMetaTypeNode(node) { return isNodeRuleNodeByRuleName(node, META_TYPE_RULE_NAME); }
92
+
93
+ export function isNodeParameterNode(node) { return isNodeRuleNodeByRuleName(node, PARAMETER_RULE_NAME); }
94
+
95
+ export function isNodeDeductionNode(node) { return isNodeRuleNodeByRuleName(node, DEDUCTION_RULE_NAME); }
96
+
97
+ export function isNodeJudgementNode(node) { return isNodeRuleNodeByRuleName(node, JUDGEMENT_RULE_NAME); }
98
+
99
+ export function isNodeReferenceNode(node) { return isNodeRuleNodeByRuleName(node, REFERENCE_RULE_NAME); }
100
+
101
+ export function isNodeStatementNode(node) { return isNodeRuleNodeByRuleName(node, STATEMENT_RULE_NAME); }
102
+
103
+ export function isNodeMetaLemmaNode(node) { return isNodeRuleNodeByRuleName(node, META_LEMMA_RULE_NAME); }
104
+
105
+ export function isNodeCombinatorNode(node) { return isNodeRuleNodeByRuleName(node, COMBINATOR_RULE_NAME); }
106
+
107
+ export function isNodeConclusionNode(node) { return isNodeRuleNodeByRuleName(node, CONCLUSION_RULE_NAME); }
108
+
109
+ export function isNodeConjectureNode(node) { return isNodeRuleNodeByRuleName(node, CONJECTURE_RULE_NAME); }
110
+
111
+ export function isNodeDerivationNode(node) { return isNodeRuleNodeByRuleName(node, DERIVATION_RULE_NAME); }
112
+
113
+ export function isNodeSuppositionNode(node) { return isNodeRuleNodeByRuleName(node, SUPPOSITION_RULE_NAME); }
114
+
115
+ export function isNodeConstructorNode(node) { return isNodeRuleNodeByRuleName(node, CONSTRUCTOR_RULE_NAME); }
116
+
117
+ export function isNodeDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, DECLARATION_RULE_NAME); }
118
+
119
+ export function isNodeMetatheoremNode(node) { return isNodeRuleNodeByRuleName(node, METATHEOREM_RULE_NAME); }
120
+
121
+ export function isNodeMetavariableNode(node) { return isNodeRuleNodeByRuleName(node, METAVARIABLE_RULE_NAME); }
122
+
123
+ export function isNodeProcedureCallNode(node) { return isNodeRuleNodeByRuleName(node, PROCEDURE_CALL_RULE_NAME); }
124
+
125
+ export function isNodeSubDerivationNode(node) { return isNodeRuleNodeByRuleName(node, SUB_DERIVATION_RULE_NAME); }
126
+
127
+ export function isNodeTypeAssertionNode(node) { return isNodeRuleNodeByRuleName(node, TYPE_ASSERTION_RULE_NAME); }
128
+
129
+ export function isNodeTypeDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, TYPE_DECLARATION_RULE_NAME); }
130
+
131
+ export function isNodePropertyRelationNode(node) { return isNodeRuleNodeByRuleName(node, PROPERTY_RELATION_RULE_NAME); }
132
+
133
+ export function isNodeDefinedAssertionNode(node) { return isNodeRuleNodeByRuleName(node, DEFINED_ASSERTION_RULE_NAME); }
134
+
135
+ export function isNodePropertyAssertionNode(node) { return isNodeRuleNodeByRuleName(node, PROPERTY_ASSERTION_RULE_NAME); }
136
+
137
+ export function isNodeSubproofAssertionNode(node) { return isNodeRuleNodeByRuleName(node, SUBPROOF_ASSERTION_RULE_NAME); }
138
+
139
+ export function isNodeContainedAssertionNode(node) { return isNodeRuleNodeByRuleName(node, CONTAINED_ASSERTION_RULE_NAME); }
140
+
141
+ export function isNodeSatisfiesAssertionNode(node) { return isNodeRuleNodeByRuleName(node, SATISFIES_ASSERTION_RULE_NAME); }
142
+
143
+ export function isNodePropertyDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, PROPERTY_DECLARATION_RULE_NAME); }
144
+
145
+ export function isNodeVariableDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, VARIABLE_DECLARATION_RULE_NAME); }
146
+
147
+ export function isNodeParenthesisedLabelsNode(node) { return isNodeRuleNodeByRuleName(node, PARENTHESISED_LABELS_RULE_NAME); }
148
+
149
+ export function isNodeCombinatorDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, COMBINATOR_DECLARATION_RULE_NAME); }
150
+
151
+ export function isNodeConstructorDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, CONSTRUCTOR_DECLARATION_RULE_NAME); }
152
+
153
+ export function isNodeComplexTypeDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, COMPLEX_TYPE_DECLARATION_RULE_NAME); }
154
+
155
+ export function isNodeMetavariableDeclarationNode(node) { return isNodeRuleNodeByRuleName(node, METAVARIABLE_DECLARATION_RULE_NAME); }
15
156
 
16
157
  export function typeFromTypeNode(typeNode) {
17
158
  let type;
@@ -53,7 +194,7 @@ export function statementFromStatementNode(statementNode, context) {
53
194
  return statement;
54
195
  }
55
196
 
56
- function isNodeRuleNode(node, ruleName) {
197
+ function isNodeRuleNodeByRuleName(node, ruleName) {
57
198
  let nodeRuleNode = false;
58
199
 
59
200
  const nodeNonTerminalNode = node.isNonTerminalNode();
@@ -2,6 +2,15 @@
2
2
 
3
3
  import { objectType } from "../dom/type";
4
4
 
5
+ export function stringFromTypeNameNameAndSuperTypes(typeName, superTypes) {
6
+ const superTypesString = superTypesStringFromSuperTypes(superTypes),
7
+ string = (superTypesString !== null) ?
8
+ `${typeName}:${superTypesString}` :
9
+ typeName; ///
10
+
11
+ return string;
12
+ }
13
+
5
14
  export function superTypesStringFromSuperTypes(superTypes) {
6
15
  const superTypesString = superTypes.reduce((superTypesString, superType) => {
7
16
  if (superType !== objectType) {
@@ -67,8 +67,7 @@ class TopLevelVerifier extends Verifier {
67
67
  nodeQuery: lemmaNodeQuery,
68
68
  verify: (lemmaNode, fileContext) => {
69
69
  const { Lemma } = dom,
70
- node = lemmaNode, ///
71
- lemma = Lemma.fromNode(node, fileContext),
70
+ lemma = Lemma.fromLemmaNode(lemmaNode, fileContext),
72
71
  lemmaVerified = lemma.verify();
73
72
 
74
73
  return lemmaVerified;
@@ -78,8 +77,7 @@ class TopLevelVerifier extends Verifier {
78
77
  nodeQuery: theoremNodeQuery,
79
78
  verify: (theoremNode, fileContext) => {
80
79
  const { Theorem } = dom,
81
- node = theoremNode, ///
82
- theorem = Theorem.fromNode(node, fileContext),
80
+ theorem = Theorem.fromTheoremNode(theoremNode, fileContext),
83
81
  theoremVerified = theorem.verify();
84
82
 
85
83
  return theoremVerified;
@@ -89,8 +87,7 @@ class TopLevelVerifier extends Verifier {
89
87
  nodeQuery: metaLemmaNodeQuery,
90
88
  verify: (metaLemmaNode, fileContext) => {
91
89
  const { MetaLemma } = dom,
92
- node = metaLemmaNode, ///
93
- metaLemma = MetaLemma.fromNode(node, fileContext),
90
+ metaLemma = MetaLemma.fromMetaLemmaNode(metaLemmaNode, fileContext),
94
91
  metaLemmaVerified = metaLemma.verify();
95
92
 
96
93
  return metaLemmaVerified;
@@ -100,8 +97,7 @@ class TopLevelVerifier extends Verifier {
100
97
  nodeQuery: conjectureNodeQuery,
101
98
  verify: (conjectureNode, fileContext) => {
102
99
  const { Conjecture } = dom,
103
- node = conjectureNode, ///
104
- conjecture = Conjecture.fromNode(node, fileContext),
100
+ conjecture = Conjecture.fromConjectureNode(conjectureNode, fileContext),
105
101
  conjectureVerified = conjecture.verify();
106
102
 
107
103
  return conjectureVerified;
@@ -111,8 +107,7 @@ class TopLevelVerifier extends Verifier {
111
107
  nodeQuery: metatheoremNodeQuery,
112
108
  verify: (metatheoremNode, fileContext) => {
113
109
  const { Metatheorem } = dom,
114
- node = metatheoremNode, ///
115
- metatheorem = Metatheorem.fromNode(node, fileContext),
110
+ metatheorem = Metatheorem.fromMetatheoremNode(metatheoremNode, fileContext),
116
111
  metatheoremVerified = metatheorem.verify();
117
112
 
118
113
  return metatheoremVerified;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _Node = /*#__PURE__*/ _interop_require_default(require("./Node"));
12
- function _interop_require_default(obj) {
13
- return obj && obj.__esModule ? obj : {
14
- default: obj
15
- };
16
- }
17
- var defaultNonTerminalNode = _Node.default; ///
18
- var _default = defaultNonTerminalNode;
19
-
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0VGVybWluYWxOb2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTm9kZSBmcm9tIFwiLi9Ob2RlXCI7XG5cbmNvbnN0IGRlZmF1bHROb25UZXJtaW5hbE5vZGUgPSBOb2RlOyAgLy8vXG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHROb25UZXJtaW5hbE5vZGU7XG4iXSwibmFtZXMiOlsiZGVmYXVsdE5vblRlcm1pbmFsTm9kZSIsIk5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBQTs7OzJEQUppQjs7Ozs7O0FBRWpCLElBQU1BLHlCQUF5QkMsYUFBSSxFQUFHLEdBQUc7SUFFekMsV0FBZUQifQ==