occam-verify-cli 0.0.923 → 0.0.925

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 (92) hide show
  1. package/lib/axiom.js +9 -9
  2. package/lib/conjecture.js +9 -9
  3. package/lib/constants.js +1 -9
  4. package/lib/context/file.js +3 -3
  5. package/lib/context/local.js +5 -5
  6. package/lib/lemma.js +9 -9
  7. package/lib/metaLemma.js +7 -7
  8. package/lib/metatheorem.js +7 -7
  9. package/lib/metavariable.js +8 -1
  10. package/lib/mixins/nodesVerifier/metaLevel.js +2 -2
  11. package/lib/premise.js +6 -6
  12. package/lib/theorem.js +9 -9
  13. package/lib/topLevelAssertion.js +186 -0
  14. package/lib/verifier/nodes/intrinsicLevel.js +3 -3
  15. package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +3 -3
  16. package/lib/verifier/nodes/metaLevel.js +16 -16
  17. package/lib/verify/assertion/contained.js +91 -0
  18. package/lib/verify/assertion/defined.js +114 -0
  19. package/lib/verify/assertion/subproof.js +65 -0
  20. package/lib/verify/assertion/type.js +112 -0
  21. package/lib/verify/axiom.js +4 -4
  22. package/lib/verify/conjecture.js +4 -4
  23. package/lib/verify/declaration.js +3 -6
  24. package/lib/verify/derivation.js +7 -7
  25. package/lib/verify/equality.js +3 -3
  26. package/lib/verify/frame.js +2 -2
  27. package/lib/verify/judgement.js +2 -2
  28. package/lib/verify/lemma.js +5 -5
  29. package/lib/verify/metaLemma.js +4 -4
  30. package/lib/verify/metastatement.js +4 -24
  31. package/lib/verify/metatheorem.js +4 -4
  32. package/lib/verify/metavariable.js +2 -2
  33. package/lib/verify/proof.js +3 -3
  34. package/lib/verify/proofStep.js +4 -4
  35. package/lib/verify/rule.js +3 -3
  36. package/lib/verify/statement/qualified.js +19 -25
  37. package/lib/verify/statement/unqualified.js +38 -10
  38. package/lib/verify/statement.js +106 -97
  39. package/lib/verify/subDerivation.js +3 -3
  40. package/lib/verify/subproof.js +3 -3
  41. package/lib/verify/termAsConstructor.js +2 -2
  42. package/lib/verify/theorem.js +4 -4
  43. package/package.json +2 -2
  44. package/src/axiom.js +4 -4
  45. package/src/conjecture.js +4 -4
  46. package/src/constants.js +0 -2
  47. package/src/context/file.js +2 -2
  48. package/src/context/local.js +4 -3
  49. package/src/lemma.js +4 -4
  50. package/src/metaLemma.js +4 -4
  51. package/src/metatheorem.js +4 -4
  52. package/src/metavariable.js +6 -0
  53. package/src/mixins/nodesVerifier/metaLevel.js +1 -1
  54. package/src/premise.js +6 -6
  55. package/src/theorem.js +4 -4
  56. package/src/{metaLemmaMetatheorem.js → topLevelAssertion.js} +16 -26
  57. package/src/verifier/nodes/intrinsicLevel.js +2 -2
  58. package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +3 -3
  59. package/src/verifier/nodes/metaLevel.js +18 -19
  60. package/src/verify/assertion/contained.js +111 -0
  61. package/src/verify/{statementAsDefinedAssertion.js → assertion/defined.js} +25 -41
  62. package/src/verify/assertion/subproof.js +77 -0
  63. package/src/verify/{typeAssertion.js → assertion/type.js} +15 -15
  64. package/src/verify/axiom.js +5 -4
  65. package/src/verify/conjecture.js +5 -4
  66. package/src/verify/declaration.js +2 -6
  67. package/src/verify/derivation.js +6 -6
  68. package/src/verify/equality.js +2 -2
  69. package/src/verify/frame.js +1 -1
  70. package/src/verify/judgement.js +1 -1
  71. package/src/verify/lemma.js +8 -5
  72. package/src/verify/metaLemma.js +4 -4
  73. package/src/verify/metastatement.js +3 -32
  74. package/src/verify/metatheorem.js +4 -4
  75. package/src/verify/metavariable.js +1 -1
  76. package/src/verify/proof.js +2 -2
  77. package/src/verify/proofStep.js +3 -3
  78. package/src/verify/rule.js +4 -4
  79. package/src/verify/statement/qualified.js +30 -33
  80. package/src/verify/statement/unqualified.js +52 -10
  81. package/src/verify/statement.js +168 -47
  82. package/src/verify/subDerivation.js +2 -2
  83. package/src/verify/subproof.js +2 -2
  84. package/src/verify/termAsConstructor.js +2 -2
  85. package/src/verify/theorem.js +7 -4
  86. package/lib/axiomLemmaTheoremConjecture.js +0 -174
  87. package/lib/metaLemmaMetatheorem.js +0 -191
  88. package/lib/verify/statementAsContainedAssertion.js +0 -109
  89. package/lib/verify/statementAsDefinedAssertion.js +0 -132
  90. package/lib/verify/typeAssertion.js +0 -112
  91. package/src/axiomLemmaTheoremConjecture.js +0 -165
  92. package/src/verify/statementAsContainedAssertion.js +0 -127
