occam-verify-cli 0.0.918 → 0.0.920

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.
@@ -2,6 +2,8 @@
2
2
 
3
3
  import verifyJudgement from "../verify/judgement";
4
4
  import metaLevelNodeVerifier from "../verifier/node/metaLevel";
5
+ import verifyMetastatementAsDefinedAssertion from "./metastatementAsDefinedAssertion";
6
+ import verifyMetastatementAsContainedAssertion from "./metastatementAsContainedAssertion";
5
7
 
6
8
  import { nodeQuery } from "../utilities/query";
7
9
 
@@ -16,6 +18,8 @@ function verifyMetastatement(metastatementNode, assignments, derived, localConte
16
18
 
17
19
  const verifyMetaStatementFunctions = [
18
20
  verifyMetastatementAsJudgement,
21
+ verifyMetastatementAsDefinedAssertion,
22
+ verifyMetastatementAsContainedAssertion,
19
23
  verifyMetastatementAsIs
20
24
  ];
21
25
 
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
4
+
5
+ import { CONTAINED } from "../constants";
6
+ import { nodeQuery, nodesQuery } from "../utilities/query";
7
+ import { isMetastatementNegated } from "../utilities/verify";
8
+
9
+ const termNodeQuery = nodeQuery("/metastatement/term!"),
10
+ operatorTerminalNodesQuery = nodesQuery("/metastatement/@operator"),
11
+ metastatementTermNodesQuery = nodesQuery("/metastatement/metastatement//term");
12
+
13
+ export default function verifyMetastatementAsContainedAssertion(metastatementNode, assignments, derived, localContext) {
14
+ let metastatementVerifiedAsContainedAssertion;
15
+
16
+ const metastatementContainedAssertion = isMetastatementContainedAssertion(metastatementNode);
17
+
18
+ if (metastatementContainedAssertion) {
19
+ const metastatementString = localContext.nodeAsString(metastatementNode);
20
+
21
+ localContext.trace(`Verifying the '${metastatementString}' metastatement as a contained assertion...`, metastatementNode);
22
+
23
+ const metastatementFunctions = [
24
+ verifyMetastatementAsDerivedContainedAssertion,
25
+ verifyMetastatementAsStatedContainedAssertion
26
+ ];
27
+
28
+ metastatementVerifiedAsContainedAssertion = metastatementFunctions.some((metastatementFunction) => {
29
+ const metastatementVerifiedAsContainedAssertion = metastatementFunction(metastatementNode, assignments, derived, localContext);
30
+
31
+ if (metastatementVerifiedAsContainedAssertion) {
32
+ return true;
33
+ }
34
+ });
35
+
36
+ if (metastatementVerifiedAsContainedAssertion) {
37
+ localContext.debug(`...verified the '${metastatementString}' metastatement as a contained assertion.`, metastatementNode);
38
+ }
39
+ }
40
+
41
+ return metastatementVerifiedAsContainedAssertion;
42
+ }
43
+
44
+ function verifyMetastatementAsDerivedContainedAssertion(metastatementNode, assignments, derived, localContext) {
45
+ let metastatementVerifiedAsDefinedContainedAssertion = false;
46
+
47
+ if (derived) {
48
+ const metastatementString = localContext.nodeAsString(metastatementNode);
49
+
50
+ localContext.trace(`Verifying the derived '${metastatementString}' metastatement as a contained assertion...`, metastatementNode);
51
+
52
+ const metastatementNegated = isMetastatementNegated(metastatementNode),
53
+ negated = metastatementNegated,
54
+ termNode = termNodeQuery(metastatementNode),
55
+ metastatementTermNodes = metastatementTermNodesQuery(metastatementNode),
56
+ termNodeMatchesMetaArgumentTermNode = metastatementTermNodes.some((metastatementTermNode) => {
57
+ const termNodeMatchesMetaArgumentTermNode = termNode.match(metastatementTermNode);
58
+
59
+ if (termNodeMatchesMetaArgumentTermNode) {
60
+ return true;
61
+ }
62
+ });
63
+
64
+ if (!negated) {
65
+ if (termNodeMatchesMetaArgumentTermNode) {
66
+ metastatementVerifiedAsDefinedContainedAssertion = true;
67
+ }
68
+ }
69
+
70
+ if (negated) {
71
+ if (!termNodeMatchesMetaArgumentTermNode) {
72
+ metastatementVerifiedAsDefinedContainedAssertion = true;
73
+ }
74
+ }
75
+
76
+ if (metastatementVerifiedAsDefinedContainedAssertion) {
77
+ localContext.debug(`...verified the derived '${metastatementString}' metastatement as a contained assertion.`, metastatementNode);
78
+ }
79
+ }
80
+
81
+ return metastatementVerifiedAsDefinedContainedAssertion;
82
+ }
83
+
84
+ function verifyMetastatementAsStatedContainedAssertion(metastatementNode, assignments, derived, localContext) {
85
+ let metastatementVerifiedAsStatedContainedAssertion = false;
86
+
87
+ if (!derived) {
88
+ const metastatementString = localContext.nodeAsString(metastatementNode);
89
+
90
+ localContext.trace(`Verifying the stated '${metastatementString}' metastatement as a contained assertion...`, metastatementNode);
91
+
92
+ const intrinsicLevel = localContext.isIntrinsicLevel();
93
+
94
+ if (intrinsicLevel) {
95
+ localContext.debug(`The stated '${metastatementString}' metastatement as a contained assertion cannot be verified at intrinsic level.`, metastatementNode);
96
+ } else {
97
+ const nonTerminalNode = metastatementNode, ///
98
+ nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
99
+ const verifiedAhead = true;
100
+
101
+ return verifiedAhead;
102
+ });
103
+
104
+ metastatementVerifiedAsStatedContainedAssertion = nonTerminalNodeVerified; ///
105
+ }
106
+
107
+ if (metastatementVerifiedAsStatedContainedAssertion) {
108
+ localContext.debug(`...verified the stated '${metastatementString}' metastatement as a contained assertion.`, metastatementNode);
109
+ }
110
+ }
111
+
112
+ return metastatementVerifiedAsStatedContainedAssertion;
113
+ }
114
+
115
+ export function isMetastatementContainedAssertion(metastatementNode) {
116
+ const operatorTerminalNodes = operatorTerminalNodesQuery(metastatementNode),
117
+ metastatementContainedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
118
+ const content = operatorTerminalNode.getContent(),
119
+ contentContained = (content === CONTAINED);
120
+
121
+ if (contentContained) {
122
+ return true;
123
+ }
124
+ });
125
+
126
+ return metastatementContainedAssertion;
127
+ }
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ import verifyTerm from "./term";
4
+ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
5
+
6
+ import { first } from "../utilities/array";
7
+ import { DEFINED } from "../constants";
8
+ import { nodeQuery, nodesQuery } from "../utilities/query";
9
+ import { isMetastatementNegated } from "../utilities/verify";
10
+
11
+ const termNodeQuery = nodeQuery("/metastatement/term!"),
12
+ variableNodeQuery = nodeQuery("/metastatement/term/variable!"),
13
+ operatorTerminalNodesQuery = nodesQuery("/metastatement/@operator");
14
+
15
+ export default function verifyMetastatementAsDefinedAssertion(metastatementNode, assignments, derived, localContext) {
16
+ let metastatementVerifiedAsDefinedAssertion = false;
17
+
18
+ const metastatementDefinedAssertion = isMetastatementDefinedAssertion(metastatementNode);
19
+
20
+ if (metastatementDefinedAssertion) {
21
+ const metastatementString = localContext.nodeAsString(metastatementNode);
22
+
23
+ localContext.trace(`Verifying the '${metastatementString}' metastatement as a defined assertion...`, metastatementNode);
24
+
25
+ const definedAssertionFunctions = [
26
+ verifyDerivedMetastatementAsDefinedAssertion,
27
+ verifyStatedMetastatementAsDefinedAssertion
28
+ ];
29
+
30
+ metastatementVerifiedAsDefinedAssertion = definedAssertionFunctions.some((definedAssertionFunction) => {
31
+ const metastatementVerifiedAsDefinedAssertion = definedAssertionFunction(metastatementNode, assignments, derived, localContext);
32
+
33
+ if (metastatementVerifiedAsDefinedAssertion) {
34
+ return true;
35
+ }
36
+ });
37
+
38
+ if (metastatementVerifiedAsDefinedAssertion) {
39
+ localContext.debug(`...verified the '${metastatementString}' metastatement as a defined assertion.`, metastatementNode);
40
+ }
41
+ }
42
+
43
+ return metastatementVerifiedAsDefinedAssertion;
44
+ }
45
+
46
+ function verifyDerivedMetastatementAsDefinedAssertion(metastatementNode, assignments, derived, localContext) {
47
+ let derivedMetastatementVerifiedAsDefeindAssertion = false;
48
+
49
+ if (derived) {
50
+ const metastatementString = localContext.nodeAsString(metastatementNode);
51
+
52
+ localContext.trace(`Verifying the derived '${metastatementString}' metastatement as a defined assertion...`, metastatementNode);
53
+
54
+ const metastatementNegated = isMetastatementNegated(metastatementNode),
55
+ variableNode = variableNodeQuery(metastatementNode),
56
+ termNode = termNodeQuery(metastatementNode);
57
+
58
+ if (false) {
59
+ ///
60
+ } else if (variableNode !== null) {
61
+ const variable = localContext.findVariableByVariableNode(variableNode);
62
+
63
+ if (variable !== null) {
64
+ const variableDefined = localContext.isVariableDefined(variable);
65
+
66
+ if (!metastatementNegated) {
67
+ if (variableDefined) {
68
+ derivedMetastatementVerifiedAsDefeindAssertion = true;
69
+ }
70
+ }
71
+
72
+ if (metastatementNegated) {
73
+ if (!variableDefined) {
74
+ derivedMetastatementVerifiedAsDefeindAssertion = true;
75
+ }
76
+ }
77
+ }
78
+ } else if (termNode !== null) {
79
+ const terms = [],
80
+ termVerified = verifyTerm(termNode, terms, localContext, () => {
81
+ const verifiedAhead = true;
82
+
83
+ return verifiedAhead;
84
+ });
85
+
86
+ if (termVerified) {
87
+ const firstTerm = first(terms),
88
+ term = firstTerm, ///
89
+ termGrounded = localContext.isTermGrounded(term);
90
+
91
+ if (!metastatementNegated) {
92
+ if (termGrounded) {
93
+ derivedMetastatementVerifiedAsDefeindAssertion = true;
94
+ }
95
+ }
96
+
97
+ if (metastatementNegated) {
98
+ if (!termGrounded) {
99
+ derivedMetastatementVerifiedAsDefeindAssertion = true;
100
+ }
101
+ }
102
+ }
103
+ }
104
+
105
+ if (derivedMetastatementVerifiedAsDefeindAssertion) {
106
+ localContext.debug(`...verified the derived '${metastatementString}' metastatement as a defined assertion.`, metastatementNode);
107
+ }
108
+ }
109
+
110
+ return derivedMetastatementVerifiedAsDefeindAssertion;
111
+ }
112
+
113
+ function verifyStatedMetastatementAsDefinedAssertion(metastatementNode, assignments, derived, localContext) {
114
+ let statedMetastatementVerifiedAsDefinedAssertion = false;
115
+
116
+ if (!derived) {
117
+ const metastatementString = localContext.nodeAsString(metastatementNode);
118
+
119
+ localContext.trace(`Verifying the stated '${metastatementString}' metastatement as a defined assertion...`, metastatementNode);
120
+
121
+ const intrinsicLevel = localContext.isIntrinsicLevel();
122
+
123
+ if (intrinsicLevel) {
124
+ localContext.debug(`The stated '${metastatementString}' metastatement as a defined assertion cannot be verified at intrinsic level.`, metastatementNode);
125
+ } else {
126
+ const nonTerminalNode = metastatementNode, ///
127
+ nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
128
+ const verifiedAhead = true;
129
+
130
+ return verifiedAhead;
131
+ });
132
+
133
+ statedMetastatementVerifiedAsDefinedAssertion = nonTerminalNodeVerified; ///
134
+ }
135
+
136
+ if (statedMetastatementVerifiedAsDefinedAssertion) {
137
+ localContext.debug(`...verified the stated '${metastatementString}' metastatement as a defined assertion.`, metastatementNode);
138
+ }
139
+ }
140
+
141
+ return statedMetastatementVerifiedAsDefinedAssertion;
142
+ }
143
+
144
+ export function isMetastatementDefinedAssertion(metastatementNode) {
145
+ const operatorTerminalNodes = operatorTerminalNodesQuery(metastatementNode),
146
+ metastatementDefinedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
147
+ const content = operatorTerminalNode.getContent(),
148
+ contentDefined = (content === DEFINED);
149
+
150
+ if (contentDefined) {
151
+ return true;
152
+ }
153
+ });
154
+
155
+ return metastatementDefinedAssertion;
156
+ }
@@ -41,8 +41,7 @@ export default function verifyPremise(premiseNode, premises, localContext) {
41
41
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
42
42
 
43
43
  if (unqualifiedMetastatementVerified) {
44
- const localContext = localContext, ///
45
- assignmentAssigned = assignAssignment(assignments, localContext);
44
+ const assignmentAssigned = assignAssignment(assignments, localContext);
46
45
 
47
46
  premiseVerified = assignmentAssigned; ///
48
47
  }
@@ -7,12 +7,12 @@ import verifyStatementAsDefinedAssertion from "../verify/statementAsDefinedAsser
7
7
  import verifyStatementAsContainedAssertion from "../verify/statementAsContainedAssertion";
8
8
  import statementAgainstCombinatorNodesVerifier from "../verifier/nodes/statementAgainstCombinator";
9
9
 
10
- import { DEFINED, CONTAINED } from "../constants";
11
- import { nodeQuery, nodesQuery } from "../utilities/query";
10
+ import { nodeQuery } from "../utilities/query";
11
+ import { isStatementDefinedAssertion } from "../verify/statementAsDefinedAssertion";
12
+ import { isStatementContainedAssertion } from "../verify/statementAsContainedAssertion";
12
13
 
13
14
  const equalityNodeQuery = nodeQuery("/statement/equality!"),
14
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
15
- operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
15
+ typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!");
16
16
 
17
17
  function verifyStatement(statementNode, assignments, derived, localContext) {
18
18
  let statementVerified;
@@ -191,35 +191,7 @@ function isStatementEquality(statementNode) {
191
191
 
192
192
  function isStatementTypeAssertion(statementNode) {
193
193
  const typeAssertionNode = typeAssertionNodeQuery(statementNode),
194
- statementTypeAssertion = (typeAssertionNode === null);
194
+ statementTypeAssertion = (typeAssertionNode !== null);
195
195
 
196
196
  return statementTypeAssertion;
197
197
  }
198
-
199
- function isStatementDefinedAssertion(statementNode) {
200
- const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
201
- statementDefinedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
202
- const content = operatorTerminalNode.getContent(),
203
- contentDefined = (content === DEFINED);
204
-
205
- if (contentDefined) {
206
- return true;
207
- }
208
- });
209
-
210
- return statementDefinedAssertion;
211
- }
212
-
213
- function isStatementContainedAssertion(statementNode) {
214
- const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
215
- statementContainedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
216
- const content = operatorTerminalNode.getContent(),
217
- contentContained = (content === CONTAINED);
218
-
219
- if (contentContained) {
220
- return true;
221
- }
222
- });
223
-
224
- return statementContainedAssertion;
225
- }
@@ -2,34 +2,40 @@
2
2
 
