occam-verify-cli 0.0.982 → 0.0.984

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 (53) hide show
  1. package/lib/constants.js +5 -1
  2. package/lib/constructor/bracketed.js +2 -2
  3. package/lib/context/local.js +9 -9
  4. package/lib/frame.js +32 -29
  5. package/lib/judgement.js +4 -4
  6. package/lib/node/frame/bracketed.js +16 -0
  7. package/lib/node/statement/combinator/bracketed.js +3 -3
  8. package/lib/node/term/constructor/bracketed.js +3 -3
  9. package/lib/ocmbinator/bracketed.js +2 -2
  10. package/lib/ruleNames.js +11 -7
  11. package/lib/substitution/frameForMetavariable.js +252 -0
  12. package/lib/substitution/statementForMetavariable.js +9 -20
  13. package/lib/tokens/combinatorFrame/bracketed.js +17 -0
  14. package/lib/tokens/combinatorStatement/bracketed.js +17 -0
  15. package/lib/tokens/constructorTerm/bracketed.js +17 -0
  16. package/lib/utilities/brackets.js +22 -3
  17. package/lib/utilities/node.js +26 -22
  18. package/lib/utilities/tokens.js +18 -11
  19. package/lib/verify/assertion/contained.js +37 -34
  20. package/lib/verify/assertion/defined.js +27 -35
  21. package/lib/verify/declaration.js +3 -3
  22. package/lib/verify/frame.js +9 -8
  23. package/lib/verify/judgement.js +7 -12
  24. package/lib/verify/metavariableGivenMetaType.js +3 -6
  25. package/package.json +2 -2
  26. package/src/constants.js +1 -0
  27. package/src/constructor/bracketed.js +1 -1
  28. package/src/context/local.js +11 -12
  29. package/src/frame.js +31 -27
  30. package/src/judgement.js +1 -1
  31. package/src/node/frame/bracketed.js +9 -0
  32. package/src/node/statement/combinator/bracketed.js +3 -3
  33. package/src/node/term/constructor/bracketed.js +3 -3
  34. package/src/ocmbinator/bracketed.js +2 -2
  35. package/src/ruleNames.js +3 -2
  36. package/src/substitution/frameForMetavariable.js +183 -0
  37. package/src/substitution/statementForMetavariable.js +9 -24
  38. package/src/tokens/combinatorFrame/bracketed.js +10 -0
  39. package/src/tokens/combinatorStatement/bracketed.js +10 -0
  40. package/src/tokens/constructorTerm/bracketed.js +10 -0
  41. package/src/utilities/brackets.js +25 -1
  42. package/src/utilities/node.js +27 -28
  43. package/src/utilities/tokens.js +15 -10
  44. package/src/verify/assertion/contained.js +48 -45
  45. package/src/verify/assertion/defined.js +31 -46
  46. package/src/verify/declaration.js +8 -10
  47. package/src/verify/frame.js +11 -19
  48. package/src/verify/judgement.js +17 -26
  49. package/src/verify/metavariableGivenMetaType.js +2 -6
  50. package/lib/tokens/constructorDeclaration/bracketed.js +0 -17
  51. package/lib/tokens/unqualifiedStatement/combinator/bracketed.js +0 -17
  52. package/src/tokens/constructorDeclaration/bracketed.js +0 -10
  53. package/src/tokens/unqualifiedStatement/combinator/bracketed.js +0 -10
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ import Substitution from "../substitution";
4
+ import TermForVariableSubstitution from "../substitution/termForVariable";
5
+
6
+ import { nodeQuery } from "../utilities/query";
7
+ import { stripBracketsFromFrame } from "../utilities/brackets";
8
+
9
+ const frameNodeQuery = nodeQuery("/substitution/frame!"),
10
+ substitutionMetavariableNodeQuery = nodeQuery("/substitution/metavariable!"),
11
+ frameStatementMetavariableNodeQuery = nodeQuery("/frame/statement/metavariable!");
12
+
13
+ export default class FrameForMetavariableSubstitution extends Substitution {
14
+ constructor(frameNode, metavariableNode, substitution) {
15
+ super();
16
+
17
+ this.frameNode = frameNode;
18
+ this.metavariableNode = metavariableNode;
19
+ this.substitution = substitution;
20
+ }
21
+
22
+ getFrameNode() {
23
+ return this.frameNode;
24
+ }
25
+
26
+ getMetavariableNode() {
27
+ return this.metavariableNode;
28
+ }
29
+
30
+ getSubstitution() {
31
+ return this.substitution;
32
+ }
33
+
34
+ getNode() {
35
+ const node = this.frameNode; ///
36
+
37
+ return node;
38
+ }
39
+
40
+ isSimple() {
41
+ const simple = (this.substitution === null);
42
+
43
+ return simple;
44
+ }
45
+
46
+ transformed(substitutions) {
47
+ let transformedSubstitution = null;
48
+
49
+ const transformedFrameNode = transformFrameNode(this.frameNode, substitutions);
50
+
51
+ if (transformedFrameNode !== null) {
52
+ const substitution = null,
53
+ frameNode = transformedFrameNode, ///
54
+ metavariableNode = this.metavariableNode, ///
55
+ frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
56
+
57
+ transformedSubstitution = frameForMetavariableSubstitution; ///
58
+ }
59
+
60
+ return transformedSubstitution;
61
+ }
62
+
63
+ matchFrameNode(frameNode) {
64
+ frameNode = stripBracketsFromFrame(frameNode); ///
65
+
66
+ const frameNodeMatches = this.frameNode.match(frameNode);
67
+
68
+ return frameNodeMatches;
69
+ }
70
+
71
+ matchMetavariableNode(metavariableNode) {
72
+ const metavariableNodeMatches = this.metavariableNode.match(metavariableNode);
73
+
74
+ return metavariableNodeMatches;
75
+ }
76
+
77
+ matchMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode) {
78
+ const metavariableNodeAndSubstitutionNodeMatches = false;
79
+
80
+ return metavariableNodeAndSubstitutionNodeMatches;
81
+ }
82
+
83
+ asString(localContextA, localContextB) {
84
+ let string;
85
+
86
+ const frameNodeB = this.frameNode, ///
87
+ frameStringB = localContextB.nodeAsString(frameNodeB),
88
+ metavariableNodeA = this.metavariableNode, ///
89
+ metavariableStringA = localContextA.nodeAsString(metavariableNodeA);
90
+
91
+ if (this.substitution === null) {
92
+ string = `[${frameStringB} for ${metavariableStringA}]`;
93
+ } else {
94
+ const substitutionString = this.substitution.asString(localContextA, localContextA);
95
+
96
+ string = `[${frameStringB} for ${metavariableStringA}${substitutionString}]`;
97
+ }
98
+
99
+ return string;
100
+ }
101
+
102
+ static fromSubstitutionNode(substitutionNode) {
103
+ let frameForMetavariableSubstitution = null;
104
+
105
+ let frameNode = frameNodeQuery(substitutionNode);
106
+
107
+ if (frameNode !== null) {
108
+ frameNode = stripBracketsFromFrame(frameNode); ///
109
+
110
+ const substitutionMetavariableNode = substitutionMetavariableNodeQuery(substitutionNode),
111
+ metavariableNode = substitutionMetavariableNode, ///
112
+ substitution = null;
113
+
114
+ frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
115
+ }
116
+
117
+ return frameForMetavariableSubstitution;
118
+ }
119
+
120
+ static fromFrameNodeAndMetavariableNode(frameNode, metavariableNode) {
121
+ frameNode = stripBracketsFromFrame(frameNode); ///
122
+
123
+ const substitution = null,
124
+ frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
125
+
126
+ return frameForMetavariableSubstitution;
127
+ }
128
+
129
+ static fromFrameNodeMetavariableNodeAndSubstitutionNode(frameNode, metavariableNode, substitutionNode) {
130
+ frameNode = stripBracketsFromFrame(frameNode); ///
131
+
132
+ const substitution = substitutionFromSubstitutionNode(substitutionNode),
133
+ frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode, substitution);
134
+
135
+ return frameForMetavariableSubstitution;
136
+ }
137
+ }
138
+
139
+ function substitutionFromSubstitutionNode(substitutionNode) {
140
+ let substitution = null;
141
+
142
+ if (substitution === null) {
143
+ const termForVariableSubstitution = TermForVariableSubstitution.fromSubstitutionNode(substitutionNode);
144
+
145
+ if (termForVariableSubstitution !== null) {
146
+ substitution = termForVariableSubstitution; ///
147
+ }
148
+ }
149
+
150
+ if (substitution === null) {
151
+ const frameForMetavariableSubstitution = FrameForMetavariableSubstitution.fromSubstitutionNode(substitutionNode);
152
+
153
+ if (frameForMetavariableSubstitution !== null) {
154
+ substitution = frameForMetavariableSubstitution; ///
155
+ }
156
+ }
157
+
158
+ return substitution;
159
+ }
160
+
161
+ function transformFrameNode(frameNode, substitutions) {
162
+ let transformedFrameNode = null;
163
+
164
+ const frameStatementMetavariableNode = frameStatementMetavariableNodeQuery(frameNode);
165
+
166
+ if (frameStatementMetavariableNode !== null) {
167
+ const metavariableNode = frameStatementMetavariableNode; ///
168
+
169
+ substitutions.someSubstitution((substitution) => {
170
+ const substitutionMatchesVariableNode = substitution.matchMetavariableNode(metavariableNode);
171
+
172
+ if (substitutionMatchesVariableNode) {
173
+ const frameNode = substitution.getFrameNode();
174
+
175
+ transformedFrameNode = frameNode; ////
176
+
177
+ return true;
178
+ }
179
+ });
180
+ }
181
+
182
+ return transformedFrameNode;
183
+ }
@@ -2,12 +2,12 @@
2
2
 
