occam-verify-cli 0.0.967 → 0.0.971

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 (146) hide show
  1. package/bin/action/verify.js +6 -22
  2. package/bin/main.js +27 -0
  3. package/lib/constants.js +5 -1
  4. package/lib/context/file.js +48 -53
  5. package/lib/context/local.js +45 -39
  6. package/lib/context/release.js +3 -3
  7. package/lib/declaration.js +9 -7
  8. package/lib/equivalence.js +23 -21
  9. package/lib/judgement.js +3 -3
  10. package/lib/label.js +3 -3
  11. package/lib/log.js +3 -3
  12. package/lib/metaType.js +7 -7
  13. package/lib/metavariable.js +12 -43
  14. package/lib/node/term/bracketed.js +16 -0
  15. package/lib/proofStep.js +3 -29
  16. package/lib/releaseContext/initialise.js +11 -17
  17. package/lib/resolve/substitutions.js +99 -0
  18. package/lib/rule.js +10 -6
  19. package/lib/substitution/statementForMetavariable.js +93 -98
  20. package/lib/substitution/termForVariable.js +45 -54
  21. package/lib/substitution.js +51 -9
  22. package/lib/substitutions.js +165 -12
  23. package/lib/term.js +8 -1
  24. package/lib/topLevelAssertion.js +10 -6
  25. package/lib/type.js +5 -5
  26. package/lib/unifier/metaLevel.js +10 -3
  27. package/lib/unifier/statementWithCombinator.js +6 -6
  28. package/lib/unifier.js +2 -2
  29. package/lib/unify/metavariableWithStatement.js +13 -48
  30. package/lib/unify/metavariableWithStatementGivenSubstitution.js +39 -0
  31. package/lib/unify/premiseWithProofStep.js +3 -3
  32. package/lib/unify/statement/qualified.js +117 -0
  33. package/lib/unify/statement/unqualified.js +25 -0
  34. package/lib/unify/statementWithBracketedCombinator.js +3 -3
  35. package/lib/unify/statementWithCombinators.js +5 -5
  36. package/lib/unify/statementWithMetaType.js +3 -3
  37. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +45 -0
  38. package/lib/unify/suppositionWithProffStep.js +3 -3
  39. package/lib/unify/variableWithTerm.js +11 -26
  40. package/lib/utilities/array.js +5 -14
  41. package/lib/utilities/assertion.js +24 -0
  42. package/lib/utilities/brackets.js +60 -0
  43. package/lib/utilities/message.js +52 -0
  44. package/lib/utilities/name.js +7 -7
  45. package/lib/utilities/node.js +10 -17
  46. package/lib/utilities/string.js +1 -7
  47. package/lib/utilities/subproof.js +19 -0
  48. package/lib/utilities/unify.js +30 -11
  49. package/lib/variable.js +8 -8
  50. package/lib/verifier/metaLevel.js +6 -6
  51. package/lib/verifier/statementAsCombinator.js +2 -2
  52. package/lib/verify/assertion/contained.js +62 -34
  53. package/lib/verify/assertion/defined.js +53 -48
  54. package/lib/verify/assertion/subproof.js +9 -9
  55. package/lib/verify/assertion/type.js +11 -11
  56. package/lib/verify/conclusion.js +6 -6
  57. package/lib/verify/consequent.js +6 -6
  58. package/lib/verify/declaration/metavariable.js +2 -2
  59. package/lib/verify/declaration.js +34 -20
  60. package/lib/verify/equality.js +13 -13
  61. package/lib/verify/frame.js +38 -24
  62. package/lib/verify/judgement.js +13 -13
  63. package/lib/verify/metavariable.js +2 -2
  64. package/lib/verify/premise.js +5 -5
  65. package/lib/verify/proofStep.js +15 -24
  66. package/lib/verify/statement/qualified.js +15 -124
  67. package/lib/verify/statement/unqualified.js +23 -24
  68. package/lib/verify/statement.js +24 -24
  69. package/lib/verify/statementGivenMetaType.js +18 -9
  70. package/lib/verify/supposition.js +5 -5
  71. package/package.json +2 -2
  72. package/src/constants.js +1 -0
  73. package/src/context/file.js +49 -55
  74. package/src/context/local.js +34 -31
  75. package/src/context/release.js +2 -2
  76. package/src/declaration.js +12 -10
  77. package/src/equivalence.js +27 -26
  78. package/src/judgement.js +2 -2
  79. package/src/label.js +2 -2
  80. package/src/log.js +1 -1
  81. package/src/metaType.js +7 -7
  82. package/src/metavariable.js +10 -49
  83. package/src/node/term/bracketed.js +9 -0
  84. package/src/proofStep.js +3 -48
  85. package/src/releaseContext/initialise.js +13 -24
  86. package/src/resolve/substitutions.js +134 -0
  87. package/src/rule.js +10 -5
  88. package/src/substitution/statementForMetavariable.js +99 -85
  89. package/src/substitution/termForVariable.js +50 -65
  90. package/src/substitution.js +46 -8
  91. package/src/substitutions.js +176 -10
  92. package/src/term.js +6 -0
  93. package/src/topLevelAssertion.js +10 -5
  94. package/src/type.js +4 -4
  95. package/src/unifier/metaLevel.js +11 -3
  96. package/src/unifier/statementWithCombinator.js +5 -5
  97. package/src/unifier.js +1 -1
  98. package/src/unify/metavariableWithStatement.js +17 -71
  99. package/src/unify/metavariableWithStatementGivenSubstitution.js +39 -0
  100. package/src/unify/premiseWithProofStep.js +1 -1
  101. package/src/unify/statement/qualified.js +183 -0
  102. package/src/unify/statement/unqualified.js +24 -0
  103. package/src/unify/statementWithBracketedCombinator.js +2 -2
  104. package/src/unify/statementWithCombinators.js +4 -4
  105. package/src/unify/statementWithMetaType.js +2 -2
  106. package/src/unify/statementWithSttaemetnGivenEquivalences.js +51 -0
  107. package/src/unify/suppositionWithProffStep.js +1 -1
  108. package/src/unify/variableWithTerm.js +14 -35
  109. package/src/utilities/array.js +1 -16
  110. package/src/utilities/assertion.js +19 -0
  111. package/src/utilities/brackets.js +56 -0
  112. package/src/utilities/name.js +8 -8
  113. package/src/utilities/node.js +14 -17
  114. package/src/utilities/string.js +2 -2
  115. package/src/utilities/subproof.js +18 -0
  116. package/src/utilities/unify.js +24 -12
  117. package/src/variable.js +11 -11
  118. package/src/verifier/metaLevel.js +5 -5
  119. package/src/verifier/statementAsCombinator.js +2 -2
  120. package/src/verify/assertion/contained.js +80 -40
  121. package/src/verify/assertion/defined.js +66 -57
  122. package/src/verify/assertion/subproof.js +8 -8
  123. package/src/verify/assertion/type.js +11 -11
  124. package/src/verify/conclusion.js +8 -8
  125. package/src/verify/consequent.js +8 -8
  126. package/src/verify/declaration/metavariable.js +4 -3
  127. package/src/verify/declaration.js +46 -23
  128. package/src/verify/equality.js +13 -13
  129. package/src/verify/frame.js +48 -28
  130. package/src/verify/judgement.js +13 -13
  131. package/src/verify/metavariable.js +3 -3
  132. package/src/verify/premise.js +6 -6
  133. package/src/verify/proofStep.js +14 -31
  134. package/src/verify/statement/qualified.js +18 -199
  135. package/src/verify/statement/unqualified.js +25 -31
  136. package/src/verify/statement.js +23 -23
  137. package/src/verify/statementGivenMetaType.js +23 -12
  138. package/src/verify/supposition.js +6 -6
  139. package/lib/unify/statementAtainstStatement.js +0 -49
  140. package/lib/utilities/lineIndex.js +0 -52
  141. package/lib/utilities/match.js +0 -59
  142. package/lib/utilities/verify.js +0 -19
  143. package/src/unify/statementAtainstStatement.js +0 -56
  144. package/src/utilities/match.js +0 -53
  145. package/src/utilities/verify.js +0 -14
  146. /package/src/utilities/{lineIndex.js → message.js} +0 -0