package/src/metaLemma.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import MetalemmaMetatheorem from "./metalemmaMetatheorem";
3
+ import TopLevelAssertion from "./topLevelAssertion";
4
4
 
5
- export default class MetaLemma extends MetalemmaMetatheorem {
6
- static fromJSONAndFileContext(json, fileContext) { return MetalemmaMetatheorem.fromJSONAndFileContext(MetaLemma, json, fileContext); }
5
+ export default class MetaLemma extends TopLevelAssertion {
6
+ static fromJSONAndFileContext(json, fileContext) { return TopLevelAssertion.fromJSONAndFileContext(MetaLemma, json, fileContext); }
7
7
 
8
- static fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(labels, metaSuppositions, metaConsequent, substitutions, fileContext) { return MetalemmaMetatheorem.fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(MetaLemma, labels, metaSuppositions, metaConsequent, substitutions, fileContext); }
8
+ static fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(labels, metaSuppositions, metaConsequent, substitutions, fileContext) { return TopLevelAssertion.fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(MetaLemma, labels, metaSuppositions, metaConsequent, substitutions, fileContext); }
9
9
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import MetaLemmaMetatheorem from "./metaLemmaMetatheorem";
3
+ import TopLevelAssertion from "./topLevelAssertion";
4
4
 
5
- export default class Metatheorem extends MetaLemmaMetatheorem {
6
- static fromJSONAndFileContext(json, fileContext) { return MetaLemmaMetatheorem.fromJSONAndFileContext(Metatheorem, json, fileContext); }
5
+ export default class Metatheorem extends TopLevelAssertion {
6
+ static fromJSONAndFileContext(json, fileContext) { return TopLevelAssertion.fromJSONAndFileContext(Metatheorem, json, fileContext); }
7
7
 
8
- static fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, fileContext) { return MetaLemmaMetatheorem.fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(Metatheorem, labels, suppositions, consequent, fileContext); }
8
+ static fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, fileContext) { return TopLevelAssertion.fromLabelsMetaSuppositionsMetaConsequentSubstitutionsAndFileContext(Metatheorem, labels, suppositions, consequent, fileContext); }
9
9
  }
@@ -36,6 +36,12 @@ export default class Metavariable {
36
36
  return this.metaType;
37
37
  }
38
38
 
39
+ getMetaTypeName() {
40
+ const metaTypeName = this.metaType.getName();
41
+
42
+ return metaTypeName;
43
+ }
44
+
39
45
  matchName(name) {
40
46
  const matchesName = (this.name === name);
41
47
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  import StatementForMetavariableSubstitution from "../../substitution/statementForMetavariable";
4
4
 
5
- function verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions, localContextA, localMetaContextB, verifyAhead) {
5
+ function verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead) {
6
6
  let metavariableNodeVerified;
7
7
 
8
8
  const substitution = substitutions.find((substitution) => {
package/src/premise.js CHANGED
@@ -10,17 +10,17 @@ import { nodeQuery, nodesQuery } from "./utilities/query";
10
10
  import { statementNodeFromStatementString } from "./utilities/node";
11
11
 
12
12
  const subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
13
- subproofPremiseStatementNodesQuery = nodesQuery("/subproof/premise/unqualifiedStatement!/statement!"),
14
13
  subproofAssertionStatementNodesQuery = nodesQuery("/subproofAssertion/statement"),
14
+ subproofSuppositionStatementNodesQuery = nodesQuery("/subproof/supposition/unqualifiedStatement!/statement!"),
15
15
  subproofLastProofStepStatementNodeQuery = nodeQuery("/subproof/subDerivation/lastProofStep/unqualifiedStatement|qualifiedStatement/statement!");
16
16
 
17
17
  export default class Premise {
18
18
  constructor(statementNode) {
19
- this.statementnode = statementNode;
19
+ this.statementNode = statementNode;
20
20
  }
21
21
 
22
22
  getStatementNode() {
23
- return this.statementnode;
23
+ return this.statementNode;
24
24
  }
25
25
 
26
26
  matchStatementNode(statementNode, substitutions, fileContext, localContext) {
@@ -51,10 +51,10 @@ export default class Premise {
51
51
  const subproofAssertionNode = subproofAssertionNodeQuery(this.statementNode);
52
52
 
53
53
  if (subproofAssertionNode !== null) {
54
- const subproofPremiseStatementNodes = subproofPremiseStatementNodesQuery(subproofNode),
54
+ const subproofSuppositionStatementNodes = subproofSuppositionStatementNodesQuery(subproofNode),
55
55
  subproofLastProofStepStatementNode = subproofLastProofStepStatementNodeQuery(subproofNode),
56
56
  subproofStatementNodes = [
57
- ...subproofPremiseStatementNodes,
57
+ ...subproofSuppositionStatementNodes,
58
58
  subproofLastProofStepStatementNode
59
59
  ],
60
60
  subproofAssertionStatementNodes = subproofAssertionStatementNodesQuery(subproofAssertionNode);
@@ -82,7 +82,7 @@ export default class Premise {
82
82
  }
83
83
 
84
84
  toJSON(tokens) {
85
- const statementString = nodeAsString(this.statementnode, tokens),
85
+ const statementString = nodeAsString(this.statementNode, tokens),
86
86
  statement = statementString, ///
87
87
  json = {
88
88
  statement
package/src/theorem.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import AxiomLemmaTheoremConjecture from "./axiomLemmaTheoremConjecture";
3
+ import TopLevelAssertion from "./topLevelAssertion";
4
4
 
5
- export default class Theorem extends AxiomLemmaTheoremConjecture {
6
- static fromJSONAndFileContext(json, fileContext) { return AxiomLemmaTheoremConjecture.fromJSONAndFileContext(Theorem, json, fileContext); }
5
+ export default class Theorem extends TopLevelAssertion {
6
+ static fromJSONAndFileContext(json, fileContext) { return TopLevelAssertion.fromJSONAndFileContext(Theorem, json, fileContext); }
7
7
 
8
- static fromLabelsSuppositionsConsequentAndLocalContext(labels, suppositions, consequent, localContext) { return AxiomLemmaTheoremConjecture.fromLabelsSuppositionsConsequentAndLocalContext(Theorem, labels, suppositions, consequent, localContext); }
8
+ static fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(labels, suppositions, consequent, substitutions, fileContext) { return TopLevelAssertion.fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(Theorem, labels, suppositions, consequent, substitutions, fileContext); }
9
9
  }
@@ -7,7 +7,7 @@ import StatementForMetavariableSubstitution from "./substitution/statementForMet
7
7
 
8
8
  import { reverse, correlate } from "./utilities/array";
9
9
 
10
- export default class MetaLemmaMetatheorem {
10
+ export default class TopLevelAssertion {
11
11
  constructor(labels, suppositions, consequent, substitutions, fileContext) {
12
12
  this.labels = labels;
13
13
  this.suppositions = suppositions;
@@ -39,9 +39,9 @@ export default class MetaLemmaMetatheorem {
39
39
  matchStatement(statementNode, localContext) {
40
40
  let statementNatches = false;
41
41
 
42
- const metaproofSteps = localContext.getProofSteps(),
42
+ const proofSteps = localContext.getProofSteps(),
43
43
  substitutions = [],
44
- suppositionsMatch = matchSuppositions(this.suppositions, metaproofSteps, substitutions, this.fileContext, localContext);
44
+ suppositionsMatch = matchSuppositions(this.suppositions, proofSteps, substitutions, this.fileContext, localContext);
45
45
 
46
46
  if (suppositionsMatch) {
47
47
  const consequentMatches = matchConsequent(this.consequent, statementNode, substitutions, this.fileContext, localContext);
@@ -77,22 +77,19 @@ export default class MetaLemmaMetatheorem {
77
77
  }),
78
78
  consequentJSON = this.consequent.toJSON(tokens),
79
79
  substitutionsJSON = this.substitutions.map((substitution) => {
80
- const substitutionJSON = substitution.toJSON();
80
+ const substitutionJSON = substitution.toJSON();
81
81
 
82
- return substitutionJSON;
83
- }),
84
- localContextJSON = this.fileContext.toJSON(tokens),
82
+ return substitutionJSON;
83
+ }),
85
84
  labels = labelsJSON, ///
86
85
  suppositions = suppositionsJSON, ///
87
86
  consequent = consequentJSON, ///
88
87
  substitutions = substitutionsJSON, ///
89
- fileContext = localContextJSON, ///
90
88
  json = {
91
89
  labels,
92
90
  suppositions,
93
91
  consequent,
94
- substitutions,
95
- fileContext
92
+ substitutions
96
93
  };
97
94
 
98
95
  return json;
@@ -143,13 +140,13 @@ export default class MetaLemmaMetatheorem {
143
140
  static fromLabelsSuppositionsConsequentSubstitutionsAndFileContext(Class, labels, suppositions, consequent, substitutions, fileContext) { return new Class(labels, suppositions, consequent, substitutions, fileContext); }
144
141
  }
145
142
 
146
- function matchSuppositions(suppositions, metaproofSteps, substitutions, fileContext, localContext) {
143
+ function matchSuppositions(suppositions, proofSteps, substitutions, fileContext, localContext) {
147
144
  suppositions = reverse(suppositions); ///
148
145
 
149
- metaproofSteps = reverse(metaproofSteps); ///
146
+ proofSteps = reverse(proofSteps); ///
150
147
 
151
- const suppositionsMatch = correlate(suppositions, metaproofSteps, (supposition, metaproofStep) => {
152
- const suppositionMatches = matchSupposition(supposition, metaproofStep, substitutions, fileContext, localContext);
148
+ const suppositionsMatch = correlate(suppositions, proofSteps, (supposition, proofStep) => {
149
+ const suppositionMatches = matchSupposition(supposition, proofStep, substitutions, fileContext, localContext);
153
150
 
154
151
  if (suppositionMatches) {
155
152
  return true;
@@ -159,25 +156,18 @@ function matchSuppositions(suppositions, metaproofSteps, substitutions, fileCont
159
156
  return suppositionsMatch;
160
157
  }
161
158
 
162
- function matchSupposition(supposition, metaproofStep, substitutions, fileContext, localContext) {
163
- let matchesSupposition = false;
164
-
165
- const metaSubproofNode = metaproofStep.getSubproofNode(),
166
- statementNode = metaproofStep.getStatementNode();
159
+ function matchSupposition(supposition, proofStep, substitutions, fileContext, localContext) {
160
+ let suppositionMatches = false;
167
161
 
168
- if (metaSubproofNode !== null) {
169
- const suppositionMatchesSubproofNode = supposition.matchSubproofNode(metaSubproofNode, substitutions, fileContext, localContext);
170
-
171
- matchesSupposition - suppositionMatchesSubproofNode; ///
172
- }
162
+ const statementNode = proofStep.getStatementNode();
173
163
 
174
164
  if (statementNode !== null) {
175
165
  const suppositionMatchesStatementNode = supposition.matchStatementNode(statementNode, substitutions, fileContext, localContext);
176
166
 
177
- matchesSupposition - suppositionMatchesStatementNode; ///
167
+ suppositionMatches = suppositionMatchesStatementNode; ///
178
168
  }
179
169
 
180
- return matchesSupposition;
170
+ return suppositionMatches;
181
171
  }
182
172
 
183
173
  function matchConsequent(consequent, statementNode, substitutions, fileContext, localContext) {
@@ -35,7 +35,7 @@ class IntrinsicLevelNodesVerifier extends NodesVerifier {
35
35
  {
36
36
  nodeQueryA: nonTerminalNodeQuery,
37
37
  nodeQueryB: nonTerminalNodeQuery,
38
- verifyNodes: (nodeA, nodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) => {
38
+ verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
39
39
  let nonTerminalNodeVerified;
40
40
 
41
41
  const nonTerminalNodeA = nodeA, ///
@@ -43,7 +43,7 @@ class IntrinsicLevelNodesVerifier extends NodesVerifier {
43
43
 
44
44
  nonTerminalNodeVerified =
45
45
 
46
- super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
46
+ super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
47
47
 
48
48
  return nonTerminalNodeVerified;
49
49
  }
@@ -93,7 +93,7 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
93
93
  {
94
94
  nodeQueryA: nonTerminalNodeQuery,
95
95
  nodeQueryB: nonTerminalNodeQuery,
96
- verifyNodes: (nodeA, nodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) => {
96
+ verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
97
97
  let nonTerminalNodeVerified;
98
98
 
99
99
  const nonTerminalNodeA = nodeA, ///
@@ -101,7 +101,7 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
101
101
 
102
102
  nonTerminalNodeVerified =
103
103
 
104
- super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
104
+ super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
105
105
 
106
106
  return nonTerminalNodeVerified;
107
107
  }
@@ -133,7 +133,7 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
133
133
 
134
134
  const substitutionNode = statementSubstitutionNodeA, ///
135
135
  metavariableNodeA = statementMetavariableNodeA, ///
136
- metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
136
+ metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead);
137
137
 
138
138
  statementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
139
139
 
@@ -8,29 +8,29 @@ import { nodeQuery } from "../../utilities/query";
8
8
  import { verifyNodes } from "../../utilities/verifier";
9
9
 
10
10
  const termNodeQuery = nodeQuery("/term!"),
11
- nonTerminalNodeQuery = nodeQuery("/*"),
12
11
  statementNodeQuery = nodeQuery("/statement!"),
12
+ nonTerminalNodeQuery = nodeQuery("/*"),
13
13
  termVariableNodeQuery = nodeQuery("/term/variable!"),
14
- statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
14
+ metavariableNodeQuery = nodeQuery("/metavariable!");
15
15
 
16
16
  class MetaLevelNodesVerifier extends NodesVerifier {
17
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) {
17
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead) {
18
18
  let nonTerminalNodeVerified;
19
19
 
20
20
  const nodeQueryMaps = [
21
21
  {
22
- nodeQueryA: statementMetavariableNodeQuery,
22
+ nodeQueryA: metavariableNodeQuery,
23
23
  nodeQueryB: statementNodeQuery,
24
- verifyNodes: (nodeA, nodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) => {
24
+ verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
25
25
  let nonTerminalNodeVerified;
26
26
 
27
27
  const statementNodeB = nodeB, ///
28
- statementMetavariableNodeA = nodeA, ///
29
- statementMetavariableNodeVerifiedAgainstStatementNode =
28
+ metavariableNodeA = nodeA, ///
29
+ metavariableNodeVerifiedAgainstStatementNode =
30
30
 
31
- this.verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
31
+ this.verifyMetavariableNodeAgainstStatementNode(metavariableNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead);
32
32
 
33
- nonTerminalNodeVerified = statementMetavariableNodeVerifiedAgainstStatementNode; ///
33
+ nonTerminalNodeVerified = metavariableNodeVerifiedAgainstStatementNode; ///
34
34
 
35
35
  return nonTerminalNodeVerified;
36
36
  }
@@ -55,7 +55,7 @@ class MetaLevelNodesVerifier extends NodesVerifier {
55
55
  {
56
56
  nodeQueryA: nonTerminalNodeQuery,
57
57
  nodeQueryB: nonTerminalNodeQuery,
58
- verifyNodes: (nodeA, nodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) => {
58
+ verifyNodes: (nodeA, nodeB, substitutions, localContextA, localContextB, verifyAhead) => {
59
59
  let nonTerminalNodeVerified;
60
60
 
61
61
  const nonTerminalNodeA = nodeA, ///
@@ -63,30 +63,29 @@ class MetaLevelNodesVerifier extends NodesVerifier {
63
63
 
64
64
  nonTerminalNodeVerified =
65
65
 
66
- super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
66
+ super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
67
67
 
68
68
  return nonTerminalNodeVerified;
69
69
  }
70
70
  }
71
71
  ];
72
72
 
73
- const nodesVerified = verifyNodes(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead);
73
+ const nodesVerified = verifyNodes(nodeQueryMaps, nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, verifyAhead);
74
74
 
75
75
  nonTerminalNodeVerified = nodesVerified; ///
76
76
 
77
77
  return nonTerminalNodeVerified;
78
78
  }
79
79
 
80
- verifyStatementMetavariableNodeAgainstStatementNode(statementMetavariableNodeA, statementNodeB, substitutions, localMetaContextA, localMetaContextB, verifyAhead) {
81
- let statementMetavariableNodeVerifiedAgainstStatementNode;
80
+ verifyMetavariableNodeAgainstStatementNode(metavariableNodeA, statementNodeB, substitutions, localContextA, localContextB, verifyAhead) {
81
+ let metavariableNodeVerifiedAgainstStatementNode;
82
82
 
83
- const metavariableNode = statementMetavariableNodeA, ///
84
- statementNode = statementNodeB, ///
85
- metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutions, verifyAhead);
83
+ const substitutionNode = null,
84
+ metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead);
86
85
 
87
- statementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
86
+ metavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
88
87
 
89
- return statementMetavariableNodeVerifiedAgainstStatementNode;
88
+ return metavariableNodeVerifiedAgainstStatementNode;
90
89
  }
91
90
 
92
91
  verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ import metaLevelNodeVerifier from "../../verifier/node/metaLevel";
4
+
5
+ import { isStatementNegated } from "../../utilities/verify";
6
+ import { nodeQuery, nodesQuery } from "../../utilities/query";
7
+
8
+ const termNodeQuery = nodeQuery("/statement/term!"),
9
+ statementTermNodesQuery = nodesQuery("/statement/metaArgument/statement//term");
10
+
11
+ export default function verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
12
+ let statementVerifiedAsContainedAssertion;
13
+
14
+ const statementContainedAssertion = isStatementContainedAssertion(containedAssertionNode);
15
+
16
+ if (statementContainedAssertion) {
17
+ const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
18
+
19
+ localContext.trace(`Verifying the '${containedAssertionString}' statement as a contained assertion...`, containedAssertionNode);
20
+
21
+ const statementFunctions = [
22
+ verifyStatementAsDerivedContainedAssertion,
23
+ verifyStatementAsStatedContainedAssertion
24
+ ];
25
+
26
+ statementVerifiedAsContainedAssertion = statementFunctions.some((statementFunction) => {
27
+ const statementVerifiedAsContainedAssertion = statementFunction(containedAssertionNode, assignments, derived, localContext);
28
+
29
+ if (statementVerifiedAsContainedAssertion) {
30
+ return true;
31
+ }
32
+ });
33
+
34
+ if (statementVerifiedAsContainedAssertion) {
35
+ localContext.debug(`...verified the '${containedAssertionString}' statement as a contained assertion.`, containedAssertionNode);
36
+ }
37
+ }
38
+
39
+ return statementVerifiedAsContainedAssertion;
40
+ }
41
+
42
+ function verifyStatementAsDerivedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
43
+ let statementVerifiedAsDefinedContainedAssertion = false;
44
+
45
+ if (derived) {
46
+ const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
47
+
48
+ localContext.trace(`Verifying the '${containedAssertionString}' derived statement as a contained assertion...`, containedAssertionNode);
49
+
50
+ const statementNegated = isStatementNegated(containedAssertionNode),
51
+ termNode = termNodeQuery(containedAssertionNode),
52
+ negated = statementNegated, ///
53
+ statementTermNodes = statementTermNodesQuery(containedAssertionNode),
54
+ termNodeMatchesMetaArgumentVariableNode = statementTermNodes.some((statementTermNode) => {
55
+ const termNodeMatchesMetaArgumentVariableNode = termNode.match(statementTermNode);
56
+
57
+ if (termNodeMatchesMetaArgumentVariableNode) {
58
+ return true;
59
+ }
60
+ });
61
+
62
+ if (!negated) {
63
+ if (termNodeMatchesMetaArgumentVariableNode) {
64
+ statementVerifiedAsDefinedContainedAssertion = true;
65
+ }
66
+ }
67
+
68
+ if (negated) {
69
+ if (!termNodeMatchesMetaArgumentVariableNode) {
70
+ statementVerifiedAsDefinedContainedAssertion = true;
71
+ }
72
+ }
73
+
74
+ if (statementVerifiedAsDefinedContainedAssertion) {
75
+ localContext.debug(`...verified the '${containedAssertionString}' derived statement as a contained assertion.`, containedAssertionNode);
76
+ }
77
+ }
78
+
79
+ return statementVerifiedAsDefinedContainedAssertion;
80
+ }
81
+
82
+ function verifyStatementAsStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
83
+ let statementVerifiedAsStatedContainedAssertion = false;
84
+
85
+ if (!derived) {
86
+ const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
87
+
88
+ localContext.trace(`Verifying the '${containedAssertionString}' stated statement as a contained assertion...`, containedAssertionNode);
89
+
90
+ const intrinsicLevel = localContext.isIntrinsicLevel();
91
+
92
+ if (intrinsicLevel) {
93
+ localContext.debug(`The '${containedAssertionString}' stated statement as a contained assertion cannot be verified at intrinsic level.`, containedAssertionNode);
94
+ } else {
95
+ const nonTerminalNode = containedAssertionNode, ///
96
+ nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
97
+ const verifiedAhead = true;
98
+
99
+ return verifiedAhead;
100
+ });
101
+
102
+ statementVerifiedAsStatedContainedAssertion = nonTerminalNodeVerified; ///
103
+ }
104
+
105
+ if (statementVerifiedAsStatedContainedAssertion) {
106
+ localContext.debug(`...verified the '${containedAssertionString}' stated statement as a contained assertion.`, containedAssertionNode);
107
+ }
108
+ }
109
+
110
+ return statementVerifiedAsStatedContainedAssertion;
111
+ }
@@ -1,26 +1,24 @@
1
1
  "use strict";
2
2
 
3
- import verifyTerm from "./term";
4
- import metaLevelNodeVerifier from "../verifier/node/metaLevel";
3
+ import verifyTerm from "../../verify/term";
4
+ import metaLevelNodeVerifier from "../../verifier/node/metaLevel";
5
5
 
6
- import { first } from "../utilities/array";
7
- import { DEFINED } from "../constants";
8
- import { isStatementNegated } from "../utilities/verify";
9
- import { nodeQuery, nodesQuery } from "../utilities/query";
6
+ import { first } from "../../utilities/array";
7
+ import { nodeQuery } from "../../utilities/query";
8
+ import { isAssertionNegated } from "../../utilities/verify";
10
9
 
11
10
  const termNodeQuery = nodeQuery("/statement/term!"),
12
- variableNodeQuery = nodeQuery("/statement/term/variable!"),
13
- operatorTerminalNodesQuery = nodesQuery("/statement/@operator");
11
+ variableNodeQuery = nodeQuery("/statement/term/variable!");
14
12
 
15
- export default function verifyStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
13
+ export default function verifyDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
16
14
  let statementVerifiedAsDefinedAssertion = false;
17
15
 
18
- const statementDefinedAssertion = isStatementDefinedAssertion(statementNode);
16
+ const statementDefinedAssertion = isStatementDefinedAssertion(definedAssertionNode);
19
17
 
20
18
  if (statementDefinedAssertion) {
21
- const statementString = localContext.nodeAsString(statementNode);
19
+ const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
22
20
 
23
- localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, statementNode);
21
+ localContext.trace(`Verifying the '${definedAssertionString}' statement as a defined assertion...`, definedAssertionNode);
24
22
 
25
23
  const definedAssertionFunctions = [
26
24
  verifyDerivedStatementAsDefinedAssertion,
@@ -28,7 +26,7 @@ export default function verifyStatementAsDefinedAssertion(statementNode, assignm
28
26
  ];
29
27
 
30
28
  statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some((definedAssertionFunction) => {
31
- const statementVerifiedAsDefinedAssertion = definedAssertionFunction(statementNode, assignments, derived, localContext);
29
+ const statementVerifiedAsDefinedAssertion = definedAssertionFunction(definedAssertionNode, assignments, derived, localContext);
32
30
 
33
31
  if (statementVerifiedAsDefinedAssertion) {
34
32
  return true;
@@ -36,24 +34,24 @@ export default function verifyStatementAsDefinedAssertion(statementNode, assignm
36
34
  });
37
35
 
38
36
  if (statementVerifiedAsDefinedAssertion) {
39
- localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
37
+ localContext.debug(`...verified the '${definedAssertionString}' statement as a defined assertion.`, definedAssertionNode);
40
38
  }
41
39
  }
42
40
 
43
41
  return statementVerifiedAsDefinedAssertion;
44
42
  }
45
43
 
46
- function verifyDerivedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
44
+ function verifyDerivedStatementAsDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
47
45
  let derivedStatementVerifiedAsDefeindAssertion = false;
48
46
 
49
47
  if (derived) {
50
- const statementString = localContext.nodeAsString(statementNode);
48
+ const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
51
49
 
52
- localContext.trace(`Verifying the derived '${statementString}' statement as a defined assertion...`, statementNode);
50
+ localContext.trace(`Verifying the '${definedAssertionString}' derived statement as a defined assertion...`, definedAssertionNode);
53
51
 
54
- const statementNegated = isStatementNegated(statementNode),
55
- variableNode = variableNodeQuery(statementNode),
56
- termNode = termNodeQuery(statementNode);
52
+ const statementNegated = isAssertionNegated(definedAssertionNode),
53
+ variableNode = variableNodeQuery(definedAssertionNode),
54
+ termNode = termNodeQuery(definedAssertionNode);
57
55
 
58
56
  if (false) {
59
57
  ///
@@ -103,27 +101,27 @@ function verifyDerivedStatementAsDefinedAssertion(statementNode, assignments, de
103
101
  }
104
102
 
105
103
  if (derivedStatementVerifiedAsDefeindAssertion) {
106
- localContext.debug(`...verified the derived '${statementString}' statement as a defined assertion.`, statementNode);
104
+ localContext.debug(`...verified the '${definedAssertionString}' derived statement as a defined assertion.`, definedAssertionNode);
107
105
  }
108
106
  }
109
107
 
110
108
  return derivedStatementVerifiedAsDefeindAssertion;
111
109
  }
112
110
 
113
- function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, derived, localContext) {
111
+ function verifyStatedStatementAsDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
114
112
  let statedStatementVerifiedAsDefinedAssertion = false;
115
113
 
116
114
  if (!derived) {
117
- const statementString = localContext.nodeAsString(statementNode);
115
+ const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
118
116
 
119
- localContext.trace(`Verifying the stated '${statementString}' statement as a defined assertion...`, statementNode);
117
+ localContext.trace(`Verifying the '${definedAssertionString}' stated statement as a defined assertion...`, definedAssertionNode);
120
118
 
121
119
  const intrinsicLevel = localContext.isIntrinsicLevel();
122
120
 
123
121
  if (intrinsicLevel) {
124
- localContext.debug(`The stated '${statementString}' statement as a defined assertion cannot be verified at intrinsic level.`, statementNode);
122
+ localContext.debug(`The '${definedAssertionString}' stated statement as a defined assertion cannot be verified at intrinsic level.`, definedAssertionNode);
125
123
  } else {
126
- const nonTerminalNode = statementNode, ///
124
+ const nonTerminalNode = definedAssertionNode, ///
127
125
  nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
128
126
  const verifiedAhead = true;
129
127
 
@@ -134,23 +132,9 @@ function verifyStatedStatementAsDefinedAssertion(statementNode, assignments, der
134
132
  }
135
133
 
136
134
  if (statedStatementVerifiedAsDefinedAssertion) {
137
- localContext.debug(`...verified the stated '${statementString}' statement as a defined assertion.`, statementNode);
135
+ localContext.debug(`...verified the '${definedAssertionString}' stated statement as a defined assertion.`, definedAssertionNode);
138
136
  }
139
137
  }
140
138
 
141
139
  return statedStatementVerifiedAsDefinedAssertion;
142
140
  }
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
- }