3
3
  import Substitution from "../substitution";
4
4
  import TermForVariableSubstitution from "../substitution/termForVariable";
5
+ import FrameForMetavariableSubstitution from "../substitution/frameForMetavariable";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
7
8
  import { stripBracketsFromStatement } from "../utilities/brackets";
8
9
 
9
- const statementNodeQuery = nodeQuery("/substitution/statement!"),
10
- metavariableNodeQuery = nodeQuery("/*/metavariable!");
10
+ const statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
11
11
 
12
12
  export default class StatementForMetavariableSubstitution extends Substitution {
13
13
  constructor(statementNode, metavariableNode, substitution) {
@@ -98,23 +98,6 @@ export default class StatementForMetavariableSubstitution extends Substitution {
98
98
  return string;
99
99
  }
100
100
 
101
- static fromSubstitutionNode(substitutionNode) {
102
- let statementForMetavariableSubstitution = null;
103
-
104
- let statementNode = statementNodeQuery(substitutionNode),
105
- metavariableNode = metavariableNodeQuery(substitutionNode);
106
-
107
- if (statementNode !== null) {
108
- statementNode = stripBracketsFromStatement(statementNode); ///
109
-
110
- const substitution = null;
111
-
112
- statementForMetavariableSubstitution = new StatementForMetavariableSubstitution(statementNode, metavariableNode, substitution);
113
- }
114
-
115
- return statementForMetavariableSubstitution;
116
- }
117
-
118
101
  static fromStatementNodeAndMetavariableNode(statementNode, metavariableNode) {
119
102
  statementNode = stripBracketsFromStatement(statementNode); ///
120
103
 
@@ -146,10 +129,10 @@ function substitutionFromSubstitutionNode(substitutionNode) {
146
129
  }
147
130
 
148
131
  if (substitution === null) {
149
- const statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromSubstitutionNode(substitutionNode);
132
+ const frameForMetavariableSubstitution = FrameForMetavariableSubstitution.fromSubstitutionNode(substitutionNode);
150
133
 
151
- if (statementForMetavariableSubstitution !== null) {
152
- substitution = statementForMetavariableSubstitution; ///
134
+ if (frameForMetavariableSubstitution !== null) {
135
+ substitution = frameForMetavariableSubstitution; ///
153
136
  }
154
137
  }
155
138
 
@@ -159,9 +142,11 @@ function substitutionFromSubstitutionNode(substitutionNode) {
159
142
  function transformStatementNode(statementNode, substitutions) {
160
143
  let transformedStatementNode = null;
161
144
 
162
- const metavariableNode = metavariableNodeQuery(statementNode);
145
+ const statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
146
+
147
+ if (statementMetavariableNode !== null) {
148
+ const metavariableNode = statementMetavariableNode; ///
163
149
 
164
- if (metavariableNode !== null) {
165
150
  substitutions.someSubstitution((substitution) => {
166
151
  const substitutionMatchesVariableNode = substitution.matchMetavariableNode(metavariableNode);
167
152
 
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { FRAME_META_TYPE_NAME } from "../../metaTypeNames";
4
+ import { fromTokensFromFrameString } from "../../utilities/tokens";
5
+
6
+ const bracketedCombinatorFrameString = `(${FRAME_META_TYPE_NAME})`;
7
+
8
+ const bracketedCombinatorFrameTokens = fromTokensFromFrameString(bracketedCombinatorFrameString)
9
+
10
+ export default bracketedCombinatorFrameTokens;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { STATEMENT_META_TYPE_NAME } from "../../metaTypeNames";
4
+ import { statementTokensFromStatementString } from "../../utilities/tokens";
5
+
6
+ const bracketedCombinatorStatementString = `(${STATEMENT_META_TYPE_NAME})`;
7
+
8
+ const bracketedCombinatorStatementTokens = statementTokensFromStatementString(bracketedCombinatorStatementString)
9
+
10
+ export default bracketedCombinatorStatementTokens;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { OBJECT_TYPE_NAME } from "../../typeNames";
4
+ import { termTokensFromTermString } from "../../utilities/tokens";
5
+
6
+ const bracketedConstructorTermString = `(${OBJECT_TYPE_NAME})`;
7
+
8
+ const bracketedConstructorDeclarationTokens = termTokensFromTermString(bracketedConstructorTermString)
9
+
10
+ export default bracketedConstructorDeclarationTokens;
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import bracketedTermNode from "../node/term/bracketed";
4
+ import bracketedFrameNode from "../node/frame/bracketed";
4
5
  import bracketedStatementNode from "../node/statement/bracketed";
5
6
 
6
7
  import { nodeQuery } from "../utilities/query";
7
- import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
8
+ import { BRACKETED_TERM_DEPTH, BRACKETED_FRAME_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
8
9
 
9
10
  const bracketedTermChildNodeQuery = nodeQuery("/term/argument/term!"),
10
11
  bracketedStatementChildNodeQuery = nodeQuery("/statement/metaArgument/statement!");
@@ -19,6 +20,16 @@ export function stripBracketsFromTerm(statementNode) {
19
20
  return statementNode;
20
21
  }
21
22
 
23
+ export function stripBracketsFromFrame(frameNode) {
24
+ const bracketedFrameChildNode = bracketedFrameChildNodeFromFrameNode(frameNode);
25
+
26
+ if (bracketedFrameChildNode !== null) {
27
+ frameNode = bracketedFrameChildNode; ///
28
+ }
29
+
30
+ return frameNode;
31
+ }
32
+
22
33
  export function stripBracketsFromStatement(statementNode) {
23
34
  const bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
24
35
 
@@ -42,6 +53,19 @@ function bracketedTermChildNodeFromTermNode(termNode) {
42
53
  return bracketedTermChildNode;
43
54
  }
44
55
 
56
+ function bracketedFrameChildNodeFromFrameNode(frameNode) {
57
+ let bracketedFrameChildNode = null;
58
+
59
+ const depth = BRACKETED_FRAME_DEPTH,
60
+ frameNodeMatchBracketedFrameNode = frameNode.match(bracketedFrameNode, depth);
61
+
62
+ if (frameNodeMatchBracketedFrameNode) {
63
+ bracketedFrameChildNode = bracketedFrameChildNodeQuery(frameNode);
64
+ }
65
+
66
+ return bracketedFrameChildNode;
67
+ }
68
+
45
69
  function bracketedStatementChildNodeFromStatementNode(statementNode) {
46
70
  let bracketedStatementChildNode = null;
47
71
 
@@ -2,59 +2,58 @@
2
2
 
3
3
  import { parsersUtilities } from "occam-custom-grammars";
4
4
 
5
- import { nodeQuery } from "../utilities/query";
6
5
  import { combinedCustomGrammarFromNothing } from "./customGrammar";
7
- import { UNQUALIFIED_STATEMENT_RULE_NAME, CONSTRUCTOR_DECLARATION_RULE_NAME } from "../ruleNames";
8
- import { constructorDeclarationTokensFromTermString, unqualifiedStatementTokensFromStatementString } from "../utilities/tokens";
6
+ import { TERM_RULE_NAME, FRAME_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
7
+ import { termTokensFromTermString, frameTokensFromFrameString, statementTokensFromStatementString } from "../utilities/tokens";
9
8
 
10
9
  const { florenceParserFromCombinedCustomGrammar } = parsersUtilities;
11
10
 
12
11
  const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
13
12
  florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
14
13
 
15
- const termNodeQuery = nodeQuery("/constructorDeclaration/term!"),
16
- statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
17
-
18
14
  export function termNodeFromTermString(termString, lexer, parser) {
19
- const constructorDeclarationTokens = constructorDeclarationTokensFromTermString(termString, lexer),
20
- termNode = termNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser);
15
+ const termTokens = termTokensFromTermString(termString, lexer),
16
+ termNode = termNodeFromTermTokens(termTokens, parser);
21
17
 
22
18
  return termNode;
23
19
  }
24
20
 
25
- export function statementNodeFromStatementString(statementString, lexer, parser) {
26
- const unqualifiedStatementTokens = unqualifiedStatementTokensFromStatementString(statementString, lexer),
27
- statementNode = statementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser);
21
+ export function frameNodeFromFrameString(frameString, lexer, parser) {
22
+ const frameTokens = frameTokensFromFrameString(frameString, lexer),
23
+ frameNode = frameNodeFromFrameTokens(frameTokens, parser);
28
24
 
29
- return statementNode;
25
+ return frameNode;
30
26
  }
31
27
 
32
- export function termNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser) {
33
- const constructorDeclarationNode = constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser),
34
- termNode = termNodeQuery(constructorDeclarationNode);
28
+ export function statementNodeFromStatementString(statementString, lexer, parser) {
29
+ const statementTokens = statementTokensFromStatementString(statementString, lexer),
30
+ statementNode = statementNodeFromStatementTokens(statementTokens, parser);
35
31
 
36
- return termNode;
32
+ return statementNode;
37
33
  }
38
34
 
39
- export function statementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
40
- const unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
41
- statementNode = statementNodeQuery(unqualifiedStatementNode);
35
+ export function termNodeFromTermTokens(termTokens, parser) {
36
+ const tokens = termTokens, ///
37
+ ruleName = TERM_RULE_NAME,
38
+ termNode = nodeFromTokensRuleNameAndParser(tokens, ruleName, parser);
42
39
 
43
- return statementNode;
40
+ return termNode;
44
41
  }
45
42
 
46
- function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
47
- const ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
48
- unqualifiedStatementNode = nodeFromTokensRuleNameAndParser(unqualifiedStatementTokens, ruleName, parser);
43
+ export function frameNodeFromFrameTokens(frameTokens, parser) {
44
+ const tokens = frameTokens, ///
45
+ ruleName = FRAME_RULE_NAME,
46
+ frameNode = nodeFromTokensRuleNameAndParser(tokens, ruleName, parser);
49
47
 
50
- return unqualifiedStatementNode;
48
+ return frameNode;
51
49
  }
52
50
 
53
- function constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser) {
54
- const ruleName = CONSTRUCTOR_DECLARATION_RULE_NAME,
55
- constructorDeclarationNode = nodeFromTokensRuleNameAndParser(constructorDeclarationTokens, ruleName, parser);
51
+ export function statementNodeFromStatementTokens(statementTokens, parser) {
52
+ const tokens = statementTokens, ///
53
+ ruleName = STATEMENT_RULE_NAME,
54
+ statementNode = nodeFromTokensRuleNameAndParser(tokens, ruleName, parser);
56
55
 
57
- return constructorDeclarationNode;
56
+ return statementNode;
58
57
  }
59
58
 
60
59
  function nodeFromTokensRuleNameAndParser(tokens, ruleName, parser = florenceParser) {
@@ -9,20 +9,25 @@ const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities;
9
9
  const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
10
10
  florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
11
11
 
12
- export function constructorDeclarationTokensFromTermString(termString, lexer) {
13
- const constructorDeclarationContent = `Constructor ${termString}
14
- `,
15
- constructorDeclarationTokens = tokensFromContentAndLexer(constructorDeclarationContent, lexer);
12
+ export function termTokensFromTermString(termString, lexer) {
13
+ const content = termString, ///
14
+ termTokens = tokensFromContentAndLexer(content, lexer);
16
15
 
17
- return constructorDeclarationTokens;
16
+ return termTokens;
18
17
  }
19
18
 
20
- export function unqualifiedStatementTokensFromStatementString(statementString, lexer) {
21
- const unqualifiedStatementContent = `${statementString}
22
- `,
23
- unqualifiedStatementTokens = tokensFromContentAndLexer(unqualifiedStatementContent, lexer);
19
+ export function frameTokensFromFrameString(frameString, lexer) {
20
+ const content = frameString, ///
21
+ frameTokens = tokensFromContentAndLexer(content, lexer);
24
22
 
25
- return unqualifiedStatementTokens;
23
+ return frameTokens;
24
+ }
25
+
26
+ export function statementTokensFromStatementString(statementString, lexer) {
27
+ const content = statementString, ///
28
+ statementTokens = tokensFromContentAndLexer(content, lexer);
29
+
30
+ return statementTokens;
26
31
  }
27
32
 
28
33
  function tokensFromContentAndLexer(content, lexer = florenceLexer) {
@@ -6,9 +6,9 @@ import { isAssertionNegated } from "../../utilities/assertion";
6
6
  import { nodeQuery, nodesQuery } from "../../utilities/query";
7
7
 
8
8
  const variableNodeQuery = nodeQuery("/containedAssertion/term/variable!"),
9
- metavariableNodeQuery = nodeQuery("/containedAssertion/statement[0]/metavariable"),
10
- statementVariableNodesQuery = nodesQuery("/containedAssertion/statement[-1]//variable"),
11
- statementMetavariableNodesQuery = nodesQuery("/containedAssertion/statement[-1]//metavariable");
9
+ metavariableNodeQuery = nodeQuery("/containedAssertion/frame/statement!/metavariable!"),
10
+ statementVariableNodesQuery = nodesQuery("/containedAssertion/statement//variable"),
11
+ statementMetavariableNodesQuery = nodesQuery("/containedAssertion/statement//metavariable");
12
12
 
13
13
  const verifyContainedAssertionFunctions = [
14
14
  verifyDerivedContainedAssertion,
@@ -56,53 +56,56 @@ function verifyDerivedContainedAssertion(containedAssertionNode, assignments, st
56
56
 
57
57
  localContext.trace(`Verifying the '${containedAssertionString}' derived contained assertion...`, containedAssertionNode);
58
58
 
59
- const assertionNegated = isAssertionNegated(containedAssertionNode),
60
- metavariableNode = metavariableNodeQuery(containedAssertionNode),
61
- variableNode = variableNodeQuery(containedAssertionNode),
62
- negated = assertionNegated; ///
63
-
64
- if (false) {
65
- ///
66
- } else if (metavariableNode !== null) {
67
- const statementMetavariableNodes = statementMetavariableNodesQuery(containedAssertionNode),
68
- variableNodeMatchesStatementMetavariableNode = statementMetavariableNodes.some((statementMetavariableNode) => {
69
- const variableNodeMatchesStatementMetavariableNode = metavariableNode.match(statementMetavariableNode);
70
-
71
- if (variableNodeMatchesStatementMetavariableNode) {
72
- return true;
73
- }
74
- });
75
-
76
- if (!negated) {
77
- if (variableNodeMatchesStatementMetavariableNode) {
78
- derivedContainedAssertionVerified = true;
59
+ const metavariableNode = metavariableNodeQuery(containedAssertionNode);
60
+
61
+ if (metavariableNode !== null) {
62
+ const assertionNegated = isAssertionNegated(containedAssertionNode),
63
+ variableNode = variableNodeQuery(containedAssertionNode),
64
+ negated = assertionNegated; ///
65
+
66
+ if (false) {
67
+ ///
68
+ } else if (metavariableNode !== null) {
69
+ const statementMetavariableNodes = statementMetavariableNodesQuery(containedAssertionNode),
70
+ variableNodeMatchesStatementMetavariableNode = statementMetavariableNodes.some((statementMetavariableNode) => {
71
+ const variableNodeMatchesStatementMetavariableNode = metavariableNode.match(statementMetavariableNode);
72
+
73
+ if (variableNodeMatchesStatementMetavariableNode) {
74
+ return true;
75
+ }
76
+ });
77
+
78
+ if (!negated) {
79
+ if (variableNodeMatchesStatementMetavariableNode) {
80
+ derivedContainedAssertionVerified = true;
81
+ }
79
82
  }
80
- }
81
83
 
82
- if (negated) {
83
- if (!variableNodeMatchesStatementMetavariableNode) {
84
- derivedContainedAssertionVerified = true;
84
+ if (negated) {
85
+ if (!variableNodeMatchesStatementMetavariableNode) {
86
+ derivedContainedAssertionVerified = true;
87
+ }
85
88
  }
86
- }
87
- } else if (variableNode !== null) {
88
- const statementVariableNodes = statementVariableNodesQuery(containedAssertionNode),
89
- variableNodeMatchesStatementVariableNode = statementVariableNodes.some((statementVariableNode) => {
90
- const variableNodeMatchesStatementVariableNode = variableNode.match(statementVariableNode);
91
-
92
- if (variableNodeMatchesStatementVariableNode) {
93
- return true;
94
- }
95
- });
96
-
97
- if (!negated) {
98
- if (variableNodeMatchesStatementVariableNode) {
99
- derivedContainedAssertionVerified = true;
89
+ } else if (variableNode !== null) {
90
+ const statementVariableNodes = statementVariableNodesQuery(containedAssertionNode),
91
+ variableNodeMatchesStatementVariableNode = statementVariableNodes.some((statementVariableNode) => {
92
+ const variableNodeMatchesStatementVariableNode = variableNode.match(statementVariableNode);
93
+
94
+ if (variableNodeMatchesStatementVariableNode) {
95
+ return true;
96
+ }
97
+ });
98
+
99
+ if (!negated) {
100
+ if (variableNodeMatchesStatementVariableNode) {
101
+ derivedContainedAssertionVerified = true;
102
+ }
100
103
  }
101
- }
102
104
 
103
- if (negated) {
104
- if (!variableNodeMatchesStatementVariableNode) {
105
- derivedContainedAssertionVerified = true;
105
+ if (negated) {
106
+ if (!variableNodeMatchesStatementVariableNode) {
107
+ derivedContainedAssertionVerified = true;
108
+ }
106
109
  }
107
110
  }
108
111
  }