occam-verify-cli 1.0.396 → 1.0.405

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 (251) hide show
  1. package/lib/assignment/equality.js +2 -2
  2. package/lib/context/file.js +4 -5
  3. package/lib/context/local.js +17 -6
  4. package/lib/context/partial.js +10 -10
  5. package/lib/context/temporary.js +102 -52
  6. package/lib/mixins/step/unify.js +5 -6
  7. package/lib/node/argument.js +4 -4
  8. package/lib/node/assertion/contained.js +6 -6
  9. package/lib/node/assertion/defined.js +6 -6
  10. package/lib/node/assertion/property.js +6 -6
  11. package/lib/node/assertion/satisfies.js +6 -6
  12. package/lib/node/assertion/subproof.js +6 -6
  13. package/lib/node/assertion/type.js +6 -6
  14. package/lib/node/assertion.js +107 -0
  15. package/lib/node/assumption.js +134 -0
  16. package/lib/node/axiom.js +6 -6
  17. package/lib/node/{topLevelAssertion.js → axiomLemmaTheoremConjecture.js} +12 -12
  18. package/lib/node/body.js +4 -5
  19. package/lib/node/combinator.js +4 -4
  20. package/lib/node/conclusion.js +4 -4
  21. package/lib/node/conjecture.js +6 -6
  22. package/lib/node/constructor.js +4 -4
  23. package/lib/node/declaration/combinator.js +6 -6
  24. package/lib/node/declaration/complexType.js +6 -6
  25. package/lib/node/declaration/constructor.js +6 -6
  26. package/lib/node/declaration/metavariable.js +6 -6
  27. package/lib/node/declaration/property.js +6 -6
  28. package/lib/node/declaration/simpleType.js +6 -6
  29. package/lib/node/declaration/typePrefix.js +6 -6
  30. package/lib/node/declaration/variable.js +6 -6
  31. package/lib/node/declaration.js +6 -22
  32. package/lib/node/deduction.js +4 -4
  33. package/lib/node/derivation.js +4 -4
  34. package/lib/node/document.js +107 -0
  35. package/lib/node/equality.js +4 -4
  36. package/lib/node/error.js +4 -4
  37. package/lib/node/frame.js +25 -14
  38. package/lib/node/header.js +4 -4
  39. package/lib/node/hypothesis.js +4 -4
  40. package/lib/node/judgement.js +8 -8
  41. package/lib/node/label.js +4 -4
  42. package/lib/node/labels.js +4 -4
  43. package/lib/node/lemma.js +6 -6
  44. package/lib/node/metaArgument.js +4 -4
  45. package/lib/node/metaLemma.js +6 -6
  46. package/lib/node/{topLevelMetaAssertion.js → metaLemmaMetaTheorem.js} +12 -12
  47. package/lib/node/metaType.js +4 -4
  48. package/lib/node/metatheorem.js +6 -6
  49. package/lib/node/metavariable.js +4 -4
  50. package/lib/node/nonsense.js +4 -4
  51. package/lib/node/parameter.js +4 -4
  52. package/lib/node/parenthesisedLabel.js +4 -4
  53. package/lib/node/parenthesisedLabels.js +4 -4
  54. package/lib/node/placeholder.js +107 -0
  55. package/lib/node/premise.js +4 -4
  56. package/lib/node/procedureCall.js +4 -4
  57. package/lib/node/procedureReference.js +4 -4
  58. package/lib/node/proof.js +4 -4
  59. package/lib/node/property.js +4 -4
  60. package/lib/node/propertyRelation.js +4 -4
  61. package/lib/node/qualification.js +4 -4
  62. package/lib/node/reference.js +4 -4
  63. package/lib/node/rule.js +4 -4
  64. package/lib/node/section.js +4 -4
  65. package/lib/node/signature.js +4 -4
  66. package/lib/node/statement.js +15 -4
  67. package/lib/node/step.js +4 -4
  68. package/lib/node/subDerivation.js +4 -4
  69. package/lib/node/subproof.js +4 -4
  70. package/lib/node/substitution/frame.js +6 -6
  71. package/lib/node/substitution/statement.js +6 -6
  72. package/lib/node/substitution/term.js +6 -6
  73. package/lib/node/substitution.js +107 -0
  74. package/lib/node/supposition.js +4 -4
  75. package/lib/node/term.js +27 -4
  76. package/lib/node/theorem.js +6 -6
  77. package/lib/node/type.js +4 -4
  78. package/lib/node/typePrefix.js +4 -4
  79. package/lib/node/types.js +4 -4
  80. package/lib/node/variable.js +4 -4
  81. package/lib/nominal/parser.js +3 -3
  82. package/lib/nonTerminalNode.js +222 -0
  83. package/lib/nonTerminalNodeMap.js +5 -3
  84. package/lib/ontology/assertion/contained.js +8 -9
  85. package/lib/ontology/assertion/defined.js +9 -10
  86. package/lib/ontology/assertion/satisfies.js +4 -4
  87. package/lib/ontology/assumption.js +379 -0
  88. package/lib/ontology/declaration/combinator.js +75 -33
  89. package/lib/ontology/declaration/complexType.js +110 -63
  90. package/lib/ontology/declaration/constructor.js +81 -38
  91. package/lib/ontology/declaration/metavariable.js +87 -39
  92. package/lib/ontology/declaration/simpleType.js +95 -48
  93. package/lib/ontology/declaration/typePrefix.js +87 -40
  94. package/lib/ontology/declaration/variable.js +87 -39
  95. package/lib/ontology/declaration.js +13 -338
  96. package/lib/ontology/equivalence.js +295 -0
  97. package/lib/ontology/equivalences.js +264 -0
  98. package/lib/ontology/frame.js +49 -54
  99. package/lib/ontology/judgement.js +8 -8
  100. package/lib/ontology/metavariable.js +4 -4
  101. package/lib/ontology/premise.js +14 -5
  102. package/lib/ontology/reference.js +3 -9
  103. package/lib/ontology/rule.js +3 -4
  104. package/lib/ontology/statement.js +28 -24
  105. package/lib/ontology/step.js +2 -3
  106. package/lib/ontology/subproof.js +2 -3
  107. package/lib/ontology/substitution/statement.js +77 -36
  108. package/lib/ontology/substitution/term.js +14 -34
  109. package/lib/ontology/substitution.js +18 -19
  110. package/lib/ontology/substitutions.js +425 -0
  111. package/lib/ontology/supposition.js +14 -5
  112. package/lib/ontology/term.js +33 -36
  113. package/lib/ontology/topLevelAssertion.js +2 -3
  114. package/lib/ontology/topLevelMetaAssertion.js +2 -3
  115. package/lib/ontology/variable.js +1 -34
  116. package/lib/preamble.js +7 -4
  117. package/lib/ruleNames.js +20 -12
  118. package/lib/unifier/intrinsicLevel.js +4 -12
  119. package/lib/unifier/metaLevel.js +14 -22
  120. package/lib/utilities/frame.js +18 -0
  121. package/lib/utilities/statement.js +18 -0
  122. package/lib/utilities/substitutions.js +43 -30
  123. package/lib/utilities/variable.js +5 -17
  124. package/package.json +10 -10
  125. package/src/assignment/equality.js +1 -1
  126. package/src/context/file.js +5 -4
  127. package/src/context/local.js +28 -5
  128. package/src/context/partial.js +9 -14
  129. package/src/context/temporary.js +120 -51
  130. package/src/mixins/step/unify.js +4 -4
  131. package/src/node/argument.js +1 -1
  132. package/src/node/assertion/contained.js +3 -3
  133. package/src/node/assertion/defined.js +3 -3
  134. package/src/node/assertion/property.js +3 -3
  135. package/src/node/assertion/satisfies.js +3 -3
  136. package/src/node/assertion/subproof.js +3 -3
  137. package/src/node/assertion/type.js +3 -3
  138. package/src/node/assertion.js +7 -0
  139. package/src/node/assumption.js +35 -0
  140. package/src/node/axiom.js +3 -3
  141. package/src/node/{topLevelAssertion.js → axiomLemmaTheoremConjecture.js} +2 -2
  142. package/src/node/body.js +1 -3
  143. package/src/node/combinator.js +1 -1
  144. package/src/node/conclusion.js +1 -1
  145. package/src/node/conjecture.js +3 -3
  146. package/src/node/constructor.js +1 -1
  147. package/src/node/declaration/combinator.js +3 -3
  148. package/src/node/declaration/complexType.js +3 -3
  149. package/src/node/declaration/constructor.js +3 -3
  150. package/src/node/declaration/metavariable.js +3 -3
  151. package/src/node/declaration/property.js +3 -3
  152. package/src/node/declaration/simpleType.js +3 -3
  153. package/src/node/declaration/typePrefix.js +3 -3
  154. package/src/node/declaration/variable.js +3 -3
  155. package/src/node/declaration.js +2 -18
  156. package/src/node/deduction.js +1 -1
  157. package/src/node/derivation.js +1 -1
  158. package/src/node/document.js +7 -0
  159. package/src/node/equality.js +1 -1
  160. package/src/node/error.js +1 -1
  161. package/src/node/frame.js +23 -11
  162. package/src/node/header.js +1 -1
  163. package/src/node/hypothesis.js +1 -1
  164. package/src/node/judgement.js +6 -6
  165. package/src/node/label.js +1 -1
  166. package/src/node/labels.js +1 -1
  167. package/src/node/lemma.js +3 -3
  168. package/src/node/metaArgument.js +1 -1
  169. package/src/node/metaLemma.js +3 -3
  170. package/src/node/{topLevelMetaAssertion.js → metaLemmaMetaTheorem.js} +2 -2
  171. package/src/node/metaType.js +1 -1
  172. package/src/node/metatheorem.js +3 -3
  173. package/src/node/metavariable.js +1 -1
  174. package/src/node/nonsense.js +1 -1
  175. package/src/node/parameter.js +1 -1
  176. package/src/node/parenthesisedLabel.js +1 -1
  177. package/src/node/parenthesisedLabels.js +1 -1
  178. package/src/node/placeholder.js +7 -0
  179. package/src/node/premise.js +1 -1
  180. package/src/node/procedureCall.js +1 -1
  181. package/src/node/procedureReference.js +1 -1
  182. package/src/node/proof.js +1 -1
  183. package/src/node/property.js +1 -1
  184. package/src/node/propertyRelation.js +1 -1
  185. package/src/node/qualification.js +1 -1
  186. package/src/node/reference.js +1 -1
  187. package/src/node/rule.js +2 -2
  188. package/src/node/section.js +1 -1
  189. package/src/node/signature.js +1 -1
  190. package/src/node/statement.js +13 -1
  191. package/src/node/step.js +1 -1
  192. package/src/node/subDerivation.js +1 -1
  193. package/src/node/subproof.js +1 -1
  194. package/src/node/substitution/frame.js +3 -3
  195. package/src/node/substitution/statement.js +3 -3
  196. package/src/node/substitution/term.js +3 -3
  197. package/src/node/substitution.js +7 -0
  198. package/src/node/supposition.js +1 -1
  199. package/src/node/term.js +27 -1
  200. package/src/node/theorem.js +3 -3
  201. package/src/node/type.js +1 -1
  202. package/src/node/typePrefix.js +1 -1
  203. package/src/node/types.js +1 -1
  204. package/src/node/variable.js +1 -1
  205. package/src/nominal/parser.js +2 -2
  206. package/src/{node/nonTerminal.js → nonTerminalNode.js} +31 -25
  207. package/src/nonTerminalNodeMap.js +10 -5
  208. package/src/ontology/assertion/contained.js +14 -14
  209. package/src/ontology/assertion/defined.js +13 -13
  210. package/src/ontology/assertion/satisfies.js +2 -1
  211. package/src/ontology/assumption.js +385 -0
  212. package/src/ontology/declaration/combinator.js +15 -24
  213. package/src/ontology/declaration/complexType.js +57 -53
  214. package/src/ontology/declaration/constructor.js +25 -31
  215. package/src/ontology/declaration/metavariable.js +25 -30
  216. package/src/ontology/declaration/simpleType.js +34 -38
  217. package/src/ontology/declaration/typePrefix.js +23 -31
  218. package/src/ontology/declaration/variable.js +26 -31
  219. package/src/ontology/declaration.js +8 -372
  220. package/src/{equivalence.js → ontology/equivalence.js} +4 -3
  221. package/src/{equivalences.js → ontology/equivalences.js} +14 -12
  222. package/src/ontology/frame.js +53 -63
  223. package/src/ontology/judgement.js +8 -8
  224. package/src/ontology/metavariable.js +2 -2
  225. package/src/ontology/premise.js +18 -4
  226. package/src/ontology/reference.js +4 -3
  227. package/src/ontology/rule.js +4 -3
  228. package/src/ontology/statement.js +31 -27
  229. package/src/ontology/step.js +2 -2
  230. package/src/ontology/subproof.js +2 -2
  231. package/src/ontology/substitution/statement.js +56 -53
  232. package/src/ontology/substitution/term.js +9 -35
  233. package/src/ontology/substitution.js +11 -15
  234. package/src/{substitutions.js → ontology/substitutions.js} +4 -3
  235. package/src/ontology/supposition.js +18 -4
  236. package/src/ontology/term.js +27 -39
  237. package/src/ontology/topLevelAssertion.js +2 -2
  238. package/src/ontology/topLevelMetaAssertion.js +2 -2
  239. package/src/ontology/variable.js +0 -54
  240. package/src/preamble.js +6 -3
  241. package/src/ruleNames.js +10 -8
  242. package/src/unifier/intrinsicLevel.js +3 -14
  243. package/src/unifier/metaLevel.js +14 -25
  244. package/src/utilities/frame.js +13 -0
  245. package/src/utilities/statement.js +13 -0
  246. package/src/utilities/substitutions.js +59 -31
  247. package/src/utilities/variable.js +1 -10
  248. package/lib/equivalence.js +0 -294
  249. package/lib/equivalences.js +0 -263
  250. package/lib/node/nonTerminal.js +0 -218
  251. package/lib/substitutions.js +0 -424
