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
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
4
-
5
3
  import dom from "../dom";
6
4
  import LocalContext from "../context/local";
7
5
  import Substitutions from "../substitutions";
8
- import TopLevelAssertion from "./topLevelAssertion";
9
6
 
10
- import { nodeQuery } from "../utilities/query";
11
- import { proofFromNode, deductionFromNode, suppositionsFromNode, stringFromLabelsAndDeduction } from "./topLevelAssertion";
12
- import { labelsFromJSON,
13
- labelsToLabelsJSON,
7
+ import { proofFromProofNode, deductionFromDeductionNode, suppositionsFromSuppositionNodes } from "./topLevelAssertion";
8
+ import { labelFromJSON,
9
+ labelToLabelJSON,
14
10
  deductionFromJSON,
15
11
  suppositionsFromJSON,
16
12
  substitutionsFromJSON,
@@ -18,29 +14,47 @@ import { labelsFromJSON,
18
14
  suppositionsToSuppositionsJSON,
19
15
  substitutionsToSubstitutionsJSON } from "../utilities/json";
20
16
 
21
- const { first } = arrayUtilities;
17
+ export default class TopLevelMetaAssertion {
18
+ constructor(fileContext, string, label, suppositions, deduction, proof, substitutions) {
19
+ this.fileContext = fileContext;
20
+ this.string = string;
21
+ this.label = label;
22
+ this.suppositions = suppositions;
23
+ this.deduction = deduction;
24
+ this.proof = proof;
25
+ this.substitutions = substitutions;
26
+ }
22
27
 
23
- const labelNodeQuery = nodeQuery("/*/parenthesisedLabel/label");
28
+ getFileContext() {
29
+ return this.fileContext;
30
+ }
24
31
 
25
- export default class TopLevelMetaAssertion extends TopLevelAssertion {
26
- constructor(fileContext, string, labels, suppositions, deduction, proof, substitutions) {
27
- super(fileContext, string, labels, suppositions, deduction, proof);
32
+ getString() {
33
+ return this.string;
34
+ }
28
35
 
29
- this.substitutions = substitutions;
36
+ getLabel() {
37
+ return this.label;
30
38
  }
31
39
 
32
- getSubstitutions() {
33
- return this.substitutions;
40
+ getSuppositions() {
41
+ return this.suppositions;
34
42
  }
35
43
 
36
- getLabel() {
37
- const labels = this.getLabels(),
38
- firstLabel = first(labels),
39
- label = firstLabel; ///
44
+ getDeduction() {
45
+ return this.deduction;
46
+ }
47
+
48
+ getProof() {
49
+ return this.proof;
50
+ }
40
51
 
41
- return label;
52
+ getSubstitutions() {
53
+ return this.substitutions;
42
54
  }
43
55
 
56
+ getStatement() { return this.deduction.getStatement(); }
57
+
44
58
  matchReference(reference) {
45
59
  const label = this.getLabel(),
46
60
  referenceMatches = label.matchReference(reference);
@@ -51,9 +65,9 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
51
65
  verify() {
52
66
  let verified = false;
53
67
 
54
- const labelsVerified = this.verifyLabels();
68
+ const labelVerified = this.verifyLabels();
55
69
 
56
- if (labelsVerified) {
70
+ if (labelVerified) {
57
71
  const localContext = LocalContext.fromFileContext(this.fileContext),
58
72
  context = localContext, ///
59
73
  suppositionsVerified = this.suppositions.every((supposition) => {
@@ -83,29 +97,23 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
83
97
  }
84
98
 
85
99
  verifyLabels() {
86
- const labelsVerified = this.labels.every((label) => {
87
- const nameOnly = false,
88
- labelVerified = label.verify(nameOnly);
100
+ const nameOnly = false,
101
+ labelVerified = this.label.verify(nameOnly);
89
102
 
90
- if (labelVerified) {
91
- return true;
92
- }
93
- });
94
-
95
- return labelsVerified;
103
+ return labelVerified;
96
104
  }
97
105
 
98
106
  toJSON() {
99
- const labelsJSON = labelsToLabelsJSON(this.labels),
107
+ const labelJSON = labelToLabelJSON(this.label),
100
108
  deductionJSON = deductionToDeductionJSON(this.deduction),
101
109
  suppositionsJSON = suppositionsToSuppositionsJSON(this.suppositions),
102
110
  substitutionsJSON = substitutionsToSubstitutionsJSON(this.substitutions),
103
- labels = labelsJSON, ///
111
+ label = labelJSON, ///
104
112
  deduction = deductionJSON, ///
105
113
  suppositions = suppositionsJSON, ///
106
114
  substitutions = substitutionsJSON, ///
107
115
  json = {
108
- labels,
116
+ label,
109
117
  deduction,
110
118
  suppositions,
111
119
  substitutions
@@ -115,37 +123,61 @@ export default class TopLevelMetaAssertion extends TopLevelAssertion {
115
123
  }
116
124
 
117
125
  static fromJSON(Class, json, fileContext) {
118
- const labels = labelsFromJSON(json, fileContext),
119
- substitutions = substitutionsFromJSON(json, fileContext),
120
- suppositions = suppositionsFromJSON(json, fileContext),
126
+ const label = labelFromJSON(json, fileContext),
121
127
  deduction = deductionFromJSON(json, fileContext),
128
+ suppositions = suppositionsFromJSON(json, fileContext),
129
+ substitutions = substitutionsFromJSON(json, fileContext),
122
130
  proof = null,
123
- string = stringFromLabelsAndDeduction(labels, deduction),
124
- topLevelAssertion = new Class(fileContext, string, labels, suppositions, deduction, proof, substitutions);
131
+ string = stringFromLabelAndDeduction(label, deduction),
132
+ topLevelMetaAssertion = new Class(fileContext, string, label, suppositions, deduction, proof, substitutions);
125
133
 
126
- return topLevelAssertion;
134
+ return topLevelMetaAssertion;
127
135
  }
128
136
 
129
137
  static fromNode(Class, node, fileContext) {
130
- const labels = labelsFromNode(node, fileContext),
138
+ const topLevelAssertionNode = node, ///
139
+ proofNode = topLevelAssertionNode.getProofNode(),
140
+ labelNode = topLevelAssertionNode.getLabelNode(),
141
+ deductionNode = topLevelAssertionNode.getDeductionNode(),
142
+ suppositionNodes = topLevelAssertionNode.getSuppositionNodes(),
143
+ proof = proofFromProofNode(proofNode, fileContext),
144
+ label = labelFromLabelNode(labelNode, fileContext),
145
+ deduction = deductionFromDeductionNode(deductionNode, fileContext),
146
+ suppositions = suppositionsFromSuppositionNodes(suppositionNodes, fileContext),
131
147
  substitutions = Substitutions.fromNothing(),
132
- suppositions = suppositionsFromNode(node, fileContext),
133
- deduction = deductionFromNode(node, fileContext),
134
- proof = proofFromNode(node, fileContext),
135
- string = stringFromLabelsAndDeduction(labels, deduction),
136
- metaLemma = new Class(fileContext, string, labels, suppositions, deduction, proof, substitutions);
148
+ string = stringFromLabelAndDeduction(label, deduction),
149
+ topLevelMetaAssertion = new Class(fileContext, string, label, suppositions, deduction, proof, substitutions);
137
150
 
138
- return metaLemma;
151
+ return topLevelMetaAssertion;
139
152
  }
140
153
  }
141
154
 
142
- function labelsFromNode(node, fileContext) {
143
- const { Label } = dom,
144
- labelNode = labelNodeQuery(node),
145
- label = Label.fromLabelNode(labelNode, fileContext),
146
- labels = [
147
- label
148
- ];
155
+ function labelFromLabelNode(labelNode, fileContext) {
156
+ let label = null;
157
+
158
+ const { Label } = dom;
159
+
160
+ if (labelNode !== null) {
161
+ label = Label.fromLabelNode(labelNode, fileContext);
162
+ }
163
+
164
+ return label;
165
+ }
166
+
167
+ function labelStringFromLabel(label) {
168
+ const labelsString = (label !== null) ?
169
+ label.getString() :
170
+ null;
171
+
172
+ return labelsString;
173
+ }
174
+
175
+ function stringFromLabelAndDeduction(label, deduction) {
176
+ const deductionString = deduction.getString(),
177
+ labelString = labelStringFromLabel(label),
178
+ string = (labelString === null) ?
179
+ deductionString : ///
180
+ `${labelString} :: ${deductionString}`;
149
181
 
150
- return labels;
182
+ return string;
151
183
  }
package/src/dom/type.js CHANGED
@@ -4,17 +4,14 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import dom from "../dom";
6
6
 
7
- import { nodeQuery } from "../utilities/query";
8
7
  import { domAssigned } from "../dom";
9
8
  import { OBJECT_TYPE_NAME } from "../typeNames";
10
9
  import { typeFromTypeNode } from "../utilities/node";
11
- import { superTypesStringFromSuperTypes } from "../utilities/type";
10
+ import { stringFromTypeNameNameAndSuperTypes } from "../utilities/type";
12
11
  import { superTypesFromJSON, propertiesFromJSON, superTypesToSuperTypesJSON, propertiesToPropertiesJSON } from "../utilities/json";
13
12
 
14
13
  const { push, first } = arrayUtilities;
15
14
 
16
- const typeAssertionTypeNodeQuery = nodeQuery("/typeAssertion/type");
17
-
18
15
  class Type {
19
16
  constructor(string, name, superTypes, properties, provisional) {
20
17
  this.string = string;
@@ -108,15 +105,7 @@ class Type {
108
105
  }
109
106
 
110
107
  isEqualTo(type) {
111
- let equalTo = false;
112
-
113
- if (this.type === type) {
114
- equalTo = true;
115
- } else {
116
- if (type.name === null) {
117
-
118
- }
119
- }
108
+ const equalTo = (this === type);
120
109
 
121
110
  return equalTo;
122
111
  }
@@ -224,7 +213,8 @@ class Type {
224
213
  const { name, provisional } = json,
225
214
  properties = propertiesFromJSON(json, fileContext),
226
215
  superTypes = superTypesFromJSON(json, fileContext),
227
- string = stringFromNameAndSuperTypes(name, superTypes),
216
+ typeName = name, ///
217
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
228
218
  type = new Type(string, name, superTypes, properties, provisional);
229
219
 
230
220
  return type;
@@ -237,8 +227,7 @@ class Type {
237
227
  }
238
228
 
239
229
  static fromTypeAssertionNode(typeAssertionNode, fileContext) {
240
- const typeAssertionTypeNode = typeAssertionTypeNodeQuery(typeAssertionNode),
241
- typeNode = typeAssertionTypeNode, ///
230
+ const typeNode = typeAssertionNode.getTypeNode(),
242
231
  type = typeFromTypeNode(typeNode, fileContext);
243
232
 
244
233
  return type;
@@ -247,10 +236,11 @@ class Type {
247
236
  static fromTypeAndProvisional(type, provisional) {
248
237
  const name = type.getName(),
249
238
  superType = type, ///
239
+ typeName = name, ///
250
240
  superTypes = [
251
241
  superType
252
242
  ],
253
- string = stringFromNameAndSuperTypes(name, superTypes),
243
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
254
244
  properties = type.getProperties();
255
245
 
256
246
  type = new Type(string, name, superTypes, properties, provisional); ///
@@ -264,7 +254,7 @@ class Type {
264
254
  typeName = typeDeclarationNode.getTypeName(),
265
255
  name = typeName, ///
266
256
  superTypes = superTypesFromTypeDeclarationNode(typeDeclarationNode, fileContext),
267
- string = stringFromNameAndSuperTypes(name, superTypes),
257
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
268
258
  type = new Type(string, name, superTypes, properties, provisional);
269
259
 
270
260
  return type;
@@ -296,12 +286,12 @@ class Type {
296
286
  }
297
287
 
298
288
  static fromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext) {
299
- const properties = propertiesFromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext),
300
- provisional = complexTypeDeclarationNode.isProvisional(),
289
+ const provisional = complexTypeDeclarationNode.isProvisional(),
301
290
  typeName = complexTypeDeclarationNode.getTypeName(),
302
291
  name = typeName,
303
292
  superTypes = superTypesFromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext),
304
- string = stringFromNameAndSuperTypes(name, superTypes),
293
+ properties = propertiesFromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext),
294
+ string = stringFromTypeNameNameAndSuperTypes(typeName, superTypes),
305
295
  type = new Type(string, name, superTypes, properties, provisional);
306
296
 
307
297
  return type;
@@ -310,22 +300,6 @@ class Type {
310
300
 
311
301
  export default domAssigned(Type);
312
302
 
313
- function stringFromNameAndSuperTypes(name, superTypes) {
314
- let string;
315
-
316
- if (name === null) {
317
- string = OBJECT_TYPE_NAME; ///
318
- } else {
319
- const superTypesString = superTypesStringFromSuperTypes(superTypes);
320
-
321
- string = (superTypesString !== null) ?
322
- `${name}:${superTypesString}` :
323
- name; ///
324
- }
325
-
326
- return string;
327
- }
328
-
329
303
  function superTypesFromTypeDeclarationNode(typeDeclarationNode, fileContext) {
330
304
  const superTypeNodes = typeDeclarationNode.getSuperTypeNodes(),
331
305
  superTypes = superTypeNodes.map((superTypeNode) => {
@@ -4,16 +4,12 @@ import dom from "../dom";
4
4
  import LocalContext from "../context/local";
5
5
  import TermSubstitution from "../substitution/term";
6
6
 
7
- import { nodeQuery } from "../utilities/query";
8
- import { ObjectType } from "./type";
9
7
  import { domAssigned } from "../dom";
10
8
  import { EMPTY_STRING } from "../constants";
11
9
  import { typeFromTypeNode } from "../utilities/node";
12
10
  import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
13
11
  import { variableNodeFromVariableString } from "../context/partial/variable";
14
12
 
15
- const termVariableNodeQuery = nodeQuery("/term/variable!");
16
-
17
13
  export default domAssigned(class Variable {
18
14
  constructor(string, node, name, type, propertyRelations) {
19
15
  this.string = string;
@@ -209,10 +205,10 @@ export default domAssigned(class Variable {
209
205
  static fromTermNode(termNode, context) {
210
206
  let variable = null;
211
207
 
212
- const termVariableNode = termVariableNodeQuery(termNode);
208
+ const singularVariableNode = termNode.getSingularVariableNode();
213
209
 
214
- if (termVariableNode !== null) {
215
- const variableNode = termVariableNode, ///
210
+ if (singularVariableNode !== null) {
211
+ const variableNode = singularVariableNode, ///
216
212
  type = null;
217
213
 
218
214
  variable = variableFromVariableNodeAndType(variableNode, type, context);
@@ -234,11 +230,7 @@ export default domAssigned(class Variable {
234
230
  }
235
231
 
236
232
  static fromVariableNodeAndType(variableNode, type, context) {
237
- let variable = null;
238
-
239
- if (variableNode !== null) {
240
- variable = variableFromVariableNodeAndType(variableNode, type, context);
241
- }
233
+ const variable = variableFromVariableNodeAndType(variableNode, type, context);
242
234
 
243
235
  return variable;
244
236
  }
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { nodeQuery } from "./utilities/query";
4
3
  import { stripBracketsFromTermNode } from "./utilities/brackets";
5
4
 
6
- const variableNodeQuery = nodeQuery("/term/variable!");
7
-
8
5
  export default class Equivalence {
9
6
  constructor(terms) {
10
7
  this.terms = terms;
@@ -100,10 +97,10 @@ export default class Equivalence {
100
97
  const variableNodeA = variableNode, ///
101
98
  variableNodeMatches = this.someTerm((term) => {
102
99
  const termNode = term.getNode(),
103
- variableNode = variableNodeQuery(termNode);
100
+ singularVariableNode = termNode.getSingularVariableNode();
104
101
 
105
- if (variableNode !== null) {
106
- const variableNodeB = variableNode, ///
102
+ if (singularVariableNode !== null) {
103
+ const variableNodeB = singularVariableNode, ///
107
104
  variableNodeAMatchesVariableNodeB = variableNodeA.match(variableNodeB);
108
105
 
109
106
  if (variableNodeAMatchesVariableNodeB) {
@@ -2,10 +2,6 @@
2
2
 
3
3
  import dom from "../../dom";
4
4
 
5
- import { nodeQuery } from "../../utilities/query";
6
-
7
- const variableNodeQuery = nodeQuery("/term/variable!");
8
-
9
5
  function unifyWithBracketedConstructor(term, context, verifyAhead) {
10
6
  let unifiedWithBracketedConstructor;
11
7
 
@@ -39,14 +35,12 @@ function verifyTermAsVariable(term, localContext, verifyAhead) {
39
35
  const { Variable } = dom,
40
36
  context = localContext, ///
41
37
  termNode = term.getNode(),
42
- variableNode = variableNodeQuery(termNode);
43
-
44
- let variable;
45
-
46
- variable = Variable.fromVariableNode(variableNode, context);
38
+ singularVariableNode = termNode.getSingularVariableNode();
47
39
 
48
- if (variable !== null) {
49
- const termString = term.getString();
40
+ if (singularVariableNode !== null) {
41
+ const variableNode = singularVariableNode,
42
+ variable = Variable.fromVariableNode(variableNode, context),
43
+ termString = term.getString();
50
44
 
51
45
  localContext.trace(`Verifying the '${termString}' term as a variable...`);
52
46
 
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../node/nonTerminal";
4
+
5
+ import { TERM_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class ArgumentNode extends NonTerminalNode {
8
+ getSingularTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ singularTermNode = this.getSingularTNodeByRuleName(ruleName);
11
+
12
+ return singularTermNode;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ArgumentNode, ruleName, childNodes, opacity, precedence); }
16
+ }
@@ -1,7 +1,53 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- export default class ContainedAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(ContainedAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { MISSING } from "../../constants";
6
+ import { TERM_RULE_NAME, FRAME_RULE_NAME, STATEMENT_RULE_NAME } from "../../ruleNames";
7
+
8
+ export default class ContainedAssertionNode extends NonTerminalNode {
9
+ isNegated() {
10
+ let negated = false;
11
+
12
+ this.someChildNode((childNode) => {
13
+ const childNodeTerminalNode = childNode.isTerminalNode();
14
+
15
+ if (childNodeTerminalNode) {
16
+ const terminalNode = childNode, ///
17
+ content = terminalNode.getContent(),
18
+ contentMessing = (content === MISSING);
19
+
20
+ if (contentMessing) {
21
+ negated = true;
22
+
23
+ return true;
24
+ }
25
+ }
26
+ });
27
+
28
+ return negated;
29
+ }
30
+
31
+ getTermNode() {
32
+ const ruleName = TERM_RULE_NAME,
33
+ termNode = this.getNodeByRuleName(ruleName);
34
+
35
+ return termNode;
36
+ }
37
+
38
+ getFrameNode() {
39
+ const ruleName = FRAME_RULE_NAME,
40
+ frameNode = this.getNodeByRuleName(ruleName);
41
+
42
+ return frameNode;
43
+ }
44
+
45
+ getStatementNode() {
46
+ const ruleName = STATEMENT_RULE_NAME,
47
+ statementNode = this.getNodeByRuleName(ruleName);
48
+
49
+ return statementNode;
50
+ }
51
+
52
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ContainedAssertionNode, ruleName, childNodes, opacity, precedence); }
7
53
  }
@@ -1,7 +1,46 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- export default class DefinedAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(DefinedAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { UNDEFINED } from "../../constants";
6
+ import { FRAME_RULE_NAME, TERM_RULE_NAME } from "../../ruleNames";
7
+
8
+ export default class DefinedAssertionNode extends NonTerminalNode {
9
+ isNegated() {
10
+ let negated = false;
11
+
12
+ this.someChildNode((childNode) => {
13
+ const childNodeTerminalNode = childNode.isTerminalNode();
14
+
15
+ if (childNodeTerminalNode) {
16
+ const terminalNode = childNode, ///
17
+ content = terminalNode.getContent(),
18
+ contentUndefined = (content === UNDEFINED);
19
+
20
+ if (contentUndefined) {
21
+ negated = true;
22
+
23
+ return true;
24
+ }
25
+ }
26
+ });
27
+
28
+ return negated;
29
+ }
30
+
31
+ getTermNode() {
32
+ const ruleName = TERM_RULE_NAME,
33
+ termNode = this.getNodeByRuleName(ruleName);
34
+
35
+ return termNode;
36
+ }
37
+
38
+ getFrameNode() {
39
+ const ruleName = FRAME_RULE_NAME,
40
+ frameNode = this.getNodeByRuleName(ruleName);
41
+
42
+ return frameNode;
43
+ }
44
+
45
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DefinedAssertionNode, ruleName, childNodes, opacity, precedence); }
7
46
  }
@@ -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 PropertyAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(PropertyAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { TERM_RULE_NAME, PROPERTY_RELATION_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class PropertyAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return termNode;
13
+ }
14
+
15
+ getFrameNode() {
16
+ const ruleName = PROPERTY_RELATION_RULE_NAME,
17
+ propertyRelationNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return propertyRelationNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyAssertionNode, ruleName, childNodes, opacity, precedence); }
7
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 SatisfiesAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SatisfiesAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { TERM_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class SatisfiesAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return termNode;
13
+ }
14
+
15
+ getFrameNode() {
16
+ const ruleName = METAVARIABLE_RULE_NAME,
17
+ metavariableNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return metavariableNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SatisfiesAssertionNode, ruleName, childNodes, opacity, precedence); }
7
23
  }
@@ -1,7 +1,16 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../../node";
3
+ import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- export default class SubproofAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(SubproofAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class SubproofAssertionNode extends NonTerminalNode {
8
+ getStatementNodes() {
9
+ const ruleName = STATEMENT_RULE_NAME,
10
+ statementNodes = this.getNodesByRuleName(ruleName);
11
+
12
+ return statementNodes;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofAssertionNode, ruleName, childNodes, opacity, precedence); }
7
16
  }
@@ -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 TypeAssertionNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(TypeAssertionNode, ruleName, childNodes, opacity, precedence); }
5
+ import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class TypeAssertionNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return termNode;
13
+ }
14
+
15
+ getTypeNode() {
16
+ const ruleName = TYPE_RULE_NAME,
17
+ typeNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return typeNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeAssertionNode, ruleName, childNodes, opacity, precedence); }
7
23
  }
package/src/node/axiom.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import Node from "../node";
3
+ import TopLevelAssertionNode from "../node/topLevelAssertion";
4
4
 
5
- export default class AxiomNode extends Node {
6
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return Node.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
5
+ export default class AxiomNode extends TopLevelAssertionNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
7
7
  }