occam-verify-cli 1.0.388 → 1.0.404

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 (305) hide show
  1. package/lib/action/verify.js +3 -3
  2. package/lib/assignment/equality.js +2 -2
  3. package/lib/context/file.js +11 -11
  4. package/lib/context/local.js +38 -61
  5. package/lib/context/partial.js +10 -10
  6. package/lib/context/temporary.js +755 -0
  7. package/lib/mixins/statement/verify.js +38 -16
  8. package/lib/mixins/step/unify.js +7 -8
  9. package/lib/node/argument.js +4 -4
  10. package/lib/node/assertion/contained.js +6 -6
  11. package/lib/node/assertion/defined.js +6 -6
  12. package/lib/node/assertion/property.js +6 -6
  13. package/lib/node/assertion/satisfies.js +6 -6
  14. package/lib/node/assertion/subproof.js +6 -6
  15. package/lib/node/assertion/type.js +6 -6
  16. package/lib/node/assertion.js +107 -0
  17. package/lib/node/assumption.js +134 -0
  18. package/lib/node/axiom.js +6 -6
  19. package/lib/node/{topLevelAssertion.js → axiomLemmaTheoremConjecture.js} +12 -12
  20. package/lib/node/body.js +4 -5
  21. package/lib/node/combinator.js +4 -4
  22. package/lib/node/conclusion.js +4 -4
  23. package/lib/node/conjecture.js +6 -6
  24. package/lib/node/constructor.js +4 -4
  25. package/lib/node/declaration/combinator.js +6 -6
  26. package/lib/node/declaration/complexType.js +6 -6
  27. package/lib/node/declaration/constructor.js +6 -6
  28. package/lib/node/declaration/metavariable.js +6 -6
  29. package/lib/node/declaration/property.js +6 -6
  30. package/lib/node/declaration/simpleType.js +6 -6
  31. package/lib/node/declaration/typePrefix.js +6 -6
  32. package/lib/node/declaration/variable.js +6 -6
  33. package/lib/node/declaration.js +6 -22
  34. package/lib/node/deduction.js +4 -4
  35. package/lib/node/derivation.js +4 -4
  36. package/lib/node/document.js +107 -0
  37. package/lib/node/equality.js +4 -4
  38. package/lib/node/error.js +4 -4
  39. package/lib/node/frame.js +25 -14
  40. package/lib/node/header.js +4 -4
  41. package/lib/node/hypothesis.js +4 -4
  42. package/lib/node/judgement.js +8 -8
  43. package/lib/node/label.js +4 -4
  44. package/lib/node/labels.js +4 -4
  45. package/lib/node/lemma.js +6 -6
  46. package/lib/node/metaArgument.js +4 -4
  47. package/lib/node/metaLemma.js +6 -6
  48. package/lib/node/{topLevelMetaAssertion.js → metaLemmaMetaTheorem.js} +12 -12
  49. package/lib/node/metaType.js +4 -4
  50. package/lib/node/metatheorem.js +6 -6
  51. package/lib/node/metavariable.js +4 -4
  52. package/lib/node/nonsense.js +4 -4
  53. package/lib/node/parameter.js +4 -4
  54. package/lib/node/parenthesisedLabel.js +4 -4
  55. package/lib/node/parenthesisedLabels.js +4 -4
  56. package/lib/node/placeholder.js +107 -0
  57. package/lib/node/premise.js +4 -4
  58. package/lib/node/procedureCall.js +4 -4
  59. package/lib/node/procedureReference.js +4 -4
  60. package/lib/node/proof.js +4 -4
  61. package/lib/node/property.js +4 -4
  62. package/lib/node/propertyRelation.js +4 -4
  63. package/lib/node/qualification.js +4 -4
  64. package/lib/node/reference.js +4 -4
  65. package/lib/node/rule.js +4 -4
  66. package/lib/node/section.js +4 -4
  67. package/lib/node/signature.js +4 -4
  68. package/lib/node/statement.js +15 -4
  69. package/lib/node/step.js +4 -4
  70. package/lib/node/subDerivation.js +4 -4
  71. package/lib/node/subproof.js +4 -4
  72. package/lib/node/substitution/frame.js +28 -6
  73. package/lib/node/substitution/statement.js +6 -6
  74. package/lib/node/substitution/term.js +28 -6
  75. package/lib/node/substitution.js +107 -0
  76. package/lib/node/supposition.js +4 -4
  77. package/lib/node/term.js +27 -4
  78. package/lib/node/theorem.js +6 -6
  79. package/lib/node/type.js +4 -4
  80. package/lib/node/typePrefix.js +4 -4
  81. package/lib/node/types.js +4 -4
  82. package/lib/node/variable.js +4 -4
  83. package/lib/nominal/parser.js +3 -3
  84. package/lib/nonTerminalNode.js +222 -0
  85. package/lib/nonTerminalNodeMap.js +5 -3
  86. package/lib/ontology/assertion/contained.js +80 -39
  87. package/lib/ontology/assertion/defined.js +80 -39
  88. package/lib/ontology/assertion/property.js +71 -29
  89. package/lib/ontology/assertion/satisfies.js +73 -25
  90. package/lib/ontology/assertion/subproof.js +95 -41
  91. package/lib/ontology/assertion/type.js +74 -18
  92. package/lib/ontology/assertion.js +66 -0
  93. package/lib/ontology/assumption.js +379 -0
  94. package/lib/ontology/axiom.js +8 -11
  95. package/lib/ontology/combinator/bracketed.js +17 -3
  96. package/lib/ontology/combinator.js +17 -3
  97. package/lib/ontology/conclusion.js +38 -9
  98. package/lib/ontology/constructor/bracketed.js +17 -3
  99. package/lib/ontology/constructor.js +17 -3
  100. package/lib/ontology/declaration/combinator.js +75 -33
  101. package/lib/ontology/declaration/complexType.js +110 -63
  102. package/lib/ontology/declaration/constructor.js +81 -38
  103. package/lib/ontology/declaration/metavariable.js +87 -39
  104. package/lib/ontology/declaration/simpleType.js +95 -48
  105. package/lib/ontology/declaration/typePrefix.js +87 -40
  106. package/lib/ontology/declaration/variable.js +87 -39
  107. package/lib/ontology/declaration.js +13 -313
  108. package/lib/ontology/deduction.js +38 -9
  109. package/lib/ontology/equivalence.js +295 -0
  110. package/lib/ontology/equivalences.js +264 -0
  111. package/lib/ontology/frame.js +83 -51
  112. package/lib/ontology/hypothesis.js +11 -11
  113. package/lib/ontology/judgement.js +8 -8
  114. package/lib/ontology/label.js +5 -6
  115. package/lib/ontology/metavariable.js +14 -15
  116. package/lib/ontology/premise.js +60 -21
  117. package/lib/ontology/procedureCall.js +15 -15
  118. package/lib/ontology/procedureReference.js +1 -1
  119. package/lib/ontology/proof.js +2 -2
  120. package/lib/ontology/reference.js +6 -13
  121. package/lib/ontology/rule.js +69 -71
  122. package/lib/ontology/section.js +2 -2
  123. package/lib/ontology/signature.js +2 -2
  124. package/lib/ontology/statement.js +36 -24
  125. package/lib/ontology/step.js +38 -26
  126. package/lib/ontology/subproof.js +12 -13
  127. package/lib/ontology/substitution/frame.js +69 -21
  128. package/lib/ontology/substitution/reference.js +24 -9
  129. package/lib/ontology/substitution/statement.js +137 -76
  130. package/lib/ontology/substitution/term.js +75 -35
  131. package/lib/ontology/substitution.js +50 -44
  132. package/lib/ontology/substitutions.js +425 -0
  133. package/lib/ontology/supposition.js +69 -29
  134. package/lib/ontology/term.js +35 -37
  135. package/lib/ontology/topLevelAssertion.js +16 -17
  136. package/lib/ontology/topLevelMetaAssertion.js +3 -4
  137. package/lib/ontology/variable.js +9 -14
  138. package/lib/preamble.js +7 -4
  139. package/lib/ruleNames.js +20 -12
  140. package/lib/unifier/intrinsicLevel.js +4 -5
  141. package/lib/unifier/metaLevel.js +24 -24
  142. package/lib/utilities/brackets.js +4 -21
  143. package/lib/utilities/context.js +6 -6
  144. package/lib/utilities/frame.js +18 -0
  145. package/lib/utilities/json.js +24 -1
  146. package/lib/utilities/metavariable.js +18 -0
  147. package/lib/utilities/statement.js +18 -0
  148. package/lib/utilities/substitutions.js +43 -30
  149. package/lib/utilities/unification.js +10 -16
  150. package/lib/utilities/variable.js +18 -0
  151. package/package.json +10 -10
  152. package/src/action/verify.js +2 -2
  153. package/src/assignment/equality.js +1 -1
  154. package/src/context/file.js +13 -11
  155. package/src/context/local.js +40 -65
  156. package/src/context/partial.js +9 -14
  157. package/src/context/temporary.js +463 -0
  158. package/src/mixins/statement/verify.js +60 -23
  159. package/src/mixins/step/unify.js +6 -6
  160. package/src/node/argument.js +1 -1
  161. package/src/node/assertion/contained.js +3 -3
  162. package/src/node/assertion/defined.js +3 -3
  163. package/src/node/assertion/property.js +3 -3
  164. package/src/node/assertion/satisfies.js +3 -3
  165. package/src/node/assertion/subproof.js +3 -3
  166. package/src/node/assertion/type.js +3 -3
  167. package/src/node/assertion.js +7 -0
  168. package/src/node/assumption.js +35 -0
  169. package/src/node/axiom.js +3 -3
  170. package/src/node/{topLevelAssertion.js → axiomLemmaTheoremConjecture.js} +2 -2
  171. package/src/node/body.js +1 -3
  172. package/src/node/combinator.js +1 -1
  173. package/src/node/conclusion.js +1 -1
  174. package/src/node/conjecture.js +3 -3
  175. package/src/node/constructor.js +1 -1
  176. package/src/node/declaration/combinator.js +3 -3
  177. package/src/node/declaration/complexType.js +3 -3
  178. package/src/node/declaration/constructor.js +3 -3
  179. package/src/node/declaration/metavariable.js +3 -3
  180. package/src/node/declaration/property.js +3 -3
  181. package/src/node/declaration/simpleType.js +3 -3
  182. package/src/node/declaration/typePrefix.js +3 -3
  183. package/src/node/declaration/variable.js +3 -3
  184. package/src/node/declaration.js +2 -18
  185. package/src/node/deduction.js +1 -1
  186. package/src/node/derivation.js +1 -1
  187. package/src/node/document.js +7 -0
  188. package/src/node/equality.js +1 -1
  189. package/src/node/error.js +1 -1
  190. package/src/node/frame.js +23 -11
  191. package/src/node/header.js +1 -1
  192. package/src/node/hypothesis.js +1 -1
  193. package/src/node/judgement.js +6 -6
  194. package/src/node/label.js +1 -1
  195. package/src/node/labels.js +1 -1
  196. package/src/node/lemma.js +3 -3
  197. package/src/node/metaArgument.js +1 -1
  198. package/src/node/metaLemma.js +3 -3
  199. package/src/node/{topLevelMetaAssertion.js → metaLemmaMetaTheorem.js} +2 -2
  200. package/src/node/metaType.js +1 -1
  201. package/src/node/metatheorem.js +3 -3
  202. package/src/node/metavariable.js +1 -1
  203. package/src/node/nonsense.js +1 -1
  204. package/src/node/parameter.js +1 -1
  205. package/src/node/parenthesisedLabel.js +1 -1
  206. package/src/node/parenthesisedLabels.js +1 -1
  207. package/src/node/placeholder.js +7 -0
  208. package/src/node/premise.js +1 -1
  209. package/src/node/procedureCall.js +1 -1
  210. package/src/node/procedureReference.js +1 -1
  211. package/src/node/proof.js +1 -1
  212. package/src/node/property.js +1 -1
  213. package/src/node/propertyRelation.js +1 -1
  214. package/src/node/qualification.js +1 -1
  215. package/src/node/reference.js +1 -1
  216. package/src/node/rule.js +2 -2
  217. package/src/node/section.js +1 -1
  218. package/src/node/signature.js +1 -1
  219. package/src/node/statement.js +13 -1
  220. package/src/node/step.js +1 -1
  221. package/src/node/subDerivation.js +1 -1
  222. package/src/node/subproof.js +1 -1
  223. package/src/node/substitution/frame.js +29 -3
  224. package/src/node/substitution/statement.js +3 -3
  225. package/src/node/substitution/term.js +29 -3
  226. package/src/node/substitution.js +7 -0
  227. package/src/node/supposition.js +1 -1
  228. package/src/node/term.js +27 -1
  229. package/src/node/theorem.js +3 -3
  230. package/src/node/type.js +1 -1
  231. package/src/node/typePrefix.js +1 -1
  232. package/src/node/types.js +1 -1
  233. package/src/node/variable.js +1 -1
  234. package/src/nominal/parser.js +2 -2
  235. package/src/{node/nonTerminal.js → nonTerminalNode.js} +31 -25
  236. package/src/nonTerminalNodeMap.js +10 -5
  237. package/src/ontology/assertion/contained.js +21 -32
  238. package/src/ontology/assertion/defined.js +20 -31
  239. package/src/ontology/assertion/property.js +7 -20
  240. package/src/ontology/assertion/satisfies.js +8 -16
  241. package/src/ontology/assertion/subproof.js +36 -42
  242. package/src/ontology/assertion/type.js +10 -11
  243. package/src/ontology/assertion.js +23 -0
  244. package/src/ontology/assumption.js +385 -0
  245. package/src/ontology/axiom.js +7 -16
  246. package/src/ontology/combinator/bracketed.js +2 -0
  247. package/src/ontology/combinator.js +2 -0
  248. package/src/ontology/conclusion.js +51 -10
  249. package/src/ontology/constructor/bracketed.js +2 -0
  250. package/src/ontology/constructor.js +2 -0
  251. package/src/ontology/declaration/combinator.js +15 -24
  252. package/src/ontology/declaration/complexType.js +57 -53
  253. package/src/ontology/declaration/constructor.js +25 -31
  254. package/src/ontology/declaration/metavariable.js +25 -30
  255. package/src/ontology/declaration/simpleType.js +34 -38
  256. package/src/ontology/declaration/typePrefix.js +23 -31
  257. package/src/ontology/declaration/variable.js +26 -31
  258. package/src/ontology/declaration.js +8 -339
  259. package/src/ontology/deduction.js +51 -10
  260. package/src/{equivalence.js → ontology/equivalence.js} +4 -3
  261. package/src/{equivalences.js → ontology/equivalences.js} +14 -12
  262. package/src/ontology/frame.js +93 -66
  263. package/src/ontology/hypothesis.js +8 -8
  264. package/src/ontology/judgement.js +8 -8
  265. package/src/ontology/label.js +2 -7
  266. package/src/ontology/metavariable.js +14 -17
  267. package/src/ontology/premise.js +82 -25
  268. package/src/ontology/procedureCall.js +14 -14
  269. package/src/ontology/procedureReference.js +2 -2
  270. package/src/ontology/proof.js +1 -1
  271. package/src/ontology/reference.js +5 -9
  272. package/src/ontology/rule.js +79 -82
  273. package/src/ontology/section.js +1 -1
  274. package/src/ontology/signature.js +1 -1
  275. package/src/ontology/statement.js +37 -27
  276. package/src/ontology/step.js +45 -28
  277. package/src/ontology/subproof.js +10 -10
  278. package/src/ontology/substitution/frame.js +72 -26
  279. package/src/ontology/substitution/reference.js +8 -6
  280. package/src/ontology/substitution/statement.js +95 -76
  281. package/src/ontology/substitution/term.js +81 -41
  282. package/src/ontology/substitution.js +35 -34
  283. package/src/{substitutions.js → ontology/substitutions.js} +29 -28
  284. package/src/ontology/supposition.js +88 -28
  285. package/src/ontology/term.js +31 -43
  286. package/src/ontology/topLevelAssertion.js +16 -18
  287. package/src/ontology/topLevelMetaAssertion.js +3 -3
  288. package/src/ontology/variable.js +10 -17
  289. package/src/preamble.js +6 -3
  290. package/src/ruleNames.js +10 -8
  291. package/src/unifier/intrinsicLevel.js +5 -6
  292. package/src/unifier/metaLevel.js +32 -29
  293. package/src/utilities/brackets.js +3 -29
  294. package/src/utilities/context.js +5 -5
  295. package/src/utilities/frame.js +13 -0
  296. package/src/utilities/json.js +28 -0
  297. package/src/utilities/metavariable.js +13 -0
  298. package/src/utilities/statement.js +13 -0
  299. package/src/utilities/substitutions.js +59 -33
  300. package/src/utilities/unification.js +8 -24
  301. package/src/utilities/variable.js +13 -0
  302. package/lib/equivalence.js +0 -294
  303. package/lib/equivalences.js +0 -263
  304. package/lib/node/nonTerminal.js +0 -218
  305. package/lib/substitutions.js +0 -424
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
3
+ import MetaLemmaMetaTheoremNode from "../node/metaLemmaMetaTheorem";
4
4
 