3
3
  import metaLevelNodeVerifier from "../verifier/node/metaLevel";
4
4
 
5
- import { isAssertionNegated } from "../utilities/verify";
5
+ import { CONTAINED } from "../constants";
6
+ import { isStatementNegated } from "../utilities/verify";
6
7
  import { nodeQuery, nodesQuery } from "../utilities/query";
7
8
 
8
- const variableNodeQuery = nodeQuery("/statement/term/variable!"),
9
- metastatementVariableNodesQuery = nodesQuery("/statement/statement//variable");
9
+ const termNodeQuery = nodeQuery("/statement/term!"),
10
+ statementTermNodesQuery = nodesQuery("/statement/metaArgument/statement//term"),
11
+ operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
10
12
 
11
13
  export default function verifyStatementAsContainedAssertion(statementNode, assignments, derived, localContext) {
12
14
  let statementVerifiedAsContainedAssertion;
13
15
 
14
- const statementString = localContext.nodeAsString(statementNode);
16
+ const statementContainedAssertion = isStatementContainedAssertion(statementNode);
15
17
 
16
- localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`, statementNode);
18
+ if (statementContainedAssertion) {
19
+ const statementString = localContext.nodeAsString(statementNode);
20
+
21
+ localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`, statementNode);
17
22
 
