occam-verify-cli 0.0.526 → 0.0.529

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 (221) hide show
  1. package/README.md +4 -0
  2. package/bin/abbreviations.js +5 -1
  3. package/bin/action/help.js +4 -0
  4. package/bin/action/verify.js +35 -13
  5. package/bin/actions.js +11 -6
  6. package/bin/defaults.js +4 -0
  7. package/bin/options.js +4 -0
  8. package/bin/utilities/releaseContext.js +5 -7
  9. package/lib/assertion/type.js +10 -40
  10. package/lib/axiom.js +8 -8
  11. package/lib/axiomLemmaTheoremConjecture.js +190 -0
  12. package/lib/combinator.js +4 -3
  13. package/lib/conclusion.js +8 -7
  14. package/lib/conjecture.js +141 -0
  15. package/lib/consequence.js +6 -5
  16. package/lib/constants.js +11 -27
  17. package/lib/constructor.js +5 -4
  18. package/lib/context/file.js +88 -73
  19. package/lib/context/metaproof.js +51 -20
  20. package/lib/context/proof.js +48 -114
  21. package/lib/context/release/directory.js +25 -6
  22. package/lib/context/release/file.js +38 -25
  23. package/lib/context/release.js +32 -51
  24. package/lib/equality.js +79 -51
  25. package/lib/index.js +4 -16
  26. package/lib/kinds.js +5 -1
  27. package/lib/label.js +4 -3
  28. package/lib/lemma.js +8 -8
  29. package/lib/log.js +146 -0
  30. package/lib/matcher.js +25 -75
  31. package/lib/metaTypeNames.js +13 -0
  32. package/lib/mixins/file.js +62 -2
  33. package/lib/mixins/logging.js +13 -13
  34. package/lib/node/metastatement/bracketed.js +16 -0
  35. package/lib/node/statement/bracketed.js +16 -0
  36. package/lib/node/statement/combinator/bracketed.js +17 -0
  37. package/lib/node/statement/combinator/equality.js +17 -0
  38. package/lib/node/statement/equality.js +16 -0
  39. package/lib/ocmbinator/bracketed.js +3 -4
  40. package/lib/ocmbinator/equality.js +3 -4
  41. package/lib/premise.js +13 -12
  42. package/lib/rule.js +5 -5
  43. package/lib/ruleNames.js +1 -9
  44. package/lib/step/metaproof.js +28 -25
  45. package/lib/step/proof.js +23 -1
  46. package/lib/substitution/metastatementForMetavariable.js +16 -13
  47. package/lib/substitution/statementForMetavariable.js +16 -13
  48. package/lib/substitution/termForVariable.js +76 -0
  49. package/lib/supposition.js +7 -6
  50. package/lib/theorem.js +8 -8
  51. package/lib/type.js +12 -5
  52. package/lib/utilities/metaproof.js +60 -0
  53. package/lib/utilities/node.js +56 -0
  54. package/lib/utilities/proof.js +60 -0
  55. package/lib/utilities/releaseContext.js +24 -12
  56. package/lib/utilities/string.js +3 -38
  57. package/lib/variable.js +4 -38
  58. package/lib/{matcher → verifier}/metastatementForMetavariable/conclusion.js +12 -12
  59. package/lib/{matcher → verifier}/metastatementForMetavariable/premise.js +12 -12
  60. package/lib/verifier/metastatementForMetavariable.js +198 -0
  61. package/lib/{matcher → verifier}/statementForMetavariable/conclusion.js +12 -12
  62. package/lib/{matcher → verifier}/statementForMetavariable/premise.js +12 -12
  63. package/lib/verifier/statementForMetavariable.js +203 -0
  64. package/lib/{matcher/statementForVariable → verifier/termForVariable}/consequence.js +13 -13
  65. package/lib/{matcher/statementForVariable → verifier/termForVariable}/supposition.js +13 -13
  66. package/lib/verifier/termForVariable.js +198 -0
  67. package/lib/verifier.js +92 -0
  68. package/lib/verify/assertion/type.js +62 -41
  69. package/lib/verify/axiom.js +3 -6
  70. package/lib/verify/conclusion.js +2 -4
  71. package/lib/verify/conjecture.js +54 -0
  72. package/lib/verify/consequence.js +2 -4
  73. package/lib/verify/declaration/combinator.js +1 -3
  74. package/lib/verify/declaration/constructor.js +1 -3
  75. package/lib/verify/declaration/topLevel.js +7 -5
  76. package/lib/verify/declaration/type.js +1 -3
  77. package/lib/verify/declaration/variable.js +1 -3
  78. package/lib/verify/derivation.js +1 -5
  79. package/lib/verify/label.js +1 -3
  80. package/lib/verify/lemma.js +3 -6
  81. package/lib/verify/metastatement/qualified.js +2 -5
  82. package/lib/verify/metastatement/unqualified.js +2 -5
  83. package/lib/verify/metastatement.js +1 -3
  84. package/lib/verify/premise.js +2 -4
  85. package/lib/verify/proof.js +3 -5
  86. package/lib/verify/rule.js +3 -6
  87. package/lib/verify/ruleDerivation.js +1 -5
  88. package/lib/verify/ruleProof.js +3 -5
  89. package/lib/verify/statement/qualified.js +40 -13
  90. package/lib/verify/statement/unqualified.js +2 -5
  91. package/lib/verify/statement.js +56 -62
  92. package/lib/verify/statementAsCombinator.js +4 -6
  93. package/lib/verify/supposition.js +2 -4
  94. package/lib/verify/term.js +4 -10
  95. package/lib/verify/termAsConstructor.js +6 -9
  96. package/lib/verify/theorem.js +3 -6
  97. package/lib/verify/type.js +5 -9
  98. package/lib/verify/variable.js +5 -9
  99. package/package.json +1 -1
  100. package/src/assertion/type.js +7 -32
  101. package/src/axiom.js +4 -4
  102. package/src/{axiomLemmaTheorem.js → axiomLemmaTheoremConjecture.js} +9 -9
  103. package/src/combinator.js +3 -3
  104. package/src/conclusion.js +7 -7
  105. package/src/conjecture.js +13 -0
  106. package/src/consequence.js +5 -5
  107. package/src/constants.js +3 -7
  108. package/src/constructor.js +4 -4
  109. package/src/context/file.js +85 -65
  110. package/src/context/metaproof.js +55 -15
  111. package/src/context/proof.js +53 -50
  112. package/src/context/release/directory.js +31 -7
  113. package/src/context/release/file.js +47 -31
  114. package/src/context/release.js +23 -32
  115. package/src/equality.js +108 -61
  116. package/src/index.js +2 -4
  117. package/src/kinds.js +1 -0
  118. package/src/label.js +3 -3
  119. package/src/lemma.js +4 -4
  120. package/src/log.js +116 -0
  121. package/src/matcher.js +32 -24
  122. package/src/metaTypeNames.js +3 -0
  123. package/src/mixins/file.js +46 -1
  124. package/src/mixins/logging.js +6 -6
  125. package/src/node/metastatement/bracketed.js +9 -0
  126. package/src/node/statement/bracketed.js +9 -0
  127. package/src/node/statement/combinator/bracketed.js +10 -0
  128. package/src/node/statement/combinator/equality.js +11 -0
  129. package/src/node/statement/equality.js +10 -0
  130. package/src/ocmbinator/bracketed.js +2 -5
  131. package/src/ocmbinator/equality.js +2 -5
  132. package/src/premise.js +13 -13
  133. package/src/rule.js +4 -4
  134. package/src/ruleNames.js +0 -2
  135. package/src/step/metaproof.js +32 -29
  136. package/src/step/proof.js +28 -0
  137. package/src/substitution/metastatementForMetavariable.js +10 -15
  138. package/src/substitution/statementForMetavariable.js +11 -16
  139. package/src/substitution/termForVariable.js +36 -0
  140. package/src/supposition.js +6 -6
  141. package/src/theorem.js +4 -4
  142. package/src/type.js +17 -7
  143. package/src/utilities/metaproof.js +62 -0
  144. package/src/utilities/node.js +73 -0
  145. package/src/utilities/proof.js +62 -0
  146. package/src/utilities/releaseContext.js +30 -12
  147. package/src/utilities/string.js +4 -53
  148. package/src/variable.js +4 -37
  149. package/src/verifier/metastatementForMetavariable/conclusion.js +9 -0
  150. package/src/verifier/metastatementForMetavariable/premise.js +9 -0
  151. package/src/verifier/metastatementForMetavariable.js +89 -0
  152. package/src/verifier/statementForMetavariable/conclusion.js +9 -0
  153. package/src/verifier/statementForMetavariable/premise.js +9 -0
  154. package/src/verifier/statementForMetavariable.js +105 -0
  155. package/src/verifier/termForVariable/consequence.js +9 -0
  156. package/src/verifier/termForVariable/supposition.js +9 -0
  157. package/src/verifier/termForVariable.js +89 -0
  158. package/src/verifier.js +74 -0
  159. package/src/verify/assertion/type.js +74 -74
  160. package/src/verify/axiom.js +2 -9
  161. package/src/verify/conclusion.js +1 -7
  162. package/src/verify/conjecture.js +67 -0
  163. package/src/verify/consequence.js +1 -7
  164. package/src/verify/declaration/combinator.js +0 -6
  165. package/src/verify/declaration/constructor.js +0 -6
  166. package/src/verify/declaration/topLevel.js +7 -6
  167. package/src/verify/declaration/type.js +0 -6
  168. package/src/verify/declaration/variable.js +0 -6
  169. package/src/verify/derivation.js +0 -12
  170. package/src/verify/label.js +0 -6
  171. package/src/verify/lemma.js +4 -11
  172. package/src/verify/metastatement/qualified.js +1 -8
  173. package/src/verify/metastatement/unqualified.js +1 -8
  174. package/src/verify/metastatement.js +0 -6
  175. package/src/verify/premise.js +1 -7
  176. package/src/verify/proof.js +1 -7
  177. package/src/verify/rule.js +2 -9
  178. package/src/verify/ruleDerivation.js +0 -12
  179. package/src/verify/ruleProof.js +1 -7
  180. package/src/verify/statement/qualified.js +54 -20
  181. package/src/verify/statement/unqualified.js +1 -8
  182. package/src/verify/statement.js +65 -95
  183. package/src/verify/statementAsCombinator.js +3 -9
  184. package/src/verify/supposition.js +1 -7
  185. package/src/verify/term.js +3 -21
  186. package/src/verify/termAsConstructor.js +5 -13
  187. package/src/verify/theorem.js +2 -9
  188. package/src/verify/type.js +4 -13
  189. package/src/verify/variable.js +4 -13
  190. package/bin/callbacks.js +0 -48
  191. package/lib/axiomLemmaTheorem.js +0 -190
  192. package/lib/callbacks.js +0 -75
  193. package/lib/context/release/combinator.js +0 -64
  194. package/lib/jsonTypes.js +0 -30
  195. package/lib/matcher/metastatementForMetavariable.js +0 -201
  196. package/lib/matcher/statementForMetavariable.js +0 -201
  197. package/lib/matcher/statementForVariable.js +0 -201
  198. package/lib/mixins/callbacks.js +0 -27
  199. package/lib/substitution/statementForVariable.js +0 -86
  200. package/lib/utilities/json.js +0 -187
  201. package/lib/utilities/substitution.js +0 -61
  202. package/lib/utilities/version.js +0 -32
  203. package/lib/versionChanges.js +0 -34
  204. package/src/callbacks.js +0 -39
  205. package/src/context/release/combinator.js +0 -39
  206. package/src/jsonTypes.js +0 -6
  207. package/src/matcher/metastatementForMetavariable/conclusion.js +0 -9
  208. package/src/matcher/metastatementForMetavariable/premise.js +0 -9
  209. package/src/matcher/metastatementForMetavariable.js +0 -99
  210. package/src/matcher/statementForMetavariable/conclusion.js +0 -9
  211. package/src/matcher/statementForMetavariable/premise.js +0 -9
  212. package/src/matcher/statementForMetavariable.js +0 -99
  213. package/src/matcher/statementForVariable/consequence.js +0 -9
  214. package/src/matcher/statementForVariable/supposition.js +0 -9
  215. package/src/matcher/statementForVariable.js +0 -99
  216. package/src/mixins/callbacks.js +0 -15
  217. package/src/substitution/statementForVariable.js +0 -64
  218. package/src/utilities/json.js +0 -264
  219. package/src/utilities/substitution.js +0 -79
  220. package/src/utilities/version.js +0 -30
  221. package/src/versionChanges.js +0 -11