5
5
  import { META_LEMMA_BODY_RULE_NAME, META_LEMMA_HEADER_RULE_NAME } from "../ruleNames";
6
6
 
7
- export default class MetaLemmaNode extends TopLevelMetaAssertionNode {
7
+ export default class MetaLemmaNode extends MetaLemmaMetaTheoremNode {
8
8
  static bodyRuleName = META_LEMMA_BODY_RULE_NAME;
9
9
 
10
10
  static headerRuleName = META_LEMMA_HEADER_RULE_NAME;
11
11
 
12
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return MetaLemmaMetaTheoremNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
13
13
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- export default class TopLevelMetaAssertionNode extends NonTerminalNode {
5
+ export default class MetaLemmaMetaTheoremNode extends NonTerminalNode {
6
6
  getBodyNode() {
7
7
  const { bodyRuleName } = this.constructor,
8
8
  ruleName = bodyRuleName, ///
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class MetaTypeNode extends NonTerminalNode {
6
6
  getMetaTypeName() {
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
3
+ import MetaLemmaMetaTheoremNode from "../node/metaLemmaMetaTheorem";
4
4
 
5
5
  import { METATHEOREM_BODY_RULE_NAME, METATHEOREM_HEADER_RULE_NAME } from "../ruleNames";
6
6
 
7
- export default class MetatheoremNode extends TopLevelMetaAssertionNode {
7
+ export default class MetatheoremNode extends MetaLemmaMetaTheoremNode {
8
8
  static bodyRuleName = METATHEOREM_BODY_RULE_NAME;
9
9
 
10
10
  static headerRuleName = METATHEOREM_HEADER_RULE_NAME;
11
11
 
12
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return MetaLemmaMetaTheoremNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
13
13
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class NonsenseNode extends NonTerminalNode {
6
6
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(NonsenseNode, ruleName, childNodes, opacity, precedence); }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class ParameterNode extends NonTerminalNode {
6
6
  getParameterName() {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { LABEL_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { LABELS_RULE_NAME } from "../ruleNames";
6
6
 
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../nonTerminalNode";
4
+
5
+ export default class PlaceholderNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PlaceholderNode, ruleName, childNodes, opacity, precedence); }
7
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { NONSENSE_RULE_NAME, STATEMENT_RULE_NAME, PROCEDURE_CALL_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { PARAMETER_RULE_NAME, PROCEDURE_REFERENCE_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class ProcedureReferenceNode extends NonTerminalNode {
6
6
  getProcedureName() {
package/src/node/proof.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { DERIVATION_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { SINGLE_SPACE } from "../constants";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { TERM_RULE_NAME, PROPERTY_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { REFERENCE_RULE_NAME, SATISFIES_ASSERTION_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { METAVARIABLE_RULE_NAME } from "../ruleNames";
6
6
 
package/src/node/rule.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- import {RULE_BODY_RULE_NAME, RULE_HEADER_RULE_NAME} from "../ruleNames";
5
+ import { RULE_BODY_RULE_NAME, RULE_HEADER_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class RuleNode extends NonTerminalNode {
8
8
  getRuleBodyNode() {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { AXIOM_RULE_NAME, LEMMA_RULE_NAME, THEOREM_RULE_NAME, CONJECTURE_RULE_NAME, HYPOTHESIS_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { TERM_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { TERM_RULE_NAME,
6
6
  FRAME_RULE_NAME,
@@ -19,6 +19,18 @@ import { TERM_RULE_NAME,
19
19
  STATEMENT_SUBSTITUTION_RULE_NAME } from "../ruleNames";
20
20
 
21
21
  export default class StatementNode extends NonTerminalNode {
22
+ isSimple() {
23
+ let simple = false;
24
+
25
+ const metavariableNode = this.getMetavariableNode();
26
+
27
+ if (metavariableNode !== null) {
28
+ simple = true;
29
+ }
30
+
31
+ return simple;
32
+ }
33
+
22
34
  getTermNodes() {
23
35
  const ruleName = TERM_RULE_NAME,
24
36
  termNodes = this.getDescendantNodesByRuleName(ruleName);
package/src/node/step.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { NONSENSE_RULE_NAME, STATEMENT_RULE_NAME, QUALIFICATION_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { STEP_RULE_NAME, SUBPROOF_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { SUPPOSITION_RULE_NAME, SUB_DERIVATION_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../../node/nonTerminal";
3
+ import SubstitutionNode from "../../node/substitution";
4
4
 
5
5
  import { FRAME_RULE_NAME } from "../../ruleNames";
6
6
 
7
- export default class FrameSubstitutionNode extends NonTerminalNode {
7
+ export default class FrameSubstitutionNode extends SubstitutionNode {
8
8
  getLastFrameNode() {
9
9
  const ruleName = FRAME_RULE_NAME,
10
10
  lastFrameNode = this.getLastNodeByRuleName(ruleName);
@@ -19,5 +19,31 @@ export default class FrameSubstitutionNode extends NonTerminalNode {
19
19
  return firstFrameNode;
20
20
  }
21
21
 
22
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
22
+ getLastMetavariableNode() {
23
+ let lastMetavariableNode = null;
24
+
25
+ const lastFrameNode = this.getLastFrameNode(),
26
+ singularMetavariableNode = lastFrameNode.getSingularMetavariableNode();
27
+
28
+ if (singularMetavariableNode !== null) {
29
+ lastMetavariableNode = singularMetavariableNode; ///
30
+ }
31
+
32
+ return lastMetavariableNode;
33
+ }
34
+
35
+ getFirstMetavariableNode() {
36
+ let firstMetavariableNode = null;
37
+
38
+ const firstFrameNode = this.getFirstFrameNode(),
39
+ singularMetavariableNode = firstFrameNode.getSingularMetavariableNode();
40
+
41
+ if (singularMetavariableNode !== null) {
42
+ firstMetavariableNode = singularMetavariableNode; ///
43
+ }
44
+
45
+ return firstMetavariableNode;
46
+ }
47
+
48
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
49
  }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../../node/nonTerminal";
3
+ import SubstitutionNode from "../../node/substitution";
4
4
 
5
5
  import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
6
 
7
- export default class StatementSubstitutionNode extends NonTerminalNode {
7
+ export default class StatementSubstitutionNode extends SubstitutionNode {
8
8
  getLastStatementNode() {
9
9
  const ruleName = STATEMENT_RULE_NAME,
10
10
  lastStatementNode = this.getLastNodeByRuleName(ruleName);
@@ -19,5 +19,5 @@ export default class StatementSubstitutionNode extends NonTerminalNode {
19
19
  return firstStatementNode;
20
20
  }
21
21
 
22
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementSubstitutionNode, ruleName, childNodes, opacity, precedence); }
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
23
  }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../../node/nonTerminal";
3
+ import SubstitutionNode from "../../node/substitution";
4
4
 
5
5
  import { TERM_RULE_NAME } from "../../ruleNames";
6
6
 
7
- export default class TermSubstitutionNode extends NonTerminalNode {
7
+ export default class TermSubstitutionNode extends SubstitutionNode {
8
8
  getLastTermNode() {
9
9
  const ruleName = TERM_RULE_NAME,
10
10
  lastTermNode = this.getLastNodeByRuleName(ruleName);
@@ -19,5 +19,31 @@ export default class TermSubstitutionNode extends NonTerminalNode {
19
19
  return firstTermNode;
20
20
  }
21
21
 
22
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermSubstitutionNode, ruleName, childNodes, opacity, precedence); }
22
+ getLastVariableNode() {
23
+ let lastVariableNode = null;
24
+
25
+ const lastTermNode = this.getLastTermNode(),
26
+ singularVariableNode = lastTermNode.getSingularVariableNode();
27
+
28
+ if (singularVariableNode !== null) {
29
+ lastVariableNode = singularVariableNode; ///
30
+ }
31
+
32
+ return lastVariableNode;
33
+ }
34
+
35
+ getFirstVariableNode() {
36
+ let firstVariableNode = null;
37
+
38
+ const firstTermNode = this.getFirstTermNode(),
39
+ singularVariableNode = firstTermNode.getSingularVariableNode();
40
+
41
+ if (singularVariableNode !== null) {
42
+ firstVariableNode = singularVariableNode; ///
43
+ }
44
+
45
+ return firstVariableNode;
46
+ }
47
+
48
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(TermSubstitutionNode, ruleName, childNodes, opacity, precedence); }
23
49
  }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../nonTerminalNode";
4
+
5
+ export default class SubstitutionNode extends NonTerminalNode {
6
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
7
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { NONSENSE_RULE_NAME, STATEMENT_RULE_NAME, PROCEDURE_CALL_RULE_NAME } from "../ruleNames";
6
6
 
package/src/node/term.js CHANGED
@@ -1,10 +1,22 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { ARGUMENT_RULE_NAME, VARIABLE_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class TermNode extends NonTerminalNode {
8
+ isSimple() {
9
+ let simple = false;
10
+
11
+ const singularVariableNode = this.getSingularVariableNode();
12
+
13
+ if (singularVariableNode !== null) {
14
+ simple = true;
15
+ }
16
+
17
+ return simple;
18
+ }
19
+
8
20
  getVariableNodes() {
9
21
  const ruleName = VARIABLE_RULE_NAME,
10
22
  variableNodes = this.getNodesByRuleName(ruleName);
@@ -38,5 +50,19 @@ export default class TermNode extends NonTerminalNode {
38
50
  return singularVariableNode;
39
51
  }
40
52
 
53
+ getSingularVariableIdentifier() {
54
+ let singularVariableIdentifier = null;
55
+
56
+ const singularVariableNode = this.getSingularVariableNode();
57
+
58
+ if (singularVariableNode !== null) {
59
+ const variableIdentifier = singularVariableNode.getVariableIdentifier();
60
+
61
+ singularVariableIdentifier = variableIdentifier; ///
62
+ }
63
+
64
+ return singularVariableIdentifier;
65
+ }
66
+
41
67
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
42
68
  }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import TopLevelAssertionNode from "../node/topLevelAssertion";
3
+ import AxiomLemmaTheoremConjectureNode from "../node/axiomLemmaTheoremConjecture";
4
4
 
5
5
  import { THEOREM_BODY_RULE_NAME, THEOREM_HEADER_RULE_NAME } from "../ruleNames";
6
6
 
7
- export default class TheoremNode extends TopLevelAssertionNode {
7
+ export default class TheoremNode extends AxiomLemmaTheoremConjectureNode {
8
8
  static bodyRuleName = THEOREM_BODY_RULE_NAME;
9
9
 
10
10
  static headerRuleName = THEOREM_HEADER_RULE_NAME;
11
11
 
12
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(TheoremNode, ruleName, childNodes, opacity, precedence); }
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return AxiomLemmaTheoremConjectureNode.fromRuleNameChildNodesOpacityAndPrecedence(TheoremNode, ruleName, childNodes, opacity, precedence); }
13
13
  }
package/src/node/type.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class TypeNode extends NonTerminalNode {
6
6
  isPrefixed() {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class TypePrefixNode extends NonTerminalNode {
6
6
  getTypePrefixName() {
package/src/node/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  import { TYPE_RULE_NAME } from "../ruleNames";
6
6
 
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../node/nonTerminal";
3
+ import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
5
  export default class VariableNode extends NonTerminalNode {
6
6
  getVariableIdentifier() {
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  import { NominalParser as NominalParserBase } from "occam-grammars";
4
- import { NonTerminalNode as defaultNonTerminalNode } from "occam-parsers";
5
4
 
5
+ import NonTerminalNode from "../nonTerminalNode";
6
6
  import NonTerminalNodeMap from "../nonTerminalNodeMap";
7
7
 
8
8
  export default class NominalParser extends NominalParserBase {
9
9
  static NonTerminalNodeMap = NonTerminalNodeMap;
10
10
 
11
- static defaultNonTerminalNode = defaultNonTerminalNode;
11
+ static defaultNonTerminalNode = NonTerminalNode;
12
12
  }
@@ -4,7 +4,7 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import { NonTerminalNode as NonTerminalNodeBase } from "occam-parsers";
6
6
 
7
- const { first, forwardsFind, backwardsFind } = arrayUtilities;
7
+ const { first } = arrayUtilities;
8
8
 
9
9
  export default class NonTerminalNode extends NonTerminalNodeBase {
10
10
  getNodeByRuleName(...ruleNames) {
@@ -44,39 +44,45 @@ export default class NonTerminalNode extends NonTerminalNodeBase {
44
44
  }
45
45
 
46
46
  getLastNodeByRuleName(...ruleNames) {
47
- const childNodes = this.getChildNodes(),
48
- lastNode = backwardsFind(childNodes, (childNode) => {
49
- const childNodeNonTerminalNode = childNode.isNonTerminalNode();
47
+ let lastNode = null;
50
48
 
51
- if (childNodeNonTerminalNode) {
52
- const nonTerminalNode = childNode, ///
53
- ruleName = nonTerminalNode.getRuleName(),
54
- ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
49
+ this.backwardsSomeChildNode((childNode) => {
50
+ const childNodeNonTerminalNode = childNode.isNonTerminalNode();
55
51
 
56
- if (ruleNamesIncludesRuleName) {
57
- return true;
58
- }
59
- }
60
- }) || null;
52
+ if (childNodeNonTerminalNode) {
53
+ const nonTerminalNode = childNode, ///
54
+ ruleName = nonTerminalNode.getRuleName(),
55
+ ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
56
+
57
+ if (ruleNamesIncludesRuleName) {
58
+ lastNode = childNode; ///
59
+
60
+ return true;
61
+ }
62
+ }
63
+ });
61
64
 
62
65
  return lastNode;
63
66
  }
64
67
 
65
68
  getFirstNodeByRuleName(...ruleNames) {
66
- const childNodes = this.getChildNodes(),
67
- firstNode = forwardsFind(childNodes, (childNode) => {
68
- const childNodeNonTerminalNode = childNode.isNonTerminalNode();
69
+ let firstNode = null;
69
70
 
70
- if (childNodeNonTerminalNode) {
71
- const nonTerminalNode = childNode, ///
72
- ruleName = nonTerminalNode.getRuleName(),
73
- ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
71
+ this.forwardsSomeChildNode((childNode) => {
72
+ const childNodeNonTerminalNode = childNode.isNonTerminalNode();
74
73
 
75
- if (ruleNamesIncludesRuleName) {
76
- return true;
77
- }
78
- }
79
- }) || null;
74
+ if (childNodeNonTerminalNode) {
75
+ const nonTerminalNode = childNode, ///
76
+ ruleName = nonTerminalNode.getRuleName(),
77
+ ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
78
+
79
+ if (ruleNamesIncludesRuleName) {
80
+ firstNode = childNode; ///
81
+
82
+ return true;
83
+ }
84
+ }
85
+ });
80
86
 
81
87
  return firstNode;
82
88
  }