occam-verify-cli 0.0.678 → 0.0.680

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 (141) hide show
  1. package/bin/action/verify.js +13 -3
  2. package/lib/axiomLemmaTheoremConjecture.js +3 -3
  3. package/lib/conclusion.js +16 -5
  4. package/lib/consequent.js +11 -3
  5. package/lib/context/file.js +73 -3
  6. package/lib/context/release.js +7 -2
  7. package/lib/equality.js +13 -199
  8. package/lib/premise.js +24 -7
  9. package/lib/supposition.js +15 -4
  10. package/lib/type.js +3 -8
  11. package/lib/utilities/array.js +5 -2
  12. package/lib/utilities/string.js +26 -13
  13. package/lib/verifier/node/metastatement.js +176 -0
  14. package/lib/verifier/node/statementAsCombinator.js +186 -0
  15. package/lib/verifier/node/termAsConstructor.js +224 -0
  16. package/lib/verifier/node.js +158 -0
  17. package/lib/verifier/nodes/equality.js +155 -0
  18. package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/conclusion.js +13 -12
  19. package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/premise.js +13 -12
  20. package/lib/verifier/nodes/metastatementForMetavariable.js +198 -0
  21. package/lib/verifier/nodes/statement.js +200 -0
  22. package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/conclusion.js +13 -12
  23. package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/premise.js +13 -12
  24. package/lib/verifier/nodes/statementForMetavariable.js +203 -0
  25. package/lib/verifier/nodes/term.js +210 -0
  26. package/lib/verifier/{termForVariable/supposition.js → nodes/termForVariable/consequent.js} +13 -12
  27. package/lib/verifier/{termForVariable/consequent.js → nodes/termForVariable/supposition.js} +13 -12
  28. package/lib/verifier/nodes/termForVariable.js +217 -0
  29. package/lib/verifier/nodes.js +175 -0
  30. package/lib/verify/axiom.js +3 -3
  31. package/lib/verify/conclusion.js +3 -3
  32. package/lib/verify/conjecture.js +3 -3
  33. package/lib/verify/consequent.js +3 -3
  34. package/lib/verify/declaration/combinator.js +7 -2
  35. package/lib/verify/declaration/constructor.js +8 -2
  36. package/lib/verify/declaration/metavariable.js +7 -2
  37. package/lib/verify/declaration/type.js +7 -2
  38. package/lib/verify/declaration/variable.js +8 -2
  39. package/lib/verify/file.js +3 -3
  40. package/lib/verify/label.js +9 -4
  41. package/lib/verify/lemma.js +3 -3
  42. package/lib/verify/metastatement/qualified.js +5 -6
  43. package/lib/verify/metastatement/unqualified.js +9 -7
  44. package/lib/verify/metastatement.js +36 -156
  45. package/lib/verify/metavariable.js +6 -4
  46. package/lib/verify/premise.js +3 -3
  47. package/lib/verify/release.js +3 -3
  48. package/lib/verify/rule.js +3 -3
  49. package/lib/verify/statement/qualified.js +5 -6
  50. package/lib/verify/statement/unqualified.js +9 -7
  51. package/lib/verify/statement.js +86 -332
  52. package/lib/verify/statementAsCombinator.js +8 -82
  53. package/lib/verify/supposition.js +3 -3
  54. package/lib/verify/term.js +79 -215
  55. package/lib/verify/termAsConstructor.js +15 -89
  56. package/lib/verify/terms.js +45 -0
  57. package/lib/verify/theorem.js +3 -3
  58. package/lib/verify/type.js +7 -5
  59. package/lib/verify/typeAssertion.js +124 -0
  60. package/lib/verify/variable.js +7 -5
  61. package/package.json +5 -5
  62. package/src/axiomLemmaTheoremConjecture.js +2 -2
  63. package/src/conclusion.js +13 -4
  64. package/src/consequent.js +9 -2
  65. package/src/context/file.js +9 -2
  66. package/src/context/release.js +9 -2
  67. package/src/equality.js +17 -143
  68. package/src/premise.js +23 -6
  69. package/src/supposition.js +12 -3
  70. package/src/type.js +3 -8
  71. package/src/utilities/array.js +1 -1
  72. package/src/utilities/string.js +34 -23
  73. package/src/verifier/node/metastatement.js +61 -0
  74. package/src/verifier/node/statementAsCombinator.js +80 -0
  75. package/src/verifier/node/termAsConstructor.js +124 -0
  76. package/src/verifier/node.js +85 -0
  77. package/src/verifier/nodes/equality.js +68 -0
  78. package/src/verifier/nodes/metastatementForMetavariable/conclusion.js +11 -0
  79. package/src/verifier/nodes/metastatementForMetavariable/premise.js +11 -0
  80. package/src/verifier/{metastatementForMetavariable.js → nodes/metastatementForMetavariable.js} +13 -13
  81. package/src/verifier/nodes/statement.js +100 -0
  82. package/src/verifier/nodes/statementForMetavariable/conclusion.js +11 -0
  83. package/src/verifier/nodes/statementForMetavariable/premise.js +11 -0
  84. package/src/verifier/{statementForMetavariable.js → nodes/statementForMetavariable.js} +10 -10
  85. package/src/verifier/nodes/term.js +106 -0
  86. package/src/verifier/nodes/termForVariable/consequent.js +11 -0
  87. package/src/verifier/nodes/termForVariable/supposition.js +11 -0
  88. package/src/verifier/{termForVariable.js → nodes/termForVariable.js} +42 -30
  89. package/src/verifier/nodes.js +111 -0
  90. package/src/verify/axiom.js +2 -2
  91. package/src/verify/conclusion.js +2 -2
  92. package/src/verify/conjecture.js +2 -2
  93. package/src/verify/consequent.js +2 -2
  94. package/src/verify/declaration/combinator.js +9 -1
  95. package/src/verify/declaration/constructor.js +15 -1
  96. package/src/verify/declaration/metavariable.js +9 -1
  97. package/src/verify/declaration/type.js +14 -1
  98. package/src/verify/declaration/variable.js +15 -1
  99. package/src/verify/file.js +2 -2
  100. package/src/verify/label.js +10 -2
  101. package/src/verify/lemma.js +4 -4
  102. package/src/verify/metastatement/qualified.js +4 -6
  103. package/src/verify/metastatement/unqualified.js +9 -7
  104. package/src/verify/metastatement.js +35 -56
  105. package/src/verify/metavariable.js +6 -3
  106. package/src/verify/premise.js +2 -2
  107. package/src/verify/release.js +2 -2
  108. package/src/verify/rule.js +2 -2
  109. package/src/verify/statement/qualified.js +4 -6
  110. package/src/verify/statement/unqualified.js +9 -7
  111. package/src/verify/statement.js +109 -302
  112. package/src/verify/statementAsCombinator.js +9 -129
  113. package/src/verify/supposition.js +2 -2
  114. package/src/verify/term.js +99 -156
  115. package/src/verify/termAsConstructor.js +20 -135
  116. package/src/verify/terms.js +54 -0
  117. package/src/verify/theorem.js +2 -2
  118. package/src/verify/type.js +7 -4
  119. package/src/verify/typeAssertion.js +164 -0
  120. package/src/verify/variable.js +7 -4
  121. package/lib/node/statement/combinator/equality.js +0 -21
  122. package/lib/ocmbinator/equality.js +0 -126
  123. package/lib/tokens/statement/combinator/equality.js +0 -17
  124. package/lib/verifier/metastatementForMetavariable.js +0 -198
  125. package/lib/verifier/statementForMetavariable.js +0 -203
  126. package/lib/verifier/termForVariable.js +0 -209
  127. package/lib/verifier.js +0 -138
  128. package/lib/verify/assertion/type.js +0 -115
  129. package/lib/verify/typeInference.js +0 -132
  130. package/src/node/statement/combinator/equality.js +0 -9
  131. package/src/ocmbinator/equality.js +0 -23
  132. package/src/tokens/statement/combinator/equality.js +0 -10
  133. package/src/verifier/metastatementForMetavariable/conclusion.js +0 -9
  134. package/src/verifier/metastatementForMetavariable/premise.js +0 -9
  135. package/src/verifier/statementForMetavariable/conclusion.js +0 -9
  136. package/src/verifier/statementForMetavariable/premise.js +0 -9
  137. package/src/verifier/termForVariable/consequent.js +0 -9
  138. package/src/verifier/termForVariable/supposition.js +0 -9
  139. package/src/verifier.js +0 -74
  140. package/src/verify/assertion/type.js +0 -153
  141. package/src/verify/typeInference.js +0 -146