@@ -1,33 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyTerm from "../../verify/term";
4
+ import metaLevelVerifier from "../../verifier/metaLevel";
4
5
 
5
6
  import { first } from "../../utilities/array";
6
7
  import { nodeQuery } from "../../utilities/query";
7
- import { isAssertionNegated } from "../../utilities/verify";
8
+ import { isAssertionNegated } from "../../utilities/assertion";
8
9
 
9
- const termNodeQuery = nodeQuery("/statement/term!"),
10
- variableNodeQuery = nodeQuery("/statement/term/variable!");
10
+ const variableNodeQuery = nodeQuery("/definedAssertion/variable!"),
11
+ metavariableNodeQuery = nodeQuery("/definedAssertion/metavariable!");
11
12
 
12
- export default function verifyDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
13
+ const verifyDefinedAssertionFunctions = [
14
+ verifyDerivedDefinedAssertion,
15
+ verifyStatedDefinedAssertion
16
+ ];
17
+
18
+ export default function verifyDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
13
19
  let definedAssertionVerified;
14
20
 
15
21
  const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
16
22
 
17
23
  localContext.trace(`Verifying the '${definedAssertionString}' defined assertion...`, definedAssertionNode);
18
24
 
19
- const verifyDefinedAssertionFunctions = [
20
- verifyDerivedDefinedAssertion,
21
- verifyStatedDefinedAssertion
22
- ];
25
+ assignments = []; ///
23
26
 