@@ -17,8 +17,6 @@ const childNodesQuery = nodesQuery("/derivation|subDerivation/*"),
17
17
  export default function verifyDerivation(derivationNode, proofContext) {
18
18
  let derivationVerified;
19
19
 
20
- proofContext.begin(derivationNode);
21
-
22
20
  const childNodes = childNodesQuery(derivationNode);
23
21
 
24
22
  derivationVerified = childNodes.every((childNode) => {
@@ -29,18 +27,12 @@ export default function verifyDerivation(derivationNode, proofContext) {
29
27
  }
30
28
  });
31
29
 
32
- derivationVerified ?
33
- proofContext.complete(derivationNode) :
34
- proofContext.halt(derivationNode);
35
-
36
30
  return derivationVerified;
37
31
  }
38
32
 
39
33
  function verifySubDerivation(subDerivationNode, proofContext) {
40
34
  let subDerivationVerified;
41
35
 
42
- proofContext.begin(subDerivationNode);
43
-
44
36
  const childNodes = childNodesQuery(subDerivationNode);
45
37
 
46
38
  subDerivationVerified = childNodes.every((childNode) => {
@@ -51,10 +43,6 @@ function verifySubDerivation(subDerivationNode, proofContext) {
51
43
  }
52
44
  });
53
45
 
54
- subDerivationVerified ?
55
- proofContext.complete(subDerivationNode) :
56
- proofContext.halt(subDerivationNode);
57
-
58
46
  return subDerivationVerified;
59
47
  }