@@ -1,80 +1,59 @@
1
1
  "use strict";
2
2
 
3
- import Verifier from "../verifier";
3
+ import metastatementNodeVerifier from "../verifier/node/metastatement";
4
4
 
5
- import { METAVARIABLE_RULE_NAME } from "../ruleNames";
6
- import { metavariableNameFromMetavariableNode } from "../utilities/query";
5
+ function verifyMetastatement(metastatementNode, derived, metaproofContext) {
6
+ let metastatementVerified;
7
7
 
8
- class MetastatementVerifier extends Verifier {
9
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, metaproofContext) {
10
- let nonTerminalNodeVerified = false;
11
-
12
- const nonTerminalNode = nonTerminalNodeA, ///
13
- ruleName = nonTerminalNode.getRuleName(); ///
14
-
15
- switch (ruleName) {
16
- case METAVARIABLE_RULE_NAME: {
17
- const metavariableNode = nonTerminalNode, ///
18
- metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode, metaproofContext);
19
-
20
- nonTerminalNodeVerified = metavariableNodeVerified; ///
8
+ const metastatementString = metaproofContext.nodeAsString(metastatementNode);
21
9
 
22
- break;
23
- }
10
+ metaproofContext.trace(`Verifying the '${metastatementString}' metastatement...`, metastatementNode);
24
11
 
25
- default: {
26
- const childNodes = nonTerminalNode.getChildNodes(),
27
- nodesA = childNodes, ///
28
- nodesB = childNodes, ///
29
- nodesVerified = this.verifyNodes(nodesA, nodesB, metaproofContext);
12
+ const verifyMetastatementFunctions = [
13
+ verifyStandaloneMetastatement
14
+ ];
30
15
 
31
- nonTerminalNodeVerified = nodesVerified; ///
16
+ metastatementVerified = verifyMetastatementFunctions.some((verifyStatementFunction) => {
17
+ const metastatementVerified = verifyStatementFunction(metastatementNode, derived, metaproofContext);
32
18
 
33
- break;
34
- }
19
+ if (metastatementVerified) {
20
+ return true;
35
21
  }
22
+ });
36
23
 
37
- return nonTerminalNodeVerified;
24
+ if (metastatementVerified) {
25
+ metaproofContext.debug(`...verified the '${metastatementString}' metastatement.`, metastatementNode);
38
26
  }
39
27
 
40
- verifyMetavariableNode(metavariableNode, metaproofContext) {
41
- let metavariableNodeVerified = false;
28
+ return metastatementVerified;
29
+ }
42
30
 
43
- const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
44
- metavariablePresent = metaproofContext.isMetavariablePresentByMetavariableName(metavariableName);
31
+ Object.assign(verifyMetastatement, {
32
+ metastatementNodeVerifier
33
+ });
45
34
 
46
- if (!metavariablePresent) {
47
- const metavariableString = metaproofContext.nodeAsString(metavariableNode);
35
+ export default verifyMetastatement;
48
36
 
49
- metaproofContext.error(`The '${metavariableString}' metavariable is not present.`, metavariableNode);
50
- } else {
51
- metavariableNodeVerified = true;
52
- }
37
+ function verifyStandaloneMetastatement(metastatementNode, derived, metaproofContext) {
38
+ let standaloneMetastatementVerified;
53
39
 
54
- return metavariableNodeVerified;
55
- }
56
- }
57
-
58
- export const metastatementVerifier = new MetastatementVerifier();
40
+ const metastatementString = metaproofContext.nodeAsString(metastatementNode);
59
41
 
60
- export default function verifyMetastatement(metastatementNode, derived, metaproofContext) {
61
- let metastatementVerified = false;
42
+ metaproofContext.trace(`Verifying the '${metastatementString}' standalone metastatement...`, metastatementNode);
62
43
 
63
- const metastatementString = metaproofContext.nodeAsString(metastatementNode);
44
+ const nonTerminalNode = metastatementNode, ///
45
+ nonTerminalNodeVerified = metastatementNodeVerifier.verifyNonTerminalNode(nonTerminalNode, metaproofContext, () => {
46
+ const verifiedAhead = true;
64
47
 
65
- metaproofContext.debug(`Verifying the '${metastatementString}' metastatement...`, metastatementNode);
48
+ return verifiedAhead;
49
+ });
66
50
 
67
- if (!metastatementVerified) {
68
- const nonTerminalNodeA = metastatementNode, ///
69
- nonTerminalNodeB = metastatementNode, ///
70
- nonTerminalNodeVerified = metastatementVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, metaproofContext);
51
+ standaloneMetastatementVerified = nonTerminalNodeVerified; ///
71
52
 
72
- metastatementVerified = nonTerminalNodeVerified; ///
53
+ if (standaloneMetastatementVerified) {
54
+ metaproofContext.debug(`...verified the '${metastatementString}' standalone metastatement.`, metastatementNode);
73
55
  }
74
56
 
75
- if (metastatementVerified) {
76
- metaproofContext.debug(`Verified the '${metastatementString}' metastatement.`, metastatementNode);
77
- }
57
+ return standaloneMetastatementVerified;
78
58
 
79
- return metastatementVerified;
80
- }
59
+ }
@@ -7,12 +7,15 @@ import { metaTypeNameFromMetaTypeNode, metavariableNameFromMetavariableNode } fr
7
7
  export default function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