@@ -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);
@@ -45,5 +45,5 @@ export default class FrameSubstitutionNode extends NonTerminalNode {
45
45
  return firstMetavariableNode;
46
46
  }
47
47
 
48
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
48
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
49
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);
@@ -45,5 +45,5 @@ export default class TermSubstitutionNode extends NonTerminalNode {
45
45
  return firstVariableNode;
46
46
  }
47
47
 
48
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermSubstitutionNode, ruleName, childNodes, opacity, precedence); }
48
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(TermSubstitutionNode, ruleName, childNodes, opacity, precedence); }
49
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
  }
@@ -23,6 +23,7 @@ import MetaTypeNode from "./node/metaType";
23
23
  import EqualityNode from "./node/equality";
24
24
  import VariableNode from "./node/variable";
25
25
  import RuleBodyNode from "./node/body/rule";
26
+ import DocumentNode from "./node/document";
26
27
  import StatementNode from "./node/statement";
27
28
  import ReferenceNode from "./node/reference";
28
29
  import DeductionNode from "./node/deduction";
@@ -38,10 +39,11 @@ import ConclusionNode from "./node/conclusion";
38
39
  import ConjectureNode from "./node/conjecture";
39
40
  import HypothesisNode from "./node/hypothesis";
40
41
  import TypePrefixNode from "./node/typePrefix";
