occam-verify-cli 1.0.438 → 1.0.448

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 (222) hide show
  1. package/lib/context/file.js +42 -39
  2. package/lib/context/local.js +34 -34
  3. package/lib/context/release.js +3 -7
  4. package/lib/context/temporary.js +26 -26
  5. package/lib/element/assertion/contained.js +45 -45
  6. package/lib/element/assertion/defined.js +13 -13
  7. package/lib/element/assertion/property.js +23 -22
  8. package/lib/element/assertion/satisfies.js +7 -6
  9. package/lib/element/assertion/subproof.js +20 -17
  10. package/lib/element/assertion/type.js +3 -2
  11. package/lib/element/assertion.js +1 -23
  12. package/lib/element/assumption.js +24 -22
  13. package/lib/element/axiom.js +27 -30
  14. package/lib/element/axiomLemmaTheoremConjecture.js +50 -57
  15. package/lib/element/{statement/combinator → combinator}/bracketed.js +16 -16
  16. package/lib/element/combinator.js +229 -0
  17. package/lib/element/conclusion.js +11 -9
  18. package/lib/element/{term/constructor → constructor}/bracketed.js +5 -5
  19. package/lib/element/constructor.js +232 -0
  20. package/lib/element/declaration/combinator.js +2 -16
  21. package/lib/element/declaration/complexType.js +12 -12
  22. package/lib/element/declaration/constructor.js +13 -11
  23. package/lib/element/declaration/simpleType.js +4 -4
  24. package/lib/element/declaration/typePrefix.js +2 -2
  25. package/lib/element/declaration/variable.js +3 -3
  26. package/lib/element/deduction.js +11 -9
  27. package/lib/element/derivation.js +17 -20
  28. package/lib/element/equivalence.js +10 -10
  29. package/lib/element/equivalences.js +5 -5
  30. package/lib/element/frame.js +32 -38
  31. package/lib/element/hypothesis.js +16 -57
  32. package/lib/element/judgement.js +6 -4
  33. package/lib/element/label.js +8 -8
  34. package/lib/element/metaLemmaMetatheorem.js +6 -39
  35. package/lib/element/metaType.js +17 -80
  36. package/lib/element/metavariable.js +38 -34
  37. package/lib/element/parameter.js +3 -3
  38. package/lib/element/premise.js +92 -174
  39. package/lib/element/proof.js +7 -7
  40. package/lib/element/proofAssertion.js +203 -0
  41. package/lib/element/property.js +9 -9
  42. package/lib/element/propertyRelation.js +13 -13
  43. package/lib/element/reference.js +16 -17
  44. package/lib/element/rule.js +46 -46
  45. package/lib/element/signature.js +11 -11
  46. package/lib/element/statement.js +18 -18
  47. package/lib/element/step.js +73 -124
  48. package/lib/element/subDerivation.js +17 -20
  49. package/lib/element/subproof.js +16 -24
  50. package/lib/element/substitution/frame.js +1 -7
  51. package/lib/element/substitution/reference.js +2 -3
  52. package/lib/element/substitution/statement.js +44 -15
  53. package/lib/element/substitution/term.js +10 -57
  54. package/lib/element/substitution.js +5 -11
  55. package/lib/element/substitutions.js +29 -29
  56. package/lib/element/supposition.js +95 -177
  57. package/lib/element/term.js +21 -34
  58. package/lib/element/type.js +47 -60
  59. package/lib/element/typePrefix.js +5 -5
  60. package/lib/element/variable.js +9 -9
  61. package/lib/element.js +9 -3
  62. package/lib/metaTypes.js +63 -0
  63. package/lib/node/axiomLemmaTheoremConjecture.js +9 -9
  64. package/lib/node/body/axiom.js +2 -25
  65. package/lib/node/body/conjecture.js +2 -25
  66. package/lib/node/body/lemma.js +2 -25
  67. package/lib/node/body/metaLemma.js +2 -25
  68. package/lib/node/body/metatheorem.js +2 -25
  69. package/lib/node/body/rule.js +15 -1
  70. package/lib/node/body/theorem.js +2 -25
  71. package/lib/node/body.js +25 -2
  72. package/lib/node/combinator.js +11 -2
  73. package/lib/node/constructor.js +11 -2
  74. package/lib/node/declaration/combinator.js +5 -5
  75. package/lib/node/declaration/constructor.js +8 -8
  76. package/lib/node/declaration/property.js +15 -15
  77. package/lib/node/declaration/simpleType.js +31 -31
  78. package/lib/node/declaration/variable.js +8 -8
  79. package/lib/node/equality.js +8 -8
  80. package/lib/node/frame.js +20 -20
  81. package/lib/node/header.js +22 -22
  82. package/lib/node/metaLemmaMetaTheorem.js +16 -16
  83. package/lib/node/metavariable.js +15 -15
  84. package/lib/node/property.js +8 -8
  85. package/lib/node/propertyRelation.js +8 -8
  86. package/lib/node/rule.js +16 -16
  87. package/lib/node/statement.js +12 -12
  88. package/lib/node/step.js +22 -22
  89. package/lib/node/subDerivation.js +1 -8
  90. package/lib/node/subproof.js +5 -12
  91. package/lib/node/substitution/frame.js +19 -19
  92. package/lib/node/substitution/statement.js +19 -19
  93. package/lib/node/substitution/term.js +19 -19
  94. package/lib/node/term.js +35 -35
  95. package/lib/preamble.js +5 -5
  96. package/lib/process/instantiate.js +20 -2
  97. package/lib/process/unify.js +39 -42
  98. package/lib/process/validate.js +431 -0
  99. package/lib/process/verify.js +44 -135
  100. package/lib/types.js +27 -0
  101. package/lib/utilities/brackets.js +9 -14
  102. package/lib/utilities/element.js +91 -55
  103. package/lib/utilities/instance.js +41 -28
  104. package/lib/utilities/statement.js +2 -2
  105. package/lib/utilities/string.js +25 -14
  106. package/lib/utilities/unification.js +237 -0
  107. package/lib/utilities/validation.js +251 -0
  108. package/package.json +6 -6
  109. package/src/context/file.js +40 -34
  110. package/src/context/local.js +34 -34
  111. package/src/context/release.js +2 -6
  112. package/src/context/temporary.js +15 -15
  113. package/src/element/assertion/contained.js +19 -20
  114. package/src/element/assertion/defined.js +11 -12
  115. package/src/element/assertion/property.js +20 -20
  116. package/src/element/assertion/satisfies.js +6 -6
  117. package/src/element/assertion/subproof.js +17 -15
  118. package/src/element/assertion/type.js +2 -2
  119. package/src/element/assertion.js +0 -2
  120. package/src/element/assumption.js +22 -19
  121. package/src/element/axiom.js +33 -37
  122. package/src/element/axiomLemmaTheoremConjecture.js +54 -73
  123. package/src/element/{statement/combinator → combinator}/bracketed.js +7 -7
  124. package/src/element/combinator.js +90 -0
  125. package/src/element/conclusion.js +12 -10
  126. package/src/element/{term/constructor → constructor}/bracketed.js +5 -5
  127. package/src/element/{term/constructor.js → constructor.js} +17 -25
  128. package/src/element/declaration/combinator.js +1 -22
  129. package/src/element/declaration/complexType.js +11 -11
  130. package/src/element/declaration/constructor.js +13 -10
  131. package/src/element/declaration/simpleType.js +3 -3
  132. package/src/element/declaration/typePrefix.js +1 -1
  133. package/src/element/declaration/variable.js +2 -2
  134. package/src/element/deduction.js +12 -9
  135. package/src/element/derivation.js +15 -19
  136. package/src/element/equivalence.js +8 -8
  137. package/src/element/equivalences.js +4 -4
  138. package/src/element/frame.js +28 -30
  139. package/src/element/hypothesis.js +16 -18
  140. package/src/element/judgement.js +6 -3
  141. package/src/element/label.js +4 -4
  142. package/src/element/metaLemmaMetatheorem.js +5 -69
  143. package/src/element/metaType.js +9 -45
  144. package/src/element/metavariable.js +34 -31
  145. package/src/element/parameter.js +2 -2
  146. package/src/element/premise.js +124 -99
  147. package/src/element/proof.js +6 -6
  148. package/src/element/proofAssertion.js +76 -0
  149. package/src/element/property.js +6 -6
  150. package/src/element/propertyRelation.js +11 -11
  151. package/src/element/reference.js +14 -21
  152. package/src/element/rule.js +39 -38
  153. package/src/element/signature.js +10 -9
  154. package/src/element/statement.js +16 -18
  155. package/src/element/step.js +78 -78
  156. package/src/element/subDerivation.js +15 -19
  157. package/src/element/subproof.js +11 -19
  158. package/src/element/substitution/frame.js +0 -2
  159. package/src/element/substitution/reference.js +1 -5
  160. package/src/element/substitution/statement.js +44 -14
  161. package/src/element/substitution/term.js +10 -13
  162. package/src/element/substitution.js +3 -5
  163. package/src/element/substitutions.js +48 -30
  164. package/src/element/supposition.js +127 -108
  165. package/src/element/term.js +18 -28
  166. package/src/element/type.js +42 -36
  167. package/src/element/typePrefix.js +3 -3
  168. package/src/element/variable.js +7 -7
  169. package/src/element.js +3 -1
  170. package/src/metaTypes.js +55 -0
  171. package/src/node/axiomLemmaTheoremConjecture.js +6 -6
  172. package/src/node/body/axiom.js +0 -21
  173. package/src/node/body/conjecture.js +0 -23
  174. package/src/node/body/lemma.js +0 -23
  175. package/src/node/body/metaLemma.js +0 -23
  176. package/src/node/body/metatheorem.js +0 -23
  177. package/src/node/body/rule.js +12 -0
  178. package/src/node/body/theorem.js +0 -23
  179. package/src/node/body.js +23 -0
  180. package/src/node/combinator.js +9 -0
  181. package/src/node/constructor.js +9 -0
  182. package/src/node/declaration/combinator.js +5 -5
  183. package/src/node/declaration/constructor.js +8 -8
  184. package/src/node/declaration/property.js +14 -14
  185. package/src/node/declaration/simpleType.js +31 -31
  186. package/src/node/declaration/variable.js +7 -7
  187. package/src/node/equality.js +7 -7
  188. package/src/node/frame.js +21 -21
  189. package/src/node/header.js +22 -22
  190. package/src/node/metaLemmaMetaTheorem.js +14 -14
  191. package/src/node/metavariable.js +14 -14
  192. package/src/node/property.js +7 -7
  193. package/src/node/propertyRelation.js +7 -7
  194. package/src/node/rule.js +15 -15
  195. package/src/node/statement.js +12 -12
  196. package/src/node/step.js +21 -21
  197. package/src/node/subDerivation.js +0 -7
  198. package/src/node/subproof.js +4 -11
  199. package/src/node/substitution/frame.js +18 -18
  200. package/src/node/substitution/statement.js +18 -18
  201. package/src/node/substitution/term.js +18 -18
  202. package/src/node/term.js +34 -34
  203. package/src/preamble.js +4 -4
  204. package/src/process/instantiate.js +12 -0
  205. package/src/process/unify.js +53 -57
  206. package/src/process/validate.js +316 -0
  207. package/src/process/verify.js +50 -138
  208. package/src/types.js +18 -0
  209. package/src/utilities/brackets.js +15 -14
  210. package/src/utilities/element.js +125 -82
  211. package/src/utilities/instance.js +42 -24
  212. package/src/utilities/statement.js +2 -2
  213. package/src/utilities/string.js +38 -24
  214. package/src/{mixins/step/unify.js → utilities/unification.js} +99 -85
  215. package/src/{mixins/statement/validate.js → utilities/validation.js} +143 -69
  216. package/lib/element/statement/combinator.js +0 -105
  217. package/lib/element/term/constructor.js +0 -172
  218. package/lib/mixins/statement/validate.js +0 -198
  219. package/lib/mixins/step/unify.js +0 -228
  220. package/lib/mixins/term/verify.js +0 -65
  221. package/src/element/statement/combinator.js +0 -59
  222. package/src/mixins/term/verify.js +0 -81
