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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.388",
4
+ "version": "1.0.404",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -11,15 +11,15 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "argumentative": "^2.0.36",
14
- "necessary": "^15.0.6",
15
- "occam-custom-grammars": "^5.0.1317",
16
- "occam-entities": "^1.0.430",
17
- "occam-file-system": "^6.0.445",
18
- "occam-furtle": "^2.0.263",
19
- "occam-grammars": "^1.3.410",
20
- "occam-lexers": "^23.1.15",
21
- "occam-parsers": "^23.1.18",
22
- "occam-query": "^4.1.124"
14
+ "necessary": "^16.0.3",
15
+ "occam-custom-grammars": "^5.0.1322",
16
+ "occam-entities": "^1.0.431",
17
+ "occam-file-system": "^6.0.446",
18
+ "occam-furtle": "^2.0.265",
19
+ "occam-grammars": "^1.3.414",
20
+ "occam-lexers": "^23.1.22",
21
+ "occam-parsers": "^23.1.25",
22
+ "occam-query": "^4.1.131"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@swc/core": "1.13.20",
@@ -51,9 +51,9 @@ export default function verifyAction(argument, log) {
51
51
 
52
52
  const dependentName = null,
53
53
  dependentReleased = false,
54
- releaseVerified = verifyRelease(releaseName, dependentName, dependentReleased, releaseContextMap);
54
+ releaseVerifies = verifyRelease(releaseName, dependentName, dependentReleased, releaseContextMap);
55
55
 
56
- if (!releaseVerified) {
56
+ if (!releaseVerifies) {
57
57
  log.warning(`The '${name}' project or package cannot be verified.`);
58
58
 
59
59
  return;
@@ -10,7 +10,7 @@ export default class EqualityAssignment {
10
10
  }
11
11
 
12
12
  assign(context) {
13
- const equalityAdded = context.addEquality(this.equality, context),
13
+ const equalityAdded = context.addEquality(this.equality),
14
14
  equalityString = this.equality.getString(),
15
15
  equalityAssigned = equalityAdded; ///
16
16
 
@@ -2,8 +2,7 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import Equivalences from "../equivalences";
6
- import Substitutions from "../substitutions";
5
+ import ontology from "../ontology";
7
6
  import topLevelVerifier from "../verifier/topLevel";
8
7
 
9
8
  import { baseType } from "../ontology/type";
@@ -92,7 +91,8 @@ export default class FileContext {
92
91
  }
93
92
 
94
93
  getEquivalences() {
95
- const equivalences = Equivalences.fromNothing();
94
+ const { Equivalences } = ontology,
95
+ equivalences = Equivalences.fromNothing();
96
96
 
97
97
  return equivalences;
98
98
  }
@@ -496,16 +496,17 @@ export default class FileContext {
496
496
  return axiomLemmaTheoremOrConjecture;
497
497
  }
498
498
 
499
- findMetavariable(metavariable, generalContext, specificContext) {
500
- const specificMetavariable = metavariable, ///
501
- metavariables = this.getMetavariables();
499
+ findMetavariable(metavariable) {
500
+ const metavariables = this.getMetavariables(),
501
+ specificMetavariable = metavariable; ///
502
502
 
503
503
  metavariable = metavariables.find((metavariable) => {
504
504
  const generalMetavariable = metavariable; ///
505
505
 
506
506
  metavariable = specificMetavariable; ///
507
507
 
508
- const metavariableUnifies = generalMetavariable.unifyMetavariable(metavariable, generalContext, specificContext);
508
+ const context = this, ///
509
+ metavariableUnifies = generalMetavariable.unifyMetavariable(metavariable, context);
509
510
 
510
511
  if (metavariableUnifies) {
511
512
  return true;
@@ -627,7 +628,7 @@ export default class FileContext {
627
628
  findLabelByMetavariable(metavariable) {
628
629
  const labels = this.getLabels(),
629
630
  label = labels.find((label) => {
630
- const metavariableEqualToLabelMetavariable = label.isMetavariableEqualTo(metavariable);
631
+ const metavariableEqualToLabelMetavariable = label.isMetavariableEqualToMetavariable(metavariable);
631
632
 
632
633
  if (metavariableEqualToLabelMetavariable) {
633
634
  return true;
@@ -668,8 +669,8 @@ export default class FileContext {
668
669
  return metavariable;
669
670
  }
670
671
 
671
- isMetavariablePresent(metavariable, generalContext, specificContext) {
672
- metavariable = this.findMetavariable(metavariable, generalContext, specificContext); ///
672
+ isMetavariablePresent(metavariable) {
673
+ metavariable = this.findMetavariable(metavariable);
673
674
 
674
675
  const metavariablePresent = (metavariable !== null);
675
676
 
@@ -735,7 +736,8 @@ export default class FileContext {
735
736
  isLabelPresentByReference(reference) {
736
737
  const labels = this.getLabels(),
737
738
  labelPresent = labels.some((label) => {
738
- const context = this, ///
739
+ const { Substitutions } = ontology,
740
+ context = this, ///
739
741
  substitutions = Substitutions.fromNothing(),
740
742
  labelUnifies = reference.unifyLabel(label, substitutions, context);
741
743
 
@@ -2,15 +2,13 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
 
5
- import Equivalence from "../equivalence";
6
- import Equivalences from "../equivalences";
5
+ import ontology from "../ontology";
7
6
 
8
7
  const { last } = arrayUtilities;
9
8
 
10
9
  class LocalContext {
11
- constructor(context, tokens, variables, judgements, equivalences, stepsOrSubproofs) {
10
+ constructor(context, variables, judgements, equivalences, stepsOrSubproofs) {
12
11
  this.context = context;
13
- this.tokens = tokens;
14
12
  this.variables = variables;
15
13
  this.judgements = judgements;
16
14
  this.equivalences = equivalences;
@@ -21,10 +19,6 @@ class LocalContext {
21
19
  return this.context;
22
20
  }
23
21
 
24
- getTokens() {
25
- return this.tokens;
26
- }
27
-
28
22
  getVariables(nested = true) {
29
23
  let variables;
30
24
 
@@ -124,19 +118,28 @@ class LocalContext {
124
118
 
125
119
  addTheorem(theorem) { this.context.addTheorem(theorem); }
126
120
 
127
- addEquality(equality, context) {
121
+ addEquality(equality) {
128
122
  let equalityAdded;
129
123
 
130
124
  const equalityReflexive = equality.isReflexive();
131
125
 
132
126
  if (!equalityReflexive) {
133
- const equivalence = Equivalence.fromEquality(equality);
127
+ const { Equivalence } = ontology,
128
+ equivalence = Equivalence.fromEquality(equality),
129
+ context = this; ///
134
130
 
135
131
  this.equivalences = this.equivalences.mergedWithEquivalence(equivalence, context);
136
132
  }
137
133
 
138
134
  equalityAdded = true;
139
135
 
136
+ if (equalityAdded) {
137
+ const context = this, ///
138
+ equalityString = equality.getString();
139
+
140
+ context.trace(`Added the '${equalityString}' equality.`)
141
+ }
142
+
140
143
  return equalityAdded;
141
144
  }
142
145
 
@@ -152,11 +155,14 @@ class LocalContext {
152
155
  variableAdded = true;
153
156
  }
154
157
 
155
- return variableAdded;
156
- }
158
+ if (variableAdded) {
159
+ const context = this,
160
+ variableString = variable.getString();
157
161
 
158
- addStepOrSubproof(stepOrSubproof) {
159
- this.stepsOrSubproofs.push(stepOrSubproof);
162
+ context.trace(`Added the '${variableString}' variable.`)
163
+ }
164
+
165
+ return variableAdded;
160
166
  }
161
167
 
162
168
  addJudgement(judgement) {
@@ -171,9 +177,20 @@ class LocalContext {
171
177
  judgementAdded = true;
172
178
  }
173
179
 
180
+ if (judgementAdded) {
181
+ const context = this, ///
182
+ judgementString = judgement.getString();
183
+
184
+ context.trace(`Added the '${judgementString}' judgement.`)
185
+ }
186
+
174
187
  return judgementAdded;
175
188
  }
176
189
 
190
+ addStepOrSubproof(stepOrSubproof) {
191
+ this.stepsOrSubproofs.push(stepOrSubproof);
192
+ }
193
+
177
194
  findProcedureByName(name) { return this.context.findProcedureByName(name); }
178
195
 
179
196
  findLabelByReference(reference, context) { return this.context.findLabelByReference(reference, context); }
@@ -229,7 +246,7 @@ class LocalContext {
229
246
 
230
247
  findEquivalenceByTerm(term) { return this.equivalences.findEquivalenceByTerm(term); }
231
248
 
232
- findMetavariable(metavariable, generalContext, specificContext) { return this.context.findMetavariable(metavariable, generalContext, specificContext); }
249
+ findMetavariable(metavariable) { return this.context.findMetavariable(metavariable); }
233
250
 
234
251
  findLabelByMetavariable(metavariable) { return this.context.findLabelByMetavariable(metavariable); }
235
252
 
@@ -249,7 +266,7 @@ class LocalContext {
249
266
 
250
267
  findAxiomLemmaTheoremOrConjectureByReference(reference) { return this.context.findAxiomLemmaTheoremOrConjectureByReference(reference); }
251
268
 
252
- isMetavariablePresent(metavariable, generalContext, specificContext) { return this.context.isMetavariablePresent(metavariable, generalContext, specificContext); }
269
+ isMetavariablePresent(metavariable) { return this.context.isMetavariablePresent(metavariable); }
253
270
 
254
271
  isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) { return this.context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies); }
255
272
 
@@ -341,45 +358,13 @@ class LocalContext {
341
358
  return termAndPropertyRelationMatches;
342
359
  }
343
360
 
344
- nodeAsString(node, tokens = null) {
345
- if (tokens === null) {
346
- tokens = this.tokens;
347
- }
348
-
349
- const string = this.context.nodeAsString(node, tokens);
350
-
351
- return string;
352
- }
353
-
354
- nodesAsString(node, tokens = null) {
355
- if (tokens === null) {
356
- tokens = this.tokens;
357
- }
361
+ nodeAsString(node, tokens) { return this.context.nodeAsString(node, tokens); }
358
362
 
359
- const string = this.context.nodesAsString(node, tokens);
363
+ nodesAsString(node, tokens) { return this.context.nodesAsString(node, tokens); }
360
364
 
361
- return string;
362
- }
365
+ nodeAsTokens(node, tokens) { return this.context.nodeAsTokens(node, tokens); }
363
366
 
364
- nodeAsTokens(node, tokens = null) {
365
- if (tokens === null) {
366
- tokens = this.tokens;
367
- }
368
-
369
- tokens = this.context.nodeAsTokens(node, tokens); ///
370
-
371
- return tokens;
372
- }
373
-
374
- nodesAsTokens(node, tokens = null) {
375
- if (tokens === null) {
376
- tokens = this.tokens;
377
- }
378
-
379
- tokens = this.context.nodesAsTokens(node, tokens); ///
380
-
381
- return tokens;
382
- }
367
+ nodesAsTokens(node, tokens) { return this.context.nodesAsTokens(node, tokens); }
383
368
 
384
369
  tokensAsString(tokens) { return this.context.tokensAsString(tokens); }
385
370
 
@@ -393,23 +378,13 @@ class LocalContext {
393
378
 
394
379
  error(message, node = null) { this.context.error(message, node); }
395
380
 
396
- static fromContext(context) {
397
- const tokens = null,
381
+ static fromNothing(context) {
382
+ const { Equivalences } = ontology,
398
383
  variables = [],
399
384
  judgements = [],
400
385
  equivalences = Equivalences.fromNothing(),
401
386
  stepsOrSubproofs = [],
402
- localContext = new LocalContext(context, tokens, variables, judgements, equivalences, stepsOrSubproofs);
403
-
404
- return localContext;
405
- }
406
-
407
- static fromContextAndTokens(context, tokens) {
408
- const variables = [],
409
- judgements = [],
410
- equivalences = Equivalences.fromNothing(),
411
- stepsOrSubproofs = [],
412
- localContext = new LocalContext(context, tokens, variables, judgements, equivalences, stepsOrSubproofs);
387
+ localContext = new LocalContext(context, variables, judgements, equivalences, stepsOrSubproofs);
413
388
 
414
389
  return localContext;
415
390
  }
@@ -4,15 +4,11 @@ import { BNFLexer } from "occam-lexers";
4
4
  import { BNFParser } from "occam-parsers";
5
5
  import { arrayUtilities } from "necessary";
6
6
 
7
- import { nodeQuery } from "../utilities/query";
8
-
9
7
  const { first } = arrayUtilities;
10
8
 
11
9
  const bnfLexer = BNFLexer.fromNothing(),
12
10
  bnfParser = BNFParser.fromNothing();
13
11
 
14
- const childNodeQuery = nodeQuery("/*/*!");
15
-
16
12
  export default class PartialContext {
17
13
  constructor(node, tokens) {
18
14
  this.node = node;
@@ -29,25 +25,24 @@ export default class PartialContext {
29
25
 
30
26
  static fromStringLexerAndParser(Class, string, lexer, parser) {
31
27
  const { rule } = Class,
32
- ruleMap = parser.getRuleMap(),
33
- ruleName = rule.getName();
34
-
35
- ruleMap[ruleName] = rule;
36
-
37
- const startRule = rule, ///
28
+ startRule = rule, ///
38
29
  content = `${string}
39
30
  `;
40
31
 
41
32
  let tokens = lexer.tokenise(content),
42
33
  node = parser.parse(tokens, startRule);
43
34
 
44
- delete ruleMap[ruleName];
35
+ node.someChildNode((childNode) => {
36
+ const childNodeNonTerminalNode = childNode.isNonTerminalNode();
45
37
 
46
- const childNode = childNodeQuery(node);
38
+ if (childNodeNonTerminalNode) {
39
+ node = childNode; ///
47
40
 
48
- node = childNode; ///
41
+ tokens = tokensFromTokensAndNode(tokens, node); ///
49
42
 
50
- tokens = tokensFromTokensAndNode(tokens, node); ///
43
+ return true;
44
+ }
45
+ })
51
46
 
52
47
  const partialContext = new Class(node, tokens);
53
48