42
+ import AssumptionNode from "./node/assumption";
41
43
  import RuleHeaderNode from "./node/header/rule";
42
44
  import SuppositionNode from "./node/supposition";
45
+ import PlaceholderNode from "./node/placeholder";
43
46
  import ConstructorNode from "./node/constructor";
44
- import DeclarationNode from "./node/declaration";
45
47
  import MetatheoremNode from "./node/metatheorem";
46
48
  import TheoremBodyNode from "./node/body/theorem";
47
49
  import AxiomHeaderNode from "./node/header/axiom";
@@ -102,6 +104,7 @@ import {
102
104
  PROPERTY_RULE_NAME,
103
105
  EQUALITY_RULE_NAME,
104
106
  VARIABLE_RULE_NAME,
107
+ DOCUMENT_RULE_NAME,
105
108
  META_TYPE_RULE_NAME,
106
109
  SIGNATURE_RULE_NAME,
107
110
  DEDUCTION_RULE_NAME,
@@ -118,11 +121,12 @@ import {
118
121
  HYPOTHESIS_RULE_NAME,
119
122
  AXIOM_BODY_RULE_NAME,
120
123
  LEMMA_BODY_RULE_NAME,
124
+ ASSUMPTION_RULE_NAME,
125
+ PLACEHOLDER_RULE_NAME,
121
126
  TYPE_PREFIX_RULE_NAME,
122
127
  SUPPOSITION_RULE_NAME,
123
128
  RULE_HEADER_RULE_NAME,
124
129
  CONSTRUCTOR_RULE_NAME,
125
- DECLARATION_RULE_NAME,
126
130
  METATHEOREM_RULE_NAME,
127
131
  AXIOM_HEADER_RULE_NAME,
128
132
  LEMMA_HEADER_RULE_NAME,
@@ -159,8 +163,7 @@ import {
159
163
  CONSTRUCTOR_DECLARATION_RULE_NAME,
160
164
  TYPE_PREFIX_DECLARATION_RULE_NAME,
161
165
  COMPLEX_TYPE_DECLARATION_RULE_NAME,
162
- METAVARIABLE_DECLARATION_RULE_NAME
163
- } from "./ruleNames";
166
+ METAVARIABLE_DECLARATION_RULE_NAME } from "./ruleNames";
164
167
 
165
168
  const NonTerminalNodeMap = {
166
169
  [RULE_RULE_NAME]: RuleNode,
@@ -184,6 +187,7 @@ const NonTerminalNodeMap = {
184
187
  [EQUALITY_RULE_NAME]: EqualityNode,
185
188
  [VARIABLE_RULE_NAME]: VariableNode,
186
189
  [NONSENSE_RULE_NAME]: NonsenseNode,
190
+ [DOCUMENT_RULE_NAME]: DocumentNode,
187
191
  [RULE_BODY_RULE_NAME]: RuleBodyNode,
188
192
  [META_TYPE_RULE_NAME]: MetaTypeNode,
189
193
  [SIGNATURE_RULE_NAME]: SignatureNode,
@@ -200,11 +204,12 @@ const NonTerminalNodeMap = {
200
204
  [CONJECTURE_RULE_NAME]: ConjectureNode,
201
205
  [DERIVATION_RULE_NAME]: DerivationNode,
202
206
  [HYPOTHESIS_RULE_NAME]: HypothesisNode,
207
+ [ASSUMPTION_RULE_NAME]: AssumptionNode,
203
208
  [RULE_HEADER_RULE_NAME]: RuleHeaderNode,
204
209
  [TYPE_PREFIX_RULE_NAME]: TypePrefixNode,
210
+ [PLACEHOLDER_RULE_NAME]: PlaceholderNode,
205
211
  [SUPPOSITION_RULE_NAME]: SuppositionNode,
206
212
  [CONSTRUCTOR_RULE_NAME]: ConstructorNode,
207
- [DECLARATION_RULE_NAME]: DeclarationNode,
208
213
  [METATHEOREM_RULE_NAME]: MetatheoremNode,
209
214
  [AXIOM_HEADER_RULE_NAME]: AxiomHeaderNode,
210
215
  [LEMMA_HEADER_RULE_NAME]: LemmaHeaderNode,
@@ -2,7 +2,6 @@
2
2
 
3
3
  import ontology from "../../ontology";
4
4
  import Assertion from "../assertion";
5
- import TemporaryContext from "../../context/temporary";
6
5
 
7
6
  import { define } from "../../ontology";
8
7
  import { termFromTermAndSubstitutions, frameFromFrameAndSubstitutions, statementFromStatementAndSubstitutions } from "../../utilities/substitutions";
@@ -167,7 +166,10 @@ export default define(class ContainedAssertion extends Assertion {
167
166
 
168
167
  context.trace(`Verifying the '${containedAssertionString}' derived contained assertion...`);
169
168
 
170
- verifiesWhenDerived = verifyWhenDerived(this.term, this.frame, this.statement, this.negated, context);
169
+ const generalCotnext = null,
170
+ specificContext = context; ///
171
+
172
+ verifiesWhenDerived = verifyWhenDerived(this.term, this.frame, this.statement, this.negated, generalCotnext, specificContext);
171
173
 
172
174
  if (verifiesWhenDerived) {
173
175
  context.debug(`...verified the '${containedAssertionString}' derived contained assertion.`);
@@ -176,22 +178,18 @@ export default define(class ContainedAssertion extends Assertion {
176
178
  return verifiesWhenDerived;
177
179
  }
178
180
 
179
- unifyIndependently(substitutions, context) {
181
+ unifyIndependently(substitutions, generalContext, specificContext) {
180
182
  let unifiesIndependently;
181
183
 
182
- const containedAssertionString = this.getString(); ///
184
+ const context = specificContext, ///
185
+ containedAssertionString = this.getString(); ///
183
186
 
184
187
  context.trace(`Unifying the '${containedAssertionString}' contained assertion independently...`);
185
188
 
186
- const tokens = this.getTokens(),
187
- temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
188
-
189
- context = temporaryContext; ///
190
-
191
- const term = termFromTermAndSubstitutions(this.term, substitutions, context),
192
- frame = frameFromFrameAndSubstitutions(this.frame, substitutions, context),
193
- statement = statementFromStatementAndSubstitutions(this.statement, substitutions, context),
194
- verifiesWhenDerived = verifyWhenDerived(term, frame, statement, this.negated, context);
189
+ const term = termFromTermAndSubstitutions(this.term, substitutions, generalContext, specificContext),
190
+ frame = frameFromFrameAndSubstitutions(this.frame, substitutions, generalContext, specificContext),
191
+ statement = statementFromStatementAndSubstitutions(this.statement, substitutions, generalContext, specificContext),
192
+ verifiesWhenDerived = verifyWhenDerived(term, frame, statement, this.negated, generalContext, specificContext);
195
193
 
196
194
  unifiesIndependently = verifiesWhenDerived; ///
197
195
 
@@ -226,9 +224,11 @@ export default define(class ContainedAssertion extends Assertion {
226
224
  }
227
225
  });
228
226
 
229
- function verifyWhenDerived(term, frame, statement, negated, context) {
227
+ function verifyWhenDerived(term, frame, statement, negated, generalContext, specificContext) {
230
228
  let verifiesWhenDerived = false;
231
229
 
230
+ const context = specificContext; ///
231
+
232
232
  if (statement !== null) {
233
233
  if (term !== null) {
234
234
  const termContained = statement.isTermContained(term, context);