60
48
 
@@ -7,8 +7,6 @@ import { labelNameFromLabelNode } from "../utilities/query";
7
7
  export default function verifyLabel(labelNode, labels, fileContext) {
8
8
  let labelVerified = false;
9
9
 
10
- fileContext.begin(labelNode);
11
-
12
10
  const labelName = labelNameFromLabelNode(labelNode),
13
11
  labelPresent = fileContext.isLabelPresentByLabelName(labelName);
14
12
 
@@ -24,9 +22,5 @@ export default function verifyLabel(labelNode, labels, fileContext) {
24
22
  labelVerified = true;
25
23
  }
26
24
 
27
- labelVerified ?
28
- fileContext.complete(labelNode) :
29
- fileContext.halt(labelNode);
30
-
31
25
  return labelVerified;
32
26
  }
@@ -9,7 +9,6 @@ import verifyConsequence from "./consequence";
9
9
 
10
10
  import { first } from "../utilities/array";
11
11
  import { EMPTY_STRING } from "../constants";
12
- import { nodesAsString } from "../utilities/string";
13
12
  import { nodeQuery, nodesQuery } from "../utilities/query";
14
13
 
15
14
  const proofNodeQuery = nodeQuery("/lemma/proof!"),
@@ -20,15 +19,13 @@ const proofNodeQuery = nodeQuery("/lemma/proof!"),
20
19
  export default function verifyLemma(lemmaNode, fileContext) {
21
20
  let lemmaVerified = false;
22
21
 
23
- fileContext.begin(lemmaNode);
24
-
25
22
  const labelNodes = labelNodesQuery(lemmaNode),
26
23
  labelsString = fileContext.nodesAsString(labelNodes),
27
24
  proofContext = ProofContext.fromFileContext(fileContext);
28
25
 
29
26
  (labelsString === EMPTY_STRING) ?
30
- fileContext.debug(`Verifying a lemma...`) :
31
- fileContext.debug(`Verifying the '${labelsString}' lemma...`);
27
+ fileContext.debug(`Verifying a lemma...`, lemmaNode) :
28
+ fileContext.debug(`Verifying the '${labelsString}' lemma...`, lemmaNode);
32
29
 
33
30
  const labels = [],
34
31
  labelsVerified = verifyLabels(labelNodes, labels, fileContext);
@@ -68,13 +65,9 @@ export default function verifyLemma(lemmaNode, fileContext) {
68
65
 
69
66
  if (lemmaVerified) {
70
67
  (labelsString === EMPTY_STRING) ?
71
- fileContext.info(`Verified the lemma.`) :
72
- fileContext.info(`Verified the '${labelsString}' lemma.`);
68
+ fileContext.info(`Verified the lemma.`, lemmaNode) :
69
+ fileContext.info(`Verified the '${labelsString}' lemma.`, lemmaNode);
73
70
  }
74
71
 
75
- lemmaVerified ?
76
- fileContext.complete(lemmaNode) :
77
- fileContext.complete(lemmaNode);
78
-
79
72
  return lemmaVerified;
80
73
  }
@@ -2,7 +2,6 @@
2
2
 
3
3
  import verifyMetastatement from "../../verify/metastatement";
4
4
 
5
- import { nodeAsString } from "../../utilities/string";
6
5
  import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
7
6
 
8
7
  const referenceNodeQuery = nodeQuery("/qualifiedMetastatement/qualification!/reference!"),
@@ -11,14 +10,12 @@ const referenceNodeQuery = nodeQuery("/qualifiedMetastatement/qualification!/ref
11
10
  export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, assertions, derived, metaproofContext) {
12
11
  let qualifiedMetastatementVerified = false;
13
12
 
14
- metaproofContext.begin(qualifiedMetastatementNode);
15
-
16
13
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
17
14
 
18
15
  if (metastatementNode !== null) {
19
16
  const metastatementString = metaproofContext.nodeAsString(metastatementNode);
20
17
 
21
- metaproofContext.debug(`Verifying the '${metastatementString}' qualified metastatement...`);
18
+ metaproofContext.debug(`Verifying the '${metastatementString}' qualified metastatement...`, qualifiedMetastatementNode);
22
19
 
23
20
  let ruleMatchesMetastatement = true;
24
21
 
@@ -40,9 +37,5 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
40
37
  }
41
38
  }
42
39
 
43
- qualifiedMetastatementVerified ?
44
- metaproofContext.complete(qualifiedMetastatementNode) :
45
- metaproofContext.halt(qualifiedMetastatementNode);
46
-
47
40
  return qualifiedMetastatementVerified;
48
41
  }