8
8
  let metavariableVerified = false;
9
9
 
10
+ const metavariableString = fileContext.nodeAsString(metavariableNode);
11
+
12
+ fileContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
13
+
10
14
  const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
11
- metavariableString = fileContext.nodeAsString(metavariableNode),
12
15
  metavariablePresent = fileContext.isMetavariablePresentByMetavariableName(metavariableName);
13
16
 
14
17
  if (metavariablePresent) {
15
- fileContext.error(`The metavariable '${metavariableName}' is already present.`, metavariableNode);
18
+ fileContext.debug(`The metavariable '${metavariableName}' is already present.`, metavariableNode);
16
19
  } else {
17
20
  const metaTypeName = metaTypeNameFromMetaTypeNode(metaTypeNode),
18
21
  metaType = fileContext.findMetaTypeByMetaTypeName(metaTypeName),
@@ -25,7 +28,7 @@ export default function verifyMetavariable(metavariableNode, metaTypeNode, fileC
25
28
  }
26
29
 
27
30
  if (metavariableVerified) {
28
- fileContext.info(`Verified the '${metavariableString}' metavariable.`, metavariableNode);
31
+ fileContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
29
32
  }
30
33
 
31
34
  return metavariableVerified;
@@ -14,7 +14,7 @@ export default function verifyPremise(premiseNode, premises, metaproofContext) {
14
14
 
15
15
  const premiseString = metaproofContext.nodeAsString(premiseNode);
16
16
 
17
- metaproofContext.debug(`Verifying the '${premiseString}' premise...`, premiseNode);
17
+ metaproofContext.trace(`Verifying the '${premiseString}' premise...`, premiseNode);
18
18
 
19
19
  const derived = false,
20
20
  unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode),
@@ -33,7 +33,7 @@ export default function verifyPremise(premiseNode, premises, metaproofContext) {
33
33
  }
34
34
 
35
35
  if (premiseVerified) {
36
- metaproofContext.info(`Verified the '${premiseString}' premise.`, premiseNode);
36
+ metaproofContext.debug(`...verified the '${premiseString}' premise.`, premiseNode);
37
37
  }
38
38
 
39
39
  return premiseVerified;
@@ -16,7 +16,7 @@ export default function verifyRelease(releaseName, releaseContextMap) {
16
16
  if (verified) {
17
17
  releaseVerified = true;
18
18
  } else {
19
- releaseContext.debug(`Verifying '${releaseName}'...`);
19
+ releaseContext.info(`Verifying the '${releaseName}' project...`);
20
20
 
21
21
  const releaseFilesVerified = verifyReleaseFiles(releaseContext);
22
22
 
@@ -29,7 +29,7 @@ export default function verifyRelease(releaseName, releaseContextMap) {
29
29
  }
30
30
 
31
31
  if (releaseVerified) {
32
- releaseContext.info(`Verified '${releaseName}'.`);
32
+ releaseContext.info(`...verified the '${releaseName}' project.`);
33
33
  }
34
34
  }
35
35
  }
@@ -22,7 +22,7 @@ export default function verifyRule(ruleNode, fileContext) {
22
22
  labelsString = fileContext.nodesAsString(labelNodes),
23
23
  metaProofContext = MetaproofContext.fromFileContext(fileContext);
24
24
 
25
- fileContext.debug(`Verifying the '${labelsString}' rule...`, ruleNode);
25
+ fileContext.trace(`Verifying the '${labelsString}' rule...`, ruleNode);
26
26
 
27
27
  const labels = [],
28
28
  labelsVerified = verifyLabels(labelNodes, labels, fileContext);
@@ -66,7 +66,7 @@ export default function verifyRule(ruleNode, fileContext) {
66
66
  }
67
67
 
68
68
  if (ruleVerified) {
69
- fileContext.info(`Verified the '${labelsString}' rule.`, ruleNode);
69
+ fileContext.debug(`...verified the '${labelsString}' rule.`, ruleNode);
70
70
  }
71
71
 
72
72
  return ruleVerified;
@@ -14,7 +14,7 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
14
14
  const statementString = proofContext.nodeAsString(statementNode),
15
15
  statementProofContext = proofContext; ///
16
16
 
17
- proofContext.debug(`Verifying the '${statementString}' qualified statement...`, qualifiedStatementNode);
17
+ proofContext.trace(`Verifying the '${statementString}' qualified statement...`, qualifiedStatementNode);
18
18
 
19
19
  const referenceNode = referenceNodeQuery(qualifiedStatementNode),
20
20
  referenceName = referenceNameFromReferenceNode(referenceNode);
@@ -68,12 +68,10 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
68
68
  qualifiedStatementVerified = conjectureMatchesStatement; ///
69
69
  }
70
70
  }