18
- const statementFunctions = [
19
- verifyStatementAsDerivedContainedAssertion,
20
- verifyStatementAsStatedContainedAssertion
21
- ];
23
+ const statementFunctions = [
24
+ verifyStatementAsDerivedContainedAssertion,
25
+ verifyStatementAsStatedContainedAssertion
26
+ ];
22
27
 
23
- statementVerifiedAsContainedAssertion = statementFunctions.some((statementFunction) => {
24
- const statementVerifiedAsContainedAssertion = statementFunction(statementNode, assignments, derived, localContext);
28
+ statementVerifiedAsContainedAssertion = statementFunctions.some((statementFunction) => {
29
+ const statementVerifiedAsContainedAssertion = statementFunction(statementNode, assignments, derived, localContext);
30
+
31
+ if (statementVerifiedAsContainedAssertion) {
32
+ return true;
33
+ }
34
+ });
25
35
 
26
36
  if (statementVerifiedAsContainedAssertion) {
27
- return true;
37
+ localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`, statementNode);
28
38
  }
29
- });
30
-
31
- if (statementVerifiedAsContainedAssertion) {
32
- localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`, statementNode);
33
39
  }
34
40
 
35
41
  return statementVerifiedAsContainedAssertion;
@@ -43,32 +49,27 @@ function verifyStatementAsDerivedContainedAssertion(statementNode, assignments,
43
49
 
44
50
  localContext.trace(`Verifying the derived '${statementString}' statement as a contained assertion...`, statementNode);
45
51
 
46
- const statementNegated = isAssertionNegated(statementNode),
47
- variableNode = variableNodeQuery(statementNode),
48
- negated = statementNegated; ///
49
-
50
- if (false) {
51
- ///
52
- } else if (variableNode !== null) {
53
- const metastatementVariableNodes = metastatementVariableNodesQuery(statementNode),
54
- variableNodeMatchesMetaArgumentVariableNode = metastatementVariableNodes.some((metastatementVariableNode) => {
55
- const variableNodeMatchesMetaArgumentVariableNode = variableNode.match(metastatementVariableNode);
56
-
57
- if (variableNodeMatchesMetaArgumentVariableNode) {
58
- return true;
59
- }
60
- });
61
-
62
- if (!negated) {
63
- if (variableNodeMatchesMetaArgumentVariableNode) {
64
- statementVerifiedAsDefinedContainedAssertion = true;
65
- }
52
+ const statementNegated = isStatementNegated(statementNode),
53
+ termNode = termNodeQuery(statementNode),
54
+ negated = statementNegated, ///
55
+ statementTermNodes = statementTermNodesQuery(statementNode),
56
+ termNodeMatchesMetaArgumentVariableNode = statementTermNodes.some((statementTermNode) => {
57
+ const termNodeMatchesMetaArgumentVariableNode = termNode.match(statementTermNode);
58
+
59
+ if (termNodeMatchesMetaArgumentVariableNode) {
60
+ return true;
61
+ }
62
+ });
63
+
64
+ if (!negated) {
65
+ if (termNodeMatchesMetaArgumentVariableNode) {
66
+ statementVerifiedAsDefinedContainedAssertion = true;
66
67
  }
68
+ }
67
69
 
68
- if (negated) {
69
- if (!variableNodeMatchesMetaArgumentVariableNode) {
70
- statementVerifiedAsDefinedContainedAssertion = true;
71
- }
70
+ if (negated) {
71
+ if (!termNodeMatchesMetaArgumentVariableNode) {
72
+ statementVerifiedAsDefinedContainedAssertion = true;
72
73
  }
73
74
  }
74
75
 
@@ -110,3 +111,17 @@ function verifyStatementAsStatedContainedAssertion(statementNode, assignments, d
110
111
 
111
112
  return statementVerifiedAsStatedContainedAssertion;
112
113
  }
114
+
115
+ export function isStatementContainedAssertion(statementNode) {
116
+ const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
117
+ statementContainedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
118
+ const content = operatorTerminalNode.getContent(),
119
+ contentContained = (content === CONTAINED);
120
+
121
+ if (contentContained) {
122
+ return true;
123
+ }
124
+ });
125
+
126
+ return statementContainedAssertion;
127
+ }
@@ -4,34 +4,40 @@ import verifyTerm from "./term";
4
4
  import metaLevelNodeVerifier from "../verifier/node/metaLevel";
5
5
 
6
6
  import { first } from "../utilities/array";
7
- import { nodeQuery } from "../utilities/query";
7
+ import { DEFINED } from "../constants";
8
8
  import { isStatementNegated } from "../utilities/verify";
9
+ import { nodeQuery, nodesQuery } from "../utilities/query";
9
10
 
10
11
  const termNodeQuery = nodeQuery("/statement/term!"),
11
- variableNodeQuery = nodeQuery("/statement/term/variable!");
12
+ variableNodeQuery = nodeQuery("/statement/term/variable!"),
13
+ operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
12
14
 
13
15
  export default function verifyStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
14
- let statementVerifiedAsDefinedAssertion;
16
+ let statementVerifiedAsDefinedAssertion = false;
15
17
 
16
- const statementString = localContext.nodeAsString(statementNode);
18
+ const statementDefinedAssertion = isStatementDefinedAssertion(statementNode);
17
19
 
18
- localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, statementNode);
20
+ if (statementDefinedAssertion) {
21
+ const statementString = localContext.nodeAsString(statementNode);
22
+
23
+ localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, statementNode);
19
24
 
20
- const definedAssertionFunctions = [
21
- verifyDerivedStatementAsDefinedAssertion,
22
- verifyStatedStatementAsDefinedAssertion
23
- ];
25
+ const definedAssertionFunctions = [
26
+ verifyDerivedStatementAsDefinedAssertion,
27
+ verifyStatedStatementAsDefinedAssertion
28
+ ];
24
29
 
25
- statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some((definedAssertionFunction) => {
26
- const statementVerifiedAsDefinedAssertion = definedAssertionFunction(statementNode, assignments, derived, localContext);
30
+ statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some((definedAssertionFunction) => {
31
+ const statementVerifiedAsDefinedAssertion = definedAssertionFunction(statementNode, assignments, derived, localContext);
32
+
33
+ if (statementVerifiedAsDefinedAssertion) {
34
+ return true;
35
+ }
36
+ });
27
37
 
28
38
  if (statementVerifiedAsDefinedAssertion) {
29
- return true;
39
+ localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
30
40
  }
31
- });
32
-
33
- if (statementVerifiedAsDefinedAssertion) {
34
- localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
35
41
  }
36
42
 
37
43
  return statementVerifiedAsDefinedAssertion;
@@ -134,3 +140,17 @@ function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, der
134
140
 
135
141
  return statedStatementVerifiedAsDefinedAssertion;
136
142
  }
143
+
144
+ export function isStatementDefinedAssertion(statementNode) {
145
+ const operatorTerminalNodes = operatorTerminalNodesQuery(statementNode),
146
+ statementDefinedAssertion = operatorTerminalNodes.some((operatorTerminalNode) => {
147
+ const content = operatorTerminalNode.getContent(),
148
+ contentDefined = (content === DEFINED);
149
+
150
+ if (contentDefined) {
151
+ return true;
152
+ }
153
+ });
154
+
155
+ return statementDefinedAssertion;
156
+ }