24
- definedAssertionVerified = verifyDefinedAssertionFunctions.some((verifyDefinedAssertionFunction) => {
25
- const definedAssertionVerified = verifyDefinedAssertionFunction(definedAssertionNode, assignments, derived, localContext);
27
+ const verified = metaLevelVerifier.verify(definedAssertionNode, assignments, stated, localContext);
26
28
 
27
- if (definedAssertionVerified) {
28
- return true;
29
- }
30
- });
29
+ if (verified) {
30
+ definedAssertionVerified = verifyDefinedAssertionFunctions.some((verifyDefinedAssertionFunction) => {
31
+ const definedAssertionVerified = verifyDefinedAssertionFunction(definedAssertionNode, assignments, stated, localContext);
32
+
33
+ if (definedAssertionVerified) {
34
+ return true;
35
+ }
36
+ });
37
+ }
31
38
 
32
39
  if (definedAssertionVerified) {
33
40
  localContext.debug(`...verified the '${definedAssertionString}' defined assertion.`, definedAssertionNode);
@@ -36,61 +43,48 @@ export default function verifyDefinedAssertion(definedAssertionNode, assignments
36
43
  return definedAssertionVerified;
37
44
  }
38
45
 
39
- function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
46
+ function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
40
47
  let derivedDefinedAssertionVerified = false;
41
48
 
42
- if (derived) {
49
+ if (!stated) {
43
50
  const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
44
51
 
45
52
  localContext.trace(`Verifying the '${definedAssertionString}' derived defined assertion...`, definedAssertionNode);
46
53
 
47
- const statementNegated = isAssertionNegated(definedAssertionNode),
48
- variableNode = variableNodeQuery(definedAssertionNode),
49
- termNode = termNodeQuery(definedAssertionNode);
54
+ const assertionNegated = isAssertionNegated(definedAssertionNode),
55
+ metavariableNode = metavariableNodeQuery(definedAssertionNode),
56
+ variableNode = variableNodeQuery(definedAssertionNode);
50
57
 
51
58
  if (false) {
52
59
  ///
53
- } else if (variableNode !== null) {
54
- const variable = localContext.findVariableByVariableNode(variableNode);
55
-
56
- if (variable !== null) {
57
- const variableDefined = localContext.isVariableDefined(variable);
60
+ } else if (metavariableNode !== null) {
61
+ const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode),
62
+ metavariableDefined = localContext.isMetavariableDefined(metavariable);
58
63
 
59
- if (!statementNegated) {
60
- if (variableDefined) {
61
- derivedDefinedAssertionVerified = true;
62
- }
64
+ if (!assertionNegated) {
65
+ if (metavariableDefined) {
66
+ derivedDefinedAssertionVerified = true;
63
67
  }
68
+ }
64
69
 
65
- if (statementNegated) {
66
- if (!variableDefined) {
67
- derivedDefinedAssertionVerified = true;
68
- }
70
+ if (assertionNegated) {
71
+ if (!metavariableDefined) {
72
+ derivedDefinedAssertionVerified = true;
69
73
  }
70
74
  }
71
- } else if (termNode !== null) {
72
- const terms = [],
73
- termVerified = verifyTerm(termNode, terms, localContext, () => {
74
- const verifiedAhead = true;
75
-
76
- return verifiedAhead;
77
- });
78
-
79
- if (termVerified) {
80
- const firstTerm = first(terms),
81
- term = firstTerm, ///
82
- termGrounded = localContext.isTermGrounded(term);
83
-
84
- if (!statementNegated) {
85
- if (termGrounded) {
86
- derivedDefinedAssertionVerified = true;
87
- }
75
+ } else if (variableNode !== null) {
76
+ const variable = localContext.findVariableByVariableNode(variableNode),
77
+ variableDefined = localContext.isVariableDefined(variable);
78
+
79
+ if (!assertionNegated) {
80
+ if (variableDefined) {
81
+ derivedDefinedAssertionVerified = true;
88
82
  }
83
+ }
89
84
 
90
- if (statementNegated) {
91
- if (!termGrounded) {
92
- derivedDefinedAssertionVerified = true;
93
- }
85
+ if (assertionNegated) {
86
+ if (!variableDefined) {
87
+ derivedDefinedAssertionVerified = true;
94
88
  }
95
89
  }
96
90
  }
@@ -103,15 +97,15 @@ function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, derive
103
97
  return derivedDefinedAssertionVerified;
104
98
  }
105
99
 
106
- function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
107
- let statedDefinedAssertionVerified = false;
100
+ function verifyStatedDefinedAssertion(definedAssertionNode, assignments, stated, localContext) {
101
+ let statedDefinedAssertionVerified;
108
102
 
109
- if (!derived) {
103
+ if (stated) {
110
104
  const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
111
105
 
112
106
  localContext.trace(`Verifying the '${definedAssertionString}' stated defined assertion...`, definedAssertionNode);
113
107
 
114
- debugger
108
+ statedDefinedAssertionVerified = true;
115
109
 
116
110
  if (statedDefinedAssertionVerified) {
117
111
  localContext.debug(`...verified the '${definedAssertionString}' stated defined assertion.`, definedAssertionNode);
@@ -120,3 +114,18 @@ function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived
120
114
 
121
115
  return statedDefinedAssertionVerified;
122
116
  }
117
+
118
+ function termFromTermNode(termNode, localContext) {
119
+ const terms = [];
120
+
121
+ verifyTerm(termNode, terms, localContext, () => {
122
+ const verifiedAhead = true;
123
+
124
+ return verifiedAhead;
125
+ });
126
+
127
+ const firstTerm = first(terms),
128
+ term = firstTerm; ///
129
+
130
+ return term;
131
+ }
@@ -7,18 +7,18 @@ const verifySubproofAssertionFunctions = [
7
7
  verifyStatedSubproofAssertion
8
8
  ];
9
9
 
10
- export default function verifySubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
11
- let subproofAssertionVerified;
10
+ export default function verifySubproofAssertion(subproofAssertionNode, assignments, stated, localContext) {
11
+ let subproofAssertionVerified = false;
12
12
 
13
13
  const subproofAssertionString = localContext.nodeAsString(subproofAssertionNode);
14
14
 
15
15
  localContext.trace(`Verifying the '${subproofAssertionString}' subproof assertion...`, subproofAssertionNode);
16
16
 
17
- const verified = metaLevelVerifier.verify(subproofAssertionNode, assignments, derived, localContext);
17
+ const verified = metaLevelVerifier.verify(subproofAssertionNode, assignments, stated, localContext);
18
18
 
19
19
  if (verified) {
20
20
  subproofAssertionVerified = verifySubproofAssertionFunctions.some((verifySubproofAssertionFunction) => {
21
- const subproofAssertionVerified = verifySubproofAssertionFunction(subproofAssertionNode, assignments, derived, localContext);
21
+ const subproofAssertionVerified = verifySubproofAssertionFunction(subproofAssertionNode, assignments, stated, localContext);
22
22
 
23
23
  if (subproofAssertionVerified) {
24
24
  return true;
@@ -33,10 +33,10 @@ export default function verifySubproofAssertion(subproofAssertionNode, assignmen
33
33
  return subproofAssertionVerified;
34
34
  }
35
35
 
36
- function verifyDerivedSubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
36
+ function verifyDerivedSubproofAssertion(subproofAssertionNode, assignments, stated, localContext) {
37
37
  let derivedSubproofAssertionVerified;
38
38
 
39
- if (derived) {
39
+ if (!stated) {
40
40
  const subproofAssertionString = localContext.nodeAsString(subproofAssertionNode);
41
41
 
42
42
  localContext.trace(`Verifying the '${subproofAssertionString}' derived subproof assertion...`, subproofAssertionNode);
@@ -49,10 +49,10 @@ function verifyDerivedSubproofAssertion(subproofAssertionNode, assignments, deri
49
49
  return derivedSubproofAssertionVerified;
50
50
  }
51
51
 
52
- function verifyStatedSubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
52
+ function verifyStatedSubproofAssertion(subproofAssertionNode, assignments, stated, localContext) {
53
53
  let statedSubproofAssertionVerified;
54
54
 
55
- if (!derived) {
55
+ if (stated) {
56
56
  const subproofAssertionString = localContext.nodeAsString(subproofAssertionNode);
57
57
 
58
58
  localContext.trace(`Verifying the '${subproofAssertionString}' stated subproof assertion...`, subproofAssertionNode);
@@ -11,20 +11,20 @@ const termNodeQuery = nodeQuery("/typeAssertion/term!"),
11
11
  typeNodeQuery = nodeQuery("/typeAssertion/type!"),
12
12
  variableNodeQuery = nodeQuery("/term/variable!");
13
13
 
14
- export default function verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext) {
14
+ const verifyTypeAssertionFunctions = [
15
+ verifyDerivedTypeAssertion,
16
+ verifyStatedTypeAssertion
17
+ ];
18
+
19
+ export default function verifyTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
15
20
  let typeAssertionVerified;
16
21
 
17
22
  const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
18
23
 
19
24
  localContext.trace(`Verifying the '${typeAssertionString}' type assertion...`, typeAssertionNode);
20
25
 
21
- const verifyTypeAssertionFunctions = [
22
- verifyDerivedTypeAssertion,
23
- verifyStatedTypeAssertion
24
- ];
25
-
26
26
  typeAssertionVerified = verifyTypeAssertionFunctions.some((verifyTypeAssertionFunction) => {
27
- const typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, derived, localContext);
27
+ const typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, stated, localContext);
28
28
 
29
29
  if (typeAssertionVerified) {
30
30
  return true;
@@ -38,10 +38,10 @@ export default function verifyTypeAssertion(typeAssertionNode, assignments, deri
38
38
  return typeAssertionVerified;
39
39
  }
40
40
 
41
- function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, localContext) {
41
+ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
42
42
  let derivedTypeAssertionVerified = false;
43
43
 
44
- if (derived) {
44
+ if (!stated) {
45
45
  const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
46
46
 
47
47
  localContext.trace(`Verifying the '${typeAssertionString}' derived type assertion...`, typeAssertionNode);
@@ -82,10 +82,10 @@ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, loc
82
82
  return derivedTypeAssertionVerified;
83
83
  }
84
84
 
85
- function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, localContext) {
85
+ function verifyStatedTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
86
86
  let statedTypeAssertionVerified = false;
87
87
 
88
- if (!derived) {
88
+ if (stated) {
89
89
  const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
90
90
 
91
91
  localContext.trace(`Verifying the '${typeAssertionString}' stated type assertion...`, typeAssertionNode);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Conclusion from "../conclusion";
4
- import verifyUnqualifiedStatement from "../verify/statement/unqualified";
4
+ import verifyStatement from "../verify/statement";
5
5
 
6
6
  import { nodeQuery } from "../utilities/query";
7
7
 
@@ -15,16 +15,16 @@ export default function verifyConclusion(conclusionNode, conclusions, localConte
15
15
 
16
16
  localContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
17
17
 
18
- const derived = false,
19
- assignments = [],
20
- unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode);
18
+ const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode);
21
19
 
22
20
  if (unqualifiedStatementNode !== null) {
23
- const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
21
+ const stated = true,
22
+ assignments = [],
23
+ statementNode = statementNodeQuery(unqualifiedStatementNode),
24
+ statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
24
25
 
25
- if (unqualifiedStatementVerified) {
26
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
27
- conclusion = Conclusion.fromStatementNode(statementNode);
26
+ if (statementVerified) {
27
+ const conclusion = Conclusion.fromStatementNode(statementNode);
28
28
 
29
29
  conclusions.push(conclusion);
30
30
 
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Consequent from "../consequent";
4
- import verifyUnqualifiedStatement from "../verify/statement/unqualified";
4
+ import verifyStatement from "../verify/statement";
5
5
 
6
6
  import { nodeQuery } from "../utilities/query";
7
7
 
@@ -15,16 +15,16 @@ export default function verifyConsequent(consequentNode, consequents, localConte
15
15
 
16
16
  localContext.trace(`Verifying the '${consequentString}' consequent...`, consequentNode);
17
17
 
18
- const derived = false,
19
- assignments = [],
20
- unqualifiedStatementNode = unqualifiedStatementNodeQuery(consequentNode);
18
+ const unqualifiedStatementNode = unqualifiedStatementNodeQuery(consequentNode);
21
19
 
22
20
  if (unqualifiedStatementNode !== null) {
23
- const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
21
+ const stated = true,
22
+ assignments = [],
23
+ statementNode = statementNodeQuery(unqualifiedStatementNode),
24
+ statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
24
25
 
25
- if (unqualifiedStatementVerified) {
26
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
27
- consequent = Consequent.fromStatementNode(statementNode);
26
+ if (statementVerified) {
27
+ const consequent = Consequent.fromStatementNode(statementNode);
28
28
 
29
29
  consequents.push(consequent);
30
30
 
@@ -5,7 +5,7 @@ import MetavariableAssignment from "../../assignment/metavariable";
5
5
 
6
6
  import { first } from "../../utilities/array";
7
7
  import { nodeQuery } from "../../utilities/query";
8
- import { nameFromMetavariableNode } from "../../utilities/name";
8
+ import { metavariableNameFromMetavariableNode } from "../../utilities/name";
9
9
 
10
10
  const termNodeQuery = nodeQuery("/argument/term"),
11
11
  typeNodeQuery = nodeQuery("/argument/type"),
@@ -70,8 +70,9 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
70
70
  termType = firstTermType; ///
71
71
  }
72
72
 
73
- const node = metavariableNode, ///
74
- name = nameFromMetavariableNode(metavariableNode),
73
+ const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
74
+ node = metavariableNode, ///
75
+ name = metavariableName, ///
75
76
  metavariable = Metavariable.fromNodeNameTermTypeAndMetaType(node, name, termType, metaType),
76
77
  metavariableAssignment = MetavariableAssignment.fromMetavariable(metavariable),
77
78
  metavariableAssigned = metavariableAssignment.assign(fileContext);
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "../shim";
3
4
  import Declaration from "../declaration"
4
5
  import referenceMetaType from "../metaType/reference";
5
6
 
@@ -8,20 +9,20 @@ import { nodeQuery } from "../utilities/query";
8
9
  const statementNodeQuery = nodeQuery("/declaration/statement!"),
9
10
  metavariableNodeQuery = nodeQuery("/declaration/metavariable!");
10
11
 
11
- export default function verifyDeclaration(declarationNode, assignments, derived, localContext) {
12
+ const verifyDeclarationFunctions = [
13
+ verifyDerivedDeclaration,
14
+ verifyStatedDeclaration
15
+ ];
16
+
17
+ export default function verifyDeclaration(declarationNode, declarations, stated, localContext) {
12
18
  let declarationVerified;
13
19
 
14
20
  const declarationString = localContext.nodeAsString(declarationNode);
15
21
 
16
22
  localContext.trace(`Verifying the '${declarationString}' declaration...`, declarationNode);
17
23
 
18
- const verifyDeclarationFunctions = [
19
- verifyDerivedDeclaration,
20
- verifyStatedDeclaration
21
- ];
22
-
23
24
  declarationVerified = verifyDeclarationFunctions.some((verifyDeclarationFunction) => {
24
- const declarationVerified = verifyDeclarationFunction(declarationNode, assignments, derived, localContext);
25
+ const declarationVerified = verifyDeclarationFunction(declarationNode, declarations, stated, localContext);
25
26
 
26
27
  if (declarationVerified) {
27
28
  return true;
@@ -35,32 +36,54 @@ export default function verifyDeclaration(declarationNode, assignments, derived,
35
36
  return declarationVerified;
36
37
  }
37
38
 
38
- function verifyStatedDeclaration(declarationNode, declarations, localContext) {
39
- let statedDeclarationVerified = false;
39
+ function verifyDerivedDeclaration(declarationNode, declarations, stated, localContext) {
40
+ let derivedDeclarationVerified;
40
41
 
41
- const declarationString = localContext.nodeAsString(declarationNode);
42
+ if (!stated) {
43
+ const declarationString = localContext.nodeAsString(declarationNode);
42
44
 
43
- localContext.trace(`Verifying the '${declarationString}' stated declaration...`, declarationNode);
45
+ localContext.trace(`Verifying the '${declarationString}' derived declaration...`, declarationNode);
44
46
 
45
- const metavariableNode = metavariableNodeQuery(declarationNode),
46
- metavariableVerified = verifyMetavariable(metavariableNode, localContext);
47
+ debugger
47
48
 
48
- if (metavariableVerified) {
49
- const statementNode = statementNodeQuery(declarationNode);
49
+ if (derivedDeclarationVerified) {
50
+ localContext.debug(`...verified the '${declarationString}' derived declaration.`, declarationNode);
51
+ }
52
+ }
50
53
 
51
- debugger
54
+ return derivedDeclarationVerified;
55
+ }
56
+
57
+ function verifyStatedDeclaration(declarationNode, declarations, stated, localContext) {
58
+ let statedDeclarationVerified = false;
59
+
60
+ if (stated) {
61
+ const declarationString = localContext.nodeAsString(declarationNode);
62
+
63
+ localContext.trace(`Verifying the '${declarationString}' stated declaration...`, declarationNode);
52
64
 
53
- if (statementVerified) {
54
- const declaration = Declaration.fromMetavariableNodeAndStatementNode(metavariableNode, statementNode);
65
+ const metavariableNode = metavariableNodeQuery(declarationNode),
66
+ metavariableVerified = verifyMetavariable(metavariableNode, localContext);
55
67
 
56
- declarations.push(declaration);
68
+ if (metavariableVerified) {
69
+ const { verifyStatement } = shim,
70
+ stated = true,
71
+ assignments = [],
72
+ statementNode = statementNodeQuery(declarationNode),
73
+ statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
57
74
 
58
- statedDeclarationVerified = true;
75
+ if (statementVerified) {
76
+ const declaration = Declaration.fromMetavariableNodeAndStatementNode(metavariableNode, statementNode);
77
+
78
+ declarations.push(declaration);
79
+
80
+ statedDeclarationVerified = true;
81
+ }
59
82
  }
60
- }
61
83
 
62
- if (statedDeclarationVerified) {
63
- localContext.debug(`...verified the '${declarationString}' stated declaration.`, declarationNode);
84
+ if (statedDeclarationVerified) {
85
+ localContext.debug(`...verified the '${declarationString}' stated declaration.`, declarationNode);
86
+ }
64
87
  }
65
88
 
66
89
  return statedDeclarationVerified;
@@ -8,20 +8,20 @@ import { nodesQuery } from "../utilities/query";
8
8
 
9
9
  const termNodesQuery = nodesQuery("/equality/term");
10
10
 
11
- export default function verifyEquality(equalityNode, assignments, derived, localContext) {
11
+ const verifyEqualityFunctions = [
12
+ verifyDerivedEquality,
13
+ verifyStatedEquality
14
+ ];
15
+
16
+ export default function verifyEquality(equalityNode, assignments, stated, localContext) {
12
17
  let equalityVerified;
13
18
 
14
19
  const equalityString = localContext.nodeAsString(equalityNode);
15
20
 
16
21
  localContext.trace(`Verifying the '${equalityString}' equality...`, equalityNode);
17
22
 
18
- const verifyEqualityFunctions = [
19
- verifyDerivedEquality,
20
- verifyStatedEquality
21
- ];
22
-
23
23
  equalityVerified = verifyEqualityFunctions.some((verifyEqualityFunction) => {
24
- const equalityVerified = verifyEqualityFunction(equalityNode, assignments, derived, localContext);
24
+ const equalityVerified = verifyEqualityFunction(equalityNode, assignments, stated, localContext);
25
25
 
26
26
  if (equalityVerified) {
27
27
  return true;
@@ -35,13 +35,13 @@ export default function verifyEquality(equalityNode, assignments, derived, local
35
35
  return equalityVerified;
36
36
  }
37
37
 
38
- function verifyDerivedEquality(equalityNode, assignments, derived, localContext) {
38
+ function verifyDerivedEquality(equalityNode, assignments, stated, localContext) {
39
39
  let derivedEqualityVerified = false;
40
40
 
41
- if (derived) {
41
+ if (!stated) {
42
42
  const equalityString = localContext.nodeAsString(equalityNode);
43
43
 
44
- localContext.trace(`Verifying the '${equalityString}' derived equality...`, equalityNode);
44
+ localContext.trace(`Verifying the '${equalityString}' stated equality...`, equalityNode);
45
45
 
46
46
  const terms = [],
47
47
  termNodes = termNodesQuery(equalityNode),
@@ -69,17 +69,17 @@ function verifyDerivedEquality(equalityNode, assignments, derived, localContext)
69
69
  derivedEqualityVerified = termsVerified; ///
70
70
 
71
71
  if (derivedEqualityVerified) {
72
- localContext.debug(`...verified the '${equalityString}' derived equality.`, equalityNode);
72
+ localContext.debug(`...verified the '${equalityString}' stated equality.`, equalityNode);
73
73
  }
74
74
  }
75
75
 
76
76
  return derivedEqualityVerified;
77
77
  }
78
78
 
79
- function verifyStatedEquality(equalityNode, assignments, derived, localContext) {
79
+ function verifyStatedEquality(equalityNode, assignments, stated, localContext) {
80
80
  let statedEqualityVerified = false;
81
81
 
82
- if (!derived) {
82
+ if (stated) {
83
83
  const equalityString = localContext.nodeAsString(equalityNode);
84
84
 
85
85
  localContext.trace(`Verifying the '${equalityString}' stated equality...`, equalityNode);
@@ -10,20 +10,20 @@ import { nodesQuery } from "../utilities/query";
10
10
  const declarationNodesQuery = nodesQuery("/frame/declaration"),
11
11
  metavariableNodesQuery = nodesQuery("/frame/metavariable");
12
12
 
13
- export default function verifyFrame(frameNode, assignments, derived, localContext) {
13
+ const verifyFrameFunctions = [
14
+ verifyDerivedFrame,
15
+ verifyStatedFrame
16
+ ];
17
+
18
+ export default function verifyFrame(frameNode, frames, stated, localContext) {
14
19
  let frameVerified;
15
20
 
16
21
  const frameString = localContext.nodeAsString(frameNode);
17
22
 
18
23
  localContext.trace(`Verifying the '${frameString}' frame...`, frameNode);
19
24
 
20
- const verifyFrameFunctions = [
21
- verifyDerivedFrame,
22
- verifyStatedFrame
23
- ];
24
-
25
25
  frameVerified = verifyFrameFunctions.some((verifyFrameFunction) => {
26
- const frameVerified = verifyFrameFunction(frameNode, assignments, derived, localContext);
26
+ const frameVerified = verifyFrameFunction(frameNode, frames, stated, localContext);
27
27
 
28
28
  if (frameVerified) {
29
29
  return true;
@@ -37,37 +37,57 @@ export default function verifyFrame(frameNode, assignments, derived, localContex
37
37
  return frameVerified;
38
38
  }
39
39
 
40
- function verifyStatedFrame(frameNode, frames, assignments, derived, localContext) {
40
+ function verifyDerivedFrame(frameNode, frames, stated, localContext) {
41
+ let derivedFrameVerified;
42
+
43
+ if (!stated) {
44
+ const frameString = localContext.nodeAsString(frameNode);
45
+
46
+ localContext.trace(`Verifying the '${frameString}' derived frame...`, frameNode);
47
+
48
+ debugger
49
+
50
+ if (derivedFrameVerified) {
51
+ localContext.debug(`...verified the '${frameString}' derived frame.`, frameNode);
52
+ }
53
+ }
54
+
55
+ return derivedFrameVerified;
56
+ }
57
+
58
+ function verifyStatedFrame(frameNode, frames, stated, localContext) {
41
59
  let statedFrameVerified;
42
60
 
43
- const frameString = localContext.nodeAsString(frameNode);
61
+ if (stated) {
62
+ const frameString = localContext.nodeAsString(frameNode);
44
63
 
45
- localContext.trace(`Verifying the '${frameString}' stated frame...`, frameNode);
64
+ localContext.trace(`Verifying the '${frameString}' stated frame...`, frameNode);
46
65
 
47
- const declarations = [],
48
- declarationNodes = declarationNodesQuery(frameNode),
49
- metavariableNodes = metavariableNodesQuery(frameNode),
50
- declarationsVerified = declarationNodes.every((declarationNode) => {
51
- const declarationVerified = verifyDeclaration(declarationNode, declarations, localContext);
66
+ const declarations = [],
67
+ declarationNodes = declarationNodesQuery(frameNode),
68
+ metavariableNodes = metavariableNodesQuery(frameNode),
69
+ declarationsVerified = declarationNodes.every((declarationNode) => {
70
+ const declarationVerified = verifyDeclaration(declarationNode, declarations, stated, localContext);
52
71
 
53
- return declarationVerified;
54
- }),
55
- metavariablesVerified = metavariableNodes.every((metavariableNode) => {
56
- const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localContext);
72
+ return declarationVerified;
73
+ }),
74
+ metavariablesVerified = metavariableNodes.every((metavariableNode) => {
75
+ const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localContext);
57
76
 
58
- return metavariableVerified;
59
- });
77
+ return metavariableVerified;
78
+ });
60
79
 
61
- if (declarationsVerified && metavariablesVerified) {
62
- const frame = Frame.fromDeclarations(declarations);
80
+ if (declarationsVerified && metavariablesVerified) {
81
+ const frame = Frame.fromDeclarations(declarations);
63
82
 
64
- frames.push(frame);
83
+ frames.push(frame);
65
84
 
66
- statedFrameVerified = true;
67
- }
85
+ statedFrameVerified = true;
86
+ }
68
87
 
69
- if (statedFrameVerified) {
70
- localContext.debug(`...verified the '${frameString}' stated frame.`, frameNode);
88
+ if (statedFrameVerified) {
89
+ localContext.debug(`...verified the '${frameString}' stated frame.`, frameNode);
90
+ }
71
91
  }
72
92
 
73
93
  return statedFrameVerified;