71
- }
72
-
73
- if (qualifiedStatementVerified) {
74
- const statementString = proofContext.nodeAsString(statementNode);
75
71
 
76
- proofContext.info(`Verified the '${statementString}' qualified statement.`, qualifiedStatementNode);
72
+ if (qualifiedStatementVerified) {
73
+ proofContext.debug(`...verified the '${statementString}' qualified statement.`, qualifiedStatementNode);
74
+ }
77
75
  }
78
76
 
79
77
  return qualifiedStatementVerified;
@@ -14,7 +14,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
14
14
  if (statementNode !== null) {
15
15
  const statementString = proofContext.nodeAsString(statementNode);
16
16
 
17
- proofContext.debug(`Verifying the '${statementString}' unqualified statement...`, unqualifiedStatementNode);
17
+ proofContext.trace(`Verifying the '${statementString}' unqualified statement...`, unqualifiedStatementNode);
18
18
 
19
19
  if (derived) {
20
20
  const statementMatches = proofContext.matchStatement(statementNode);
@@ -24,16 +24,18 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
24
24
 
25
25
  if (!unqualifiedStatementVerified) {
26
26
  const context = proofContext, ///
27
- statementVerified = verifyStatement(statementNode, assignments, derived, context);
27
+ statementVerified = verifyStatement(statementNode, assignments, derived, context, () => {
28
+ const verifiedAhead = true;
29
+
30
+ return verifiedAhead;
31
+ });
28
32
 
29
33
  unqualifiedStatementVerified = statementVerified; ///
30
34
  }
31
- }
32
35
 
33
- if (unqualifiedStatementVerified) {
34
- const statementString = proofContext.nodeAsString(statementNode);
35
-
36
- proofContext.info(`Verified the '${statementString}' unqualified statement.`, unqualifiedStatementNode);
36
+ if (unqualifiedStatementVerified) {
37
+ proofContext.debug(`...verified the '${statementString}' unqualified statement.`, unqualifiedStatementNode);
38
+ }
37
39
  }
38
40
 
39
41
  return unqualifiedStatementVerified;