@@ -3,21 +3,18 @@
3
3
  import verifyMetastatement from "../metastatement";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
- import { nodeAsString } from "../../utilities/string";
7
6
 
8
7
  const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
9
8
 
10
9
  export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assertions, derived, metaproofContext) {
11
10
  let unqualifiedMetastatementVerified = false;
12
11
 
13
- metaproofContext.begin(unqualifiedMetastatementNode);
14
-
15
12
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
16
13
 
17
14
  if (metastatementNode !== null) {
18
15
  const metastatementString = metaproofContext.nodeAsString(metastatementNode);
19
16
 
20
- metaproofContext.debug(`Verifying the '${metastatementString}' unqualified metastatement...`);
17
+ metaproofContext.debug(`Verifying the '${metastatementString}' unqualified metastatement...`, unqualifiedMetastatementNode);
21
18
 
22
19
  let metastatementMatches = true;
23
20
 
@@ -32,9 +29,5 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
32
29
  }
33
30
  }
34
31
 
35
- unqualifiedMetastatementVerified ?
36
- metaproofContext.complete(unqualifiedMetastatementNode) :
37
- metaproofContext.halt(unqualifiedMetastatementNode);
38
-
39
32
  return unqualifiedMetastatementVerified;
40
33
  }
@@ -3,13 +3,7 @@
3
3
  export default function verifyMetastatement(metastatementNode, assertions, derived, metaproofContext) {
4
4
  let metastatementVerified = true; ///
5
5
 
6
- metaproofContext.begin(metastatementNode);
7
-
8
6
  ///
9
7
 
10
- metastatementVerified ?
11
- metaproofContext.complete(metastatementNode) :
12
- metaproofContext.halt(metastatementNode);
13
-
14
8
  return metastatementVerified;
15
9
  }