@@ -3,9 +3,9 @@
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
5
  import Element from "../element";
6
- import verifyMixins from "../mixins/term/verify";
7
6
 
8
7
  import { define } from "../elements";
8
+ import { validateTerms } from "../utilities/validation";
9
9
  import { instantiateTerm } from "../process/instantiate";
10
10
  import { typeFromJSON, typeToTypeJSON } from "../utilities/json";
11
11
 
@@ -30,10 +30,8 @@ export default define(class Term extends Element {
30
30
 
31
31
  isProvisional() { return this.type.isProvisional(); }
32
32
 
33
- matchTermNode(termNode) { return this.node.match(termNode); }
34
-
35
- isEqualToVariable(variable) {
36
- let variableNodeMathces = false;
33
+ compareVariable(variable) {
34
+ let comparesToVaraible = false;
37
35
 
38
36
  const singular = this.isSingular();
39
37
 
@@ -45,19 +43,11 @@ export default define(class Term extends Element {
45
43
  matches = variableNodeA.match(variableNodeB);
46
44
 
47
45
  if (matches) {
48
- variableNodeMathces = true;
46
+ comparesToVaraible = true;
49
47
  }
50
48
  }
51
49
 
52
- return variableNodeMathces;
53
- }
54
-
55
- isEqualTo(term) {
56
- const termNode = term.getNode(),
57
- matches = this.node.match(termNode),
58
- equalTo = matches; ///
59
-
60
- return equalTo;
50
+ return comparesToVaraible;
61
51
  }
62
52
 
63
53
  isGrounded(definedVariables, context) {
@@ -95,31 +85,31 @@ export default define(class Term extends Element {
95
85
  return implicitlyGrounded;
96
86
  }
97
87
 
98
- verify(context, verifyAhead) {
99
- let verifies;
88
+ validate(context, verifyAhead) {
89
+ let validates;
100
90
 
101
91
  const termString = this.string; ///
102
92
 
103
- context.trace(`Verifying the '${termString}' term...`);
93
+ context.trace(`Validating the '${termString}' term...`);
104
94
 
105
- verifies = verifyMixins.some((verifyMixin) => {
95
+ validates = validateTerms.some((validateTerm) => { ///
106
96
  const term = this, ///
107
- verifies = verifyMixin(term, context, verifyAhead);
97
+ termValidates = validateTerm(term, context, verifyAhead);
108
98
 
109
- if (verifies) {
99
+ if (termValidates) {
110
100
  return true;
111
101
  }
112
102
  });
113
103
 
114
- if (verifies) {
104
+ if (validates) {
115
105
  const term = this; ///
116
106
 
117
107
  context.addTerm(term);
118
108
 
119
- context.debug(`...verified the '${termString}' term.`);
109
+ context.debug(`...validated the '${termString}' term.`);
120
110
  }
121
111
 
122
- return verifies;
112
+ return validates;
123
113
  }
124
114
 
125
115
  verifyGivenType(type, generalContext, specificContext) {
@@ -128,10 +118,10 @@ export default define(class Term extends Element {
128
118
  const typeString = type.getString(),
129
119
  termString = this.getString(); ///
130
120
 
131
- specificContext.trace(`Verifying the '${termString}' term given the '${typeString}' type...`);
121
+ specificContext.trace(`Validating the '${termString}' term given the '${typeString}' type...`);
132
122
 
133
123
  const context = specificContext, ///
134
- verifies = this.verify(context, () => {
124
+ validates = this.validate(context, () => {
135
125
  let verifiesAhead;
136
126
 
137
127
  const typeEqualToOrSubTypeOfGivenTypeType = this.type.isEqualToOrSubTypeOf(type);
@@ -143,10 +133,10 @@ export default define(class Term extends Element {
143
133
  return verifiesAhead;
144
134
  });
145
135
 
146
- verifiesGivenType = verifies; ///
136
+ verifiesGivenType = validates; ///
147
137
 
148
138
  if (verifiesGivenType) {
149
- specificContext.debug(`...verified the '${termString}' term given the '${typeString}' type.`);
139
+ specificContext.debug(`...validated the '${termString}' term given the '${typeString}' type.`);
150
140
  }
151
141
 
152
142
  return verifiesGivenType;
@@ -5,13 +5,13 @@ import { arrayUtilities } from "necessary";
5
5
  import Element from "../element";
6
6
 
7
7
  import { define } from "../elements";
8
- import { BASE_TYPE_SYMBOL } from "../constants";
8
+ import { baseTypeFromNothing } from "../types";
9
9
  import { typeStringFromTypeNameTypePrefixNameAndSuperTypes } from "../utilities/string";
10
10
  import { superTypesFromJSON, propertiesFromJSON, superTypesToSuperTypesJSON, propertiesToPropertiesJSON } from "../utilities/json";
11
11
 
12
12
  const { push, first } = arrayUtilities;
13
13
 
14
- class Type extends Element {
14
+ export default define(class Type extends Element {
15
15
  constructor(context, string, node, name, prefixName, superTypes, properties, provisional) {
16
16
  super(context, string, node);
17
17
  this.name = name;
@@ -129,7 +129,8 @@ class Type extends Element {
129
129
 
130
130
  if (superTypesLength === 1) {
131
131
  const firstSuperType = first(this.superTypes),
132
- superType = firstSuperType; ///
132
+ superType = firstSuperType, ///
133
+ baseType = baseTypeFromNothing();
133
134
 
134
135
  if (superType === baseType) {
135
136
  basic = true;
@@ -166,6 +167,8 @@ class Type extends Element {
166
167
  isSubTypeOf(type) {
167
168
  let subTypeOf;
168
169
 
170
+ const baseType = baseTypeFromNothing();
171
+
169
172
  if (this === baseType) {
170
173
  subTypeOf = false;
171
174
  } else {
@@ -217,15 +220,16 @@ class Type extends Element {
217
220
  return equalToOrSuperTypeOf;
218
221
  }
219
222
 
220
- matchTypeName(typeName) {
223
+ compareTypeName(typeName) {
221
224
  const name = this.getName(),
222
- typeNameMatches = (name === typeName);
225
+ nameTypeName = (name === typeName),
226
+ comparesToTypeName = nameTypeName; ///
223
227
 
224
- return typeNameMatches;
228
+ return comparesToTypeName;
225
229
  }
226
230
 
227
- matchProvisional(provisional) {
228
- let provisionalMatches;
231
+ compareProvisional(provisional) {
232
+ let comparesToProvisional;
229
233
 
230
234
  const provisionalA = provisional; ///
231
235
 
@@ -233,45 +237,54 @@ class Type extends Element {
233
237
 
234
238
  const provisionalB = provisional; ///
235
239
 
236
- provisionalMatches = (provisionalA === provisionalB);
240
+ comparesToProvisional = (provisionalA === provisionalB);
237
241
 
238
- return provisionalMatches;
242
+ return comparesToProvisional;
239
243
  }
240
244
 
241
- matchPrefixedTypeName(prefixedTypeName) {
242
- let prefixedTypeNameMatches = false;
245
+ comparePrefixedTypeName(prefixedTypeName) {
246
+ let comparesToPrefixedTypeName = false;
243
247
 
244
248
  const prefixed = this.isPrefixed();
245
249
 
246
250
  if (prefixed) {
247
- const prefixedName = this.getPrefixedName();
251
+ const prefixedName = this.getPrefixedName(),
252
+ prefixedTypeNamePrefixedName = (prefixedTypeName === prefixedName);
248
253
 
249
- prefixedTypeNameMatches = (prefixedTypeName === prefixedName);
254
+ if (prefixedTypeNamePrefixedName) {
255
+ comparesToPrefixedTypeName = true;
256
+ }
250
257
  }
251
258
 
252
- return prefixedTypeNameMatches;
259
+ return comparesToPrefixedTypeName;
253
260
  }
254
261
 
255
- matchNominalTypeName(nominalTypeName) {
256
- let nominalTypeNameMatches = false;
262
+ compareNominalTypeName(nominalTypeName) {
263
+ let comparesToNominalTypeName = false;
257
264
 
258
- if (!nominalTypeNameMatches) {
259
- const name = this.getName();
265
+ if (!comparesToNominalTypeName) {
266
+ const name = this.getName(),
267
+ nominalTypeNameName = (nominalTypeName === name);
260
268
 
261
- nominalTypeNameMatches = (nominalTypeName === name);
269
+ if (nominalTypeNameName) {
270
+ comparesToNominalTypeName = true;
271
+ }
262
272
  }
263
273
 
264
- if (!nominalTypeNameMatches) {
274
+ if (!comparesToNominalTypeName) {
265
275
  const prefixed = this.isPrefixed();
266
276
 
267
277
  if (prefixed) {
268
- const prefixedName = this.getPrefixedName();
278
+ const prefixedName = this.getPrefixedName(),
279
+ nominalTypeNamePrefixedName = (nominalTypeName === prefixedName);
269
280
 
270
- nominalTypeNameMatches = (nominalTypeName === prefixedName);
281
+ if (nominalTypeNamePrefixedName) {
282
+ comparesToNominalTypeName = true;
283
+ }
271
284
  }
272
285
  }
273
286
 
274
- return nominalTypeNameMatches;
287
+ return comparesToNominalTypeName;
275
288
  }
276
289
 
277
290
  toJSON() {
@@ -307,24 +320,17 @@ class Type extends Element {
307
320
 
308
321
  return type;
309
322
  }
310
- }
311
323
 
312
- export default define(Type);
313
-
314
- class BaseType extends Type {
315
- static fromNothing() {
316
- const name = BASE_TYPE_SYMBOL, ///
317
- context = null,
324
+ static fromName(name) {
325
+ const context = null,
318
326
  string = name, ///
319
327
  node = null,
320
328
  prefixName = null,
321
329
  superTypes = [],
322
330
  properties = [],
323
331
  provisional = false,
324
- baseType = new BaseType(context, string, node, name, prefixName, superTypes, properties, provisional);
332
+ type = new Type(context, string, node, name, prefixName, superTypes, properties, provisional);
325
333
 
326
- return baseType;
334
+ return type;
327
335
  }
328
- }
329
-
330
- export const baseType = BaseType.fromNothing();
336
+ });
@@ -15,10 +15,10 @@ export default define(class TypePrefix extends Element {
15
15
  return this.name;
16
16
  }
17
17
 
18
- matchTypePrefixName(typePrefixName) {
19
- const typePrefixNameMatches = (this.name === typePrefixName);
18
+ compareTypePrefixName(typePrefixName) {
19
+ const comparesToTypePrefixName = (this.name === typePrefixName);
20
20
 
21
- return typePrefixNameMatches;
21
+ return comparesToTypePrefixName;
22
22
  }
23
23
 
24
24
  toJSON() {
@@ -34,18 +34,18 @@ export default define(class Variable extends Element {
34
34
 
35
35
  getTypeString() { return this.type.getString(); }
36
36
 
37
- matchParameter(parameter) {
37
+ compareParameter(parameter) {
38
38
  const parameterName = parameter.getName(),
39
- parameterNameMatchesIdentifier = (parameterName === this.identifier),
40
- parameterMatches = parameterNameMatchesIdentifier; ///
39
+ identifierParamterName = (this.identifier === parameterName),
40
+ comparesToParamter = identifierParamterName; ///
41
41
 
42
- return parameterMatches;
42
+ return comparesToParamter;
43
43
  }
44
44
 
45
- matchVariableIdentifier(variableIdentifier) {
46
- const variableIdentifierMatches = (variableIdentifier === this.identifier);
45
+ compareVariableIdentifier(variableIdentifier) {
46
+ const comparesToVariablbeIdentifier = (this.identifier === variableIdentifier);
47
47
 
48
- return variableIdentifierMatches;
48
+ return comparesToVariablbeIdentifier;
49
49
  }
50
50
 
51
51
  verify(context) {
package/src/element.js CHANGED
@@ -31,7 +31,9 @@ export default class Element {
31
31
  this.node = node;
32
32
  }
33
33
 
34
- isEQualTo(element) {
34
+ matchNode(node) { return this.node.match(node); }
35
+
36
+ isEqualTo(element) {
35
37
  const elementNode = element.getNode(),
36
38
  matches = this.node.match(elementNode),
37
39
  equalTo = matches; ///
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ import elements from "./elements";
4
+
5
+ import { FRAME_META_TYPE_NAME, REFERENCE_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "./metaTypeNames";
6
+
7
+ let frameMetaType = null,
8
+ referenceMetaType = null,
9
+ statementMetaType = null;
10
+
11
+ export function getMetaTypes() {
12
+ const frameMetaType = frameMetaTypeFromNothing(),
13
+ referenceMetaType = referenceMetaTypeFromNothing(),
14
+ statementMetaType = statementMetaTypeFromNothing(),
15
+ metaTypes = [
16
+ frameMetaType,
17
+ referenceMetaType,
18
+ statementMetaType
19
+ ];
20
+
21
+ return metaTypes;
22
+ }
23
+
24
+ export function frameMetaTypeFromNothing() {
25
+ if (frameMetaType === null) {
26
+ const { MetaType } = elements,
27
+ name = FRAME_META_TYPE_NAME; ///
28
+
29
+ frameMetaType = MetaType.fromName(name);
30
+ }
31
+
32
+ return frameMetaType;
33
+ }
34
+
35
+ export function statementMetaTypeFromNothing() {
36
+ if (statementMetaType === null) {
37
+ const { MetaType } = elements,
38
+ name = STATEMENT_META_TYPE_NAME; ///
39
+
40
+ statementMetaType = MetaType.fromName(name);
41
+ }
42
+
43
+ return statementMetaType;
44
+ }
45
+
46
+ export function referenceMetaTypeFromNothing() {
47
+ if (referenceMetaType === null) {
48
+ const { MetaType } = elements,
49
+ name = REFERENCE_META_TYPE_NAME; ///
50
+
51
+ referenceMetaType = MetaType.fromName(name);
52
+ }
53
+
54
+ return referenceMetaType;
55
+ }
@@ -33,11 +33,11 @@ export default class AxiomLemmaTheoremConjectureNode extends NonTerminalNode {
33
33
  return labelNodes;
34
34
  }
35
35
 
36
- getSuppositionNodes() {
36
+ getProofNode() {
37
37
  const bodyNode = this.getBodyNode(),
38
- suppositionNodes = bodyNode.getSuppositionNodes();
38
+ proofNode = bodyNode.getProofNode();
39
39
 
40
- return suppositionNodes;
40
+ return proofNode;
41
41
  }
42
42
 
43
43
  getDeductionNode() {
@@ -47,11 +47,11 @@ export default class AxiomLemmaTheoremConjectureNode extends NonTerminalNode {
47
47
  return deductionNode;
48
48
  }
49
49
 
50
- getProofNode() {
50
+ getSuppositionNodes() {
51
51
  const bodyNode = this.getBodyNode(),
52
- proofNode = bodyNode.getProofNode();
52
+ suppositionNodes = bodyNode.getSuppositionNodes();
53
53
 
54
- return proofNode;
54
+ return suppositionNodes;
55
55
  }
56
56
 
57
57
  static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
@@ -1,28 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import BodyNode from "../../node/body";
4
- import { DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../../ruleNames";
5
4
 
6
5
  export default class AxiomBodyNode extends BodyNode {
7
- getProofNode() {
8
- const proofNode = null;
9
-
10
- return proofNode;
11
- }
12
-
13
- getDeductionNode() {
14
- const ruleName = DEDUCTION_RULE_NAME,
15
- deductionNode = this.getNodeByRuleName(ruleName);
16
-
17
- return deductionNode;
18
- }
19
-
20
- getSuppositionNodes() {
21
- const ruleName = SUPPOSITION_RULE_NAME,
22
- suppositionNodes = this.getNodesByRuleName(ruleName);
23
-
24
- return suppositionNodes;
25
- }
26
-
27
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(AxiomBodyNode, ruleName, childNodes, opacity, precedence); }
28
7
  }
@@ -2,29 +2,6 @@
2
2
 
3
3
  import BodyNode from "../../node/body";
4
4
 
5
- import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../../ruleNames";
6
-
7
5
  export default class ConjectureBodyNode extends BodyNode {
8
- getProofNode() {
9
- const ruleName = PROOF_RULE_NAME,
10
- proofNode = this.getNodeByRuleName(ruleName);
11
-
12
- return proofNode;
13
- }
14
-
15
- getDeductionNode() {
16
- const ruleName = DEDUCTION_RULE_NAME,
17
- deductionNode = this.getNodeByRuleName(ruleName);
18
-
19
- return deductionNode;
20
- }
21
-
22
- getSuppositionNodes() {
23
- const ruleName = SUPPOSITION_RULE_NAME,
24
- suppositionNodes = this.getNodesByRuleName(ruleName);
25
-
26
- return suppositionNodes;
27
- }
28
-
29
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(ConjectureBodyNode, ruleName, childNodes, opacity, precedence); }
30
7
  }
@@ -2,29 +2,6 @@
2
2
 
3
3
  import BodyNode from "../../node/body";
4
4
 
5
- import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../../ruleNames";
6
-
7
5
  export default class LemmaBodyNode extends BodyNode {
8
- getProofNode() {
9
- const ruleName = PROOF_RULE_NAME,
10
- proofNode = this.getNodeByRuleName(ruleName);
11
-
12
- return proofNode;
13
- }
14
-
15
- getDeductionNode() {
16
- const ruleName = DEDUCTION_RULE_NAME,
17
- deductionNode = this.getNodeByRuleName(ruleName);
18
-
19
- return deductionNode;
20
- }
21
-
22
- getSuppositionNodes() {
23
- const ruleName = SUPPOSITION_RULE_NAME,
24
- suppositionNodes = this.getNodesByRuleName(ruleName);
25
-
26
- return suppositionNodes;
27
- }
28
-
29
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(LemmaBodyNode, ruleName, childNodes, opacity, precedence); }
30
7
  }
@@ -2,29 +2,6 @@
2
2
 
3
3
  import BodyNode from "../../node/body";
4
4
 
5
- import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../../ruleNames";
6
-
7
5
  export default class MetaLemmaBodyNode extends BodyNode {
8
- getProofNode() {
9
- const ruleName = PROOF_RULE_NAME,
10
- proofNode = this.getNodeByRuleName(ruleName);
11
-
12
- return proofNode;
13
- }
14
-
15
- getDeductionNode() {
16
- const ruleName = DEDUCTION_RULE_NAME,
17
- deductionNode = this.getNodeByRuleName(ruleName);
18
-
19
- return deductionNode;
20
- }
21
-
22
- getSuppositionNodes() {
23
- const ruleName = SUPPOSITION_RULE_NAME,
24
- suppositionNodes = this.getNodesByRuleName(ruleName);
25
-
26
- return suppositionNodes;
27
- }
28
-
29
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaBodyNode, ruleName, childNodes, opacity, precedence); }
30
7
  }
@@ -2,29 +2,6 @@
2
2
 
3
3
  import BodyNode from "../../node/body";
4
4
 
5
- import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../../ruleNames";
6
-
7
5
  export default class MetatheoremBodyNode extends BodyNode {
8
- getProofNode() {
9
- const ruleName = PROOF_RULE_NAME,
10
- proofNode = this.getNodeByRuleName(ruleName);
11
-
12
- return proofNode;
13
- }
14
-
15
- getDeductionNode() {
16
- const ruleName = DEDUCTION_RULE_NAME,
17
- deductionNode = this.getNodeByRuleName(ruleName);
18
-
19
- return deductionNode;
20
- }
21
-
22
- getSuppositionNodes() {
23
- const ruleName = SUPPOSITION_RULE_NAME,
24
- suppositionNodes = this.getNodesByRuleName(ruleName);
25
-
26
- return suppositionNodes;
27
- }
28
-
29
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremBodyNode, ruleName, childNodes, opacity, precedence); }
30
7
  }
@@ -26,5 +26,17 @@ export default class RuleBodyNode extends BodyNode {
26
26
  return conclusionNode;
27
27
  }
28
28
 
29
+ getDeductionNode() {
30
+ const deductionNode = null;
31
+
32
+ return deductionNode;
33
+ }
34
+
35
+ getSuppositionNodes() {
36
+ const suppositionNodes = null;
37
+
38
+ return suppositionNodes;
39
+ }
40
+
29
41
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleBodyNode, ruleName, childNodes, opacity, precedence); }
30
42
  }
@@ -2,29 +2,6 @@
2
2
 
3
3
  import BodyNode from "../../node/body";
4
4
 
5
- import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../../ruleNames";
6
-
7
5
  export default class TheoremBodyNode extends BodyNode {
8
- getProofNode() {
9
- const ruleName = PROOF_RULE_NAME,
10
- proofNode = this.getNodeByRuleName(ruleName);
11
-
12
- return proofNode;
13
- }
14
-
15
- getDeductionNode() {
16
- const ruleName = DEDUCTION_RULE_NAME,
17
- deductionNode = this.getNodeByRuleName(ruleName);
18
-
19
- return deductionNode;
20
- }
21
-
22
- getSuppositionNodes() {
23
- const ruleName = SUPPOSITION_RULE_NAME,
24
- suppositionNodes = this.getNodesByRuleName(ruleName);
25
-
26
- return suppositionNodes;
27
- }
28
-
29
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return BodyNode.fromRuleNameChildNodesOpacityAndPrecedence(TheoremBodyNode, ruleName, childNodes, opacity, precedence); }
30
7
  }
package/src/node/body.js CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
+ import { PROOF_RULE_NAME, DEDUCTION_RULE_NAME, SUPPOSITION_RULE_NAME } from "../ruleNames";
6
+
5
7
  export default class BodyNode extends NonTerminalNode {
8
+ getProofNode() {
9
+ const ruleName = PROOF_RULE_NAME,
10
+ proofNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return proofNode;
13
+ }
14
+
15
+ getDeductionNode() {
16
+ const ruleName = DEDUCTION_RULE_NAME,
17
+ deductionNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return deductionNode;
20
+ }
21
+
22
+ getSuppositionNodes() {
23
+ const ruleName = SUPPOSITION_RULE_NAME,
24
+ suppositionNodes = this.getNodesByRuleName(ruleName);
25
+
26
+ return suppositionNodes;
27
+ }
28
+
6
29
  static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
7
30
  }
@@ -2,6 +2,15 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
+ import { STATEMENT_RULE_NAME } from "../ruleNames";
6
+
5
7
  export default class CombinatorNode extends NonTerminalNode {
8
+ getStatementNode() {
9
+ const ruleName = STATEMENT_RULE_NAME,
10
+ statementNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return statementNode;
13
+ }
14
+
6
15
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(CombinatorNode, ruleName, childNodes, opacity, precedence); }
7
16
  }
@@ -2,6 +2,15 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
+ import { TERM_RULE_NAME } from "../ruleNames";
6
+
5
7
  export default class ConstructorNode extends NonTerminalNode {
8
+ getTermNode() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return termNode;
13
+ }
14
+
6
15
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ConstructorNode, ruleName, childNodes, opacity, precedence); }
7
16
  }