@@ -12,11 +12,9 @@ const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatemen
12
12
  export default function verifyPremise(premiseNode, premises, metaproofContext) {
13
13
  let premiseVerified;
14
14
 
15
- metaproofContext.begin(premiseNode);
16
-
17
15
  const premiseString = metaproofContext.nodeAsString(premiseNode);
18
16
 
19
- metaproofContext.debug(`Verifying the '${premiseString}' premise...`);
17
+ metaproofContext.debug(`Verifying the '${premiseString}' premise...`, premiseNode);
20
18
 
21
19
  const derived = false,
22
20
  assertions = [],
@@ -35,9 +33,5 @@ export default function verifyPremise(premiseNode, premises, metaproofContext) {
35
33
  premiseVerified = true;
36
34
  }
37
35
 
38
- premiseVerified ?
39
- metaproofContext.complete(premiseNode) :
40
- metaproofContext.halt(premiseNode);
41
-
42
36
  return premiseVerified;
43
37
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import matcher from "../matcher";
3
4
  import verifyDerivation from "../verify/derivation";
4
5
 
5
- import { matcher } from "../matcher";
6
6
  import { nodeQuery } from "../utilities/query";
7
7
 
8
8
  const derivationNodeQuery = nodeQuery("/proof/derivation!");
@@ -10,8 +10,6 @@ const derivationNodeQuery = nodeQuery("/proof/derivation!");
10
10
  export default function verifyProof(proofNode, conclusion, proofContext) {
11
11
  let proofVerified = false;
12
12
 
13
- proofContext.begin(proofNode);
14
-
15
13
  const derivationNode = derivationNodeQuery(proofNode),
16
14
  derivationVerified = verifyDerivation(derivationNode, proofContext);
17
15
 
@@ -27,9 +25,5 @@ export default function verifyProof(proofNode, conclusion, proofContext) {
27
25
  proofVerified = nodeMatches; ///
28
26
  }
29
27
 
30
- proofVerified ?
31
- proofContext.complete(proofNode) :
32
- proofContext.complete(proofNode);
33
-
34
28
  return proofVerified;
35
29
  }
@@ -8,7 +8,6 @@ import MetaproofContext from "../context/metaproof";
8
8
  import verifyConclusion from "../verify/conclusion";
9
9
 
10
10
  import { first } from "../utilities/array";
11
- import { nodesAsString } from "../utilities/string";
12
11
  import { nodeQuery, nodesQuery } from "../utilities/query";
13
12
 
14
13
  const labelNodesQuery = nodesQuery("/rule/label"),
@@ -19,13 +18,11 @@ const labelNodesQuery = nodesQuery("/rule/label"),
19
18
  export default function verifyRule(ruleNode, fileContext) {
20
19
  let ruleVerified = false;
21
20
 
22
- fileContext.begin(ruleNode);
23
-
24
21
  const labelNodes = labelNodesQuery(ruleNode),
25
22
  labelsString = fileContext.nodesAsString(labelNodes),
26
23
  metaProofContext = MetaproofContext.fromFileContext(fileContext);
27
24
 
28
- fileContext.debug(`Verifying the '${labelsString}' rule...`);
25
+ fileContext.debug(`Verifying the '${labelsString}' rule...`, ruleNode);
29
26
 
30
27
  const labels = [],
31
28
  labelsVerified = verifyLabels(labelNodes, labels, fileContext);
@@ -69,12 +66,8 @@ export default function verifyRule(ruleNode, fileContext) {
69
66
  }
70
67
 
71
68
  if (ruleVerified) {
72
- fileContext.info(`Verified the '${labelsString}' rule.`);
69
+ fileContext.info(`Verified the '${labelsString}' rule.`, ruleNode);
73
70
  }
74
71
 
75
- ruleVerified ?
76
- fileContext.complete(ruleNode) :
77
- fileContext.complete(ruleNode);
78
-
79
72
  return ruleVerified;
80
73
  }
@@ -17,8 +17,6 @@ const childNodesQuery = nodesQuery("/ruleDerivation|ruleSubDerivation/*"),
17
17
  export default function verifyRuleDerivation(ruleDerivationNode, metaproofContext) {
18
18
  let ruleDerivationVerified;
19
19
 
20
- metaproofContext.begin(ruleDerivationNode);
21
-
22
20
  const childNodes = childNodesQuery(ruleDerivationNode);
23
21
 
24
22
  ruleDerivationVerified = childNodes.every((childNode) => {
@@ -29,18 +27,12 @@ export default function verifyRuleDerivation(ruleDerivationNode, metaproofContex
29
27
  }
30
28
  });
31
29
 
32
- ruleDerivationVerified ?
33
- metaproofContext.complete(ruleDerivationNode) :
34
- metaproofContext.halt(ruleDerivationNode);
35
-
36
30
  return ruleDerivationVerified;
37
31
  }
38
32
 
39
33
  function verifyRuleSubDerivation(ruleSubDerivationNode, metaproofContext) {
40
34
  let ruleSubDerivationVerified;
41
35
 
42
- metaproofContext.begin(ruleSubDerivationNode);
43
-
44
36
  const childNodes = childNodesQuery(ruleSubDerivationNode);
45
37
 
46
38
  ruleSubDerivationVerified = childNodes.every((childNode) => {
@@ -51,10 +43,6 @@ function verifyRuleSubDerivation(ruleSubDerivationNode, metaproofContext) {
51
43
  }
52
44
  });
53
45
 
54
- ruleSubDerivationVerified ?
55
- metaproofContext.complete(ruleSubDerivationNode) :
56
- metaproofContext.halt(ruleSubDerivationNode);
57
-
58
46
  return ruleSubDerivationVerified;
59
47
  }
60
48
 
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import matcher from "../matcher";
3
4
  import verifyRuleDerivation from "../verify/ruleDerivation";
4
5
 
5
- import { matcher } from "../matcher";
6
6
  import { nodeQuery } from "../utilities/query";
7
7
 
8
8
  const ruleDerivationNodeQuery = nodeQuery("/ruleProof/ruleDerivation!");
@@ -10,8 +10,6 @@ const ruleDerivationNodeQuery = nodeQuery("/ruleProof/ruleDerivation!");
10
10
  export default function verifyRuleProof(ruleProofNode, conclusion, metaproofContext) {
11
11
  let ruleProofVerified = false;
12
12
 
13
- metaproofContext.begin(ruleProofNode);
14
-
15
13
  const ruleDerivationNode = ruleDerivationNodeQuery(ruleProofNode),
16
14
  ruleDerivationVerified = verifyRuleDerivation(ruleDerivationNode, metaproofContext);
17
15
 
@@ -27,9 +25,5 @@ export default function verifyRuleProof(ruleProofNode, conclusion, metaproofCont
27
25
  ruleProofVerified = nodeMatches; ///
28
26
  }
29
27
 
30
- ruleProofVerified ?
31
- metaproofContext.complete(ruleProofNode) :
32
- metaproofContext.complete(ruleProofNode);
33
-
34
28
  return ruleProofVerified;
35
29
  }
@@ -2,7 +2,6 @@
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
- import { nodeAsString } from "../../utilities/string";
6
5
  import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
7
6
 
8
7
  const referenceNodeQuery = nodeQuery("/qualifiedStatement/qualification!/reference!"),
@@ -11,39 +10,74 @@ const referenceNodeQuery = nodeQuery("/qualifiedStatement/qualification!/referen
11
10
  export default function verifyQualifiedStatement(qualifiedStatementNode, assertions, derived, proofContext) {
12
11
  let qualifiedStatementVerified = false;
13
12
 
14
- proofContext.begin(qualifiedStatementNode);
15
-
16
13
  const statementNode = statementNodeQuery(qualifiedStatementNode);
17
14
 
18
15
  if (statementNode !== null) {
19
16
  const statementString = proofContext.nodeAsString(statementNode);
20
17
 
21
- proofContext.debug(`Verifying the '${statementString}' qualified statement...`);
22
-
23
- let ruleMatchesStatement = true;
18
+ proofContext.debug(`Verifying the '${statementString}' qualified statement...`, qualifiedStatementNode);
24
19
 
25
20
  const referenceNode = referenceNodeQuery(qualifiedStatementNode);
26
21
 
27
- if (referenceNode !== null) {
28
- const referenceName = referenceNameFromReferenceNode(referenceNode),
29
- rule = proofContext.findRuleByReferenceName(referenceName);
30
-
31
- if (rule !== null) {
32
- ruleMatchesStatement = rule.matchStatement(statementNode, proofContext);
33
- }
34
- }
35
-
36
- if (ruleMatchesStatement) {
22
+ if (referenceNode === null) {
37
23
  const context = proofContext,
38
24
  statementVerified = verifyStatement(statementNode, assertions, derived, context);
39
25
 
40
26
  qualifiedStatementVerified = statementVerified; ///
27
+ } else {
28
+ const referenceName = referenceNameFromReferenceNode(referenceNode);
29
+
30
+ if (!qualifiedStatementVerified) {
31
+ const rule = proofContext.findRuleByReferenceName(referenceName);
32
+
33
+ if (rule !== null) {
34
+ const ruleMatchesStatement = rule.matchStatement(statementNode, proofContext);
35
+
36
+ qualifiedStatementVerified = ruleMatchesStatement; ///
37
+ }
38
+ }
39
+
40
+ if (!qualifiedStatementVerified) {
41
+ const axiom = proofContext.findAxiomByReferenceName(referenceName);
42
+
43
+ if (axiom !== null) {
44
+ const axiomMatchesStatement = axiom.matchStatement(statementNode, proofContext);
45
+
46
+ qualifiedStatementVerified = axiomMatchesStatement; ///
47
+ }
48
+ }
49
+
50
+ if (!qualifiedStatementVerified) {
51
+ const lemma = proofContext.findLemmaByReferenceName(referenceName);
52
+
53
+ if (lemma !== null) {
54
+ const lemmaMatchesStatement = lemma.matchStatement(statementNode, proofContext);
55
+
56
+ qualifiedStatementVerified = lemmaMatchesStatement; ///
57
+ }
58
+ }
59
+
60
+ if (!qualifiedStatementVerified) {
61
+ const theorem = proofContext.findTheoremByReferenceName(referenceName);
62
+
63
+ if (theorem !== null) {
64
+ const theoremMatchesStatement = theorem.matchStatement(statementNode, proofContext);
65
+
66
+ qualifiedStatementVerified = theoremMatchesStatement; ///
67
+ }
68
+ }
69
+
70
+ if (!qualifiedStatementVerified) {
71
+ const conjecture = proofContext.findConjectureByReferenceName(referenceName);
72
+
73
+ if (conjecture !== null) {
74
+ const conjectureMatchesStatement = conjecture.matchStatement(statementNode, proofContext);
75
+
76
+ qualifiedStatementVerified = conjectureMatchesStatement; ///
77
+ }
78
+ }
41
79
  }
42
80
  }
43
81
 
44
- qualifiedStatementVerified ?
45
- proofContext.complete(qualifiedStatementNode) :
46
- proofContext.halt(qualifiedStatementNode);
47
-
48
82
  return qualifiedStatementVerified;
49
83
  }
@@ -3,21 +3,18 @@
3
3
  import verifyStatement from "../statement";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
- import { nodeAsString } from "../../utilities/string";
7
6
 
8
7
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
9
8
 
10
9
  export default function verifyUnqualifiedStatement(unqualifiedStatementNode, assertions, derived, proofContext) {
11
10
  let unqualifiedStatementVerified = false;
12
11
 
13
- proofContext.begin(unqualifiedStatementNode);
14
-
15
12
  const statementNode = statementNodeQuery(unqualifiedStatementNode);
16
13
 
17
14
  if (statementNode !== null) {
18
15
  const statementString = proofContext.nodeAsString(statementNode);
19
16
 
20
- proofContext.debug(`Verifying the '${statementString}' unqualified statement...`);
17
+ proofContext.debug(`Verifying the '${statementString}' unqualified statement...`, unqualifiedStatementNode);
21
18
 
22
19
  let statementMatches = true;
23
20
 
@@ -33,9 +30,5 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
33
30
  }
34
31
  }
35
32
 
36
- unqualifiedStatementVerified ?
37
- proofContext.complete(unqualifiedStatementNode) :
38
- proofContext.halt(unqualifiedStatementNode);
39
-
40
33
  return unqualifiedStatementVerified;
41
34
  }