occam-verify-cli 0.0.936 → 0.0.938

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 (72) hide show
  1. package/lib/conclusion.js +7 -10
  2. package/lib/consequent.js +7 -10
  3. package/lib/context/local.js +1 -1
  4. package/lib/equality.js +2 -5
  5. package/lib/premise.js +15 -21
  6. package/lib/proofStep.js +3 -6
  7. package/lib/rule.js +23 -23
  8. package/lib/substitution/statementForMetavariable.js +3 -6
  9. package/lib/supposition.js +15 -21
  10. package/lib/topLevelAssertion.js +27 -23
  11. package/lib/unifier/equality.js +37 -107
  12. package/lib/unifier/metaLevel.js +48 -121
  13. package/lib/unifier/statementAgainstCombinator.js +41 -123
  14. package/lib/unifier/termAgainstConstructor.js +29 -103
  15. package/lib/unifier.js +60 -41
  16. package/lib/unify/metavariableAgainstStatement.js +5 -5
  17. package/lib/unify/statementAgainstMetaType.js +10 -4
  18. package/lib/unify/statementAtainstStatement.js +3 -6
  19. package/lib/unify/termAgainstTerm.js +1 -1
  20. package/lib/unify/termAgainstType.js +10 -4
  21. package/lib/utilities/string.js +2 -2
  22. package/lib/utilities/unifier.js +51 -0
  23. package/lib/verifier/metaLevel.js +48 -128
  24. package/lib/verifier/statementAsCombinator.js +48 -128
  25. package/lib/verifier/termAsConstructor.js +42 -112
  26. package/lib/verifier.js +50 -33
  27. package/lib/verify/assertion/contained.js +3 -6
  28. package/lib/verify/assertion/defined.js +3 -6
  29. package/lib/verify/assertion/subproof.js +9 -14
  30. package/lib/verify/statement/qualified.js +7 -7
  31. package/lib/verify/statement.js +10 -54
  32. package/lib/verify/statementAsCombinator.js +4 -8
  33. package/lib/verify/term.js +5 -5
  34. package/lib/verify/termAsConstructor.js +30 -23
  35. package/package.json +2 -2
  36. package/src/conclusion.js +8 -12
  37. package/src/consequent.js +8 -12
  38. package/src/context/local.js +7 -7
  39. package/src/equality.js +2 -8
  40. package/src/premise.js +20 -28
  41. package/src/proofStep.js +5 -9
  42. package/src/rule.js +22 -22
  43. package/src/substitution/statementForMetavariable.js +4 -8
  44. package/src/supposition.js +20 -28
  45. package/src/topLevelAssertion.js +29 -22
  46. package/src/unifier/equality.js +31 -59
  47. package/src/unifier/metaLevel.js +50 -83
  48. package/src/unifier/statementAgainstCombinator.js +33 -83
  49. package/src/unifier/termAgainstConstructor.js +19 -57
  50. package/src/unifier.js +57 -31
  51. package/src/unify/metavariableAgainstStatement.js +5 -3
  52. package/src/unify/statementAgainstMetaType.js +8 -3
  53. package/src/unify/statementAtainstStatement.js +4 -8
  54. package/src/unify/termAgainstTerm.js +1 -1
  55. package/src/unify/termAgainstType.js +7 -3
  56. package/src/utilities/string.js +1 -1
  57. package/src/verifier/metaLevel.js +37 -81
  58. package/src/verifier/statementAsCombinator.js +39 -82
  59. package/src/verifier/termAsConstructor.js +33 -62
  60. package/src/verifier.js +47 -21
  61. package/src/verify/assertion/contained.js +2 -7
  62. package/src/verify/assertion/defined.js +2 -7
  63. package/src/verify/assertion/subproof.js +3 -16
  64. package/src/verify/statement/qualified.js +7 -7
  65. package/src/verify/statement.js +10 -78
  66. package/src/verify/statementAsCombinator.js +3 -11
  67. package/src/verify/term.js +8 -8
  68. package/src/verify/termAsConstructor.js +40 -27
  69. package/lib/unify/argumentAgainstArgument.js +0 -24
  70. package/lib/utilities/terminalNodes.js +0 -51
  71. package/src/unify/argumentAgainstArgument.js +0 -15
  72. /package/src/utilities/{terminalNodes.js → unifier.js} +0 -0
@@ -1,21 +1,26 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "../shim";
4
+
3
5
  import { nodeQuery } from "../utilities/query";
4
6
  import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
5
7
 
6
8
  const metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type!");
7
9
 
8
- export default function unifyStatementAgainstMetaType(statementNode, metaTypeNode, localContext, unifyAhead, verifyStatement) {
10
+ export default function unifyStatementAgainstMetaType(statementNodeA, metaTypeNodeB, localContext, unifyAhead) {
9
11
  let statementVerifiedAgainstMetaType = false;
10
12
 
11
- const metaTypeTerminalNode = metaTypeTerminalNodeQuery(metaTypeNode),
13
+ const metaTypeNode = metaTypeNodeB, ///
14
+ metaTypeTerminalNode = metaTypeTerminalNodeQuery(metaTypeNode),
12
15
  content = metaTypeTerminalNode.getContent();
13
16
 
14
17
  if (content === STATEMENT_META_TYPE_NAME) {
15
18
  let unifiedAhead = false;
16
19
 
17
- const derived = false,
20
+ const { verifyStatement } = shim,
21
+ derived = false,
18
22
  assignments = [],
23
+ statementNode = statementNodeA, ///
19
24
  statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
20
25
 
21
26
  if (statementVerified) {
@@ -19,15 +19,11 @@ export default function unifyStatementAgainstStatement(statementNodeA, statement
19
19
  substitutionsA.push(substitutionA);
20
20
  }
21
21
 
22
- const nonTerminalNodeA = statementNodeA, ///
23
- nonTerminalNodeB = statementNodeB, ///
24
- nonTerminalNodeUnified = metaLevelUnifier.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutionsA, localContextA, localContextB, () => {
25
- const verifiedAhead = true;
22
+ const nodeA = statementNodeA, ///
23
+ nodeB = statementNodeB, ///
24
+ unified = metaLevelUnifier.unify(nodeA, nodeB, substitutionsA, localContextA, localContextB);
26
25
 
27
- return verifiedAhead;
28
- });
29
-
30
- if (nonTerminalNodeUnified) {
26
+ if (unified) {
31
27
  if (!transformed) {
32
28
  const substitutionB = termForVariableSubstitution, ///
33
29
  substitutionsB = [
@@ -6,7 +6,7 @@ export default function unifyTermAgainstTerm(termNodeA, termNodeB, localContext,
6
6
  let termUnifiedAgainstTerm = false;
7
7
 
8
8
  const leftTermNode = termNodeA, ///
9
- rightTermNode = termNodeB, ///
9
+ rightTermNode = termNodeB, ///
10
10
  equivalences = localContext.getEquivalences(),
11
11
  termNodesEqual = areTermNodesEqual(leftTermNode, rightTermNode, equivalences);
12
12
 
@@ -1,17 +1,21 @@
1
1
  "use strict";
2
2
 
3
+ import shim from "../shim";
4
+
3
5
  import { first } from "../utilities/array";
4
6
 
5
- export default function unifyTermAgainstType(termNode, typeNode, localContext, unifyAhead, verifyTerm) {
7
+ export default function unifyTermAgainstType(termNodeA, typeNodeB, localContext, unifyAhead) {
6
8
  let termUnifiedAgainstType;
7
9
 
8
- const terms = [],
9
- termVerified = verifyTerm(termNode, terms, localContext, () => {
10
+ const { verifyTerm } = shim,
11
+ terms = [],
12
+ termVerified = verifyTerm(termNodeA, terms, localContext, () => {
10
13
  let unifiedAhead = false;
11
14
 
12
15
  const firstTerm = first(terms),
13
16
  term = firstTerm, ///
14
17
  termType = term.getType(),
18
+ typeNode = typeNodeB, ///
15
19
  type = localContext.findTypeByTypeNode(typeNode),
16
20
  termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
17
21
 
@@ -18,7 +18,7 @@ export function nodeAsString(node, tokens) {
18
18
  string = nonTerminalNodeAsString(nonTerminalNode, tokens);
19
19
  }
20
20
 
21
- string = string.replace(/[\r\n]/, EMPTY_STRING);
21
+ string = string.replace(/\s+$/, EMPTY_STRING);
22
22
  }
23
23
 
24
24
  return string;
@@ -2,7 +2,6 @@
2
2
 
3
3
  import Verifier from "../verifier";
4
4
 
5
- import { verify } from "../verifier";
6
5
  import { nodeQuery } from "../utilities/query";
7
6
  import { verifyStandaloneTerm } from "../verify/term";
8
7
  import { verifyStandaloneVariable } from "../verify/variable";
@@ -10,96 +9,53 @@ import { verifyStandaloneMetavariable } from "../verify/metavariable";
10
9
 
11
10
  const termNodeQuery = nodeQuery("/term!"),
12
11
  variableNodeQuery = nodeQuery("/variable!"),
13
- nonTerminalNodeQuery = nodeQuery("/*"),
14
12
  metavariableNodeQuery = nodeQuery("/metavariable!");
15
13
 
16
14
  class MetaLevelVerifier extends Verifier {
17
- verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
18
- let nonTerminalNodeVerified;
15
+ verify(node, localContext) {
16
+ let verified;
19
17
 
20
- const nodeQueryMaps = [
21
- {
22
- nodeQuery: termNodeQuery,
23
- verify: (node, localContext, verifyAhead) => {
24
- let nonTerminalNodeVerified;
18
+ const nonTerminalNode = node, ///
19
+ nonTerminalNodeVerified = this.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
20
+ const verifiedAhead = true;
25
21
 
26
- const termNode = node, ///
27
- termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
22
+ return verifiedAhead;
23
+ });
28
24
 
29
- nonTerminalNodeVerified = termNodeVerified; ///
25
+ verified = nonTerminalNodeVerified; ///
30
26
 
31
- return nonTerminalNodeVerified;
32
- }
33
- },
34
- {
35
- nodeQuery: variableNodeQuery,
36
- verify: (node, localContext, verifyAhead) => {
37
- let nonTerminalNodeVerified;
38
-
39
- const variableNode = node, ///
40
- variableNodeVerified = this.verifyVariableNode(variableNode, localContext, verifyAhead);
41
-
42
- nonTerminalNodeVerified = variableNodeVerified; ///
43
-
44
- return nonTerminalNodeVerified;
45
- }
46
- },
47
- {
48
- nodeQuery: metavariableNodeQuery,
49
- verify: (node, localContext, verifyAhead) => {
50
- let nonTerminalNodeVerified;
51
-
52
- const metavariableNode = node, ///
53
- metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode, localContext, verifyAhead);
54
-
55
- nonTerminalNodeVerified = metavariableNodeVerified; ///
56
-
57
- return nonTerminalNodeVerified;
58
- }
59
- },
60
- {
61
- nodeQuery: nonTerminalNodeQuery,
62
- verify: (node, localContext, verifyAhead) => {
63
- let nonTerminalNodeVerified;
64
-
65
- const nonTerminalNode = node; ///
66
-
67
- nonTerminalNodeVerified =
68
-
69
- super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
70
-
71
- return nonTerminalNodeVerified;
72
- }
73
- }
74
- ];
75
-
76
- const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
77
-
78
- nonTerminalNodeVerified = nodeVerified; ///
79
-
80
- return nonTerminalNodeVerified;
81
- }
82
-
83
- verifyMetavariableNode(metavariableNode, localContext, verifyAhead) {
84
- const standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, localContext, verifyAhead),
85
- metavariableNodeVerified = standaloneMetavariableVerified; ///
86
-
87
- return metavariableNodeVerified;
88
- }
89
-
90
- verifyVariableNode(variableNode, localContext, verifyAhead) {
91
- const standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
92
- variableNodeVerified = standaloneVariableVerified; ///
93
-
94
- return variableNodeVerified;
27
+ return verified;
95
28
  }
96
29
 
97
- verifyTermNode(termNode, localContext, verifyAhead) {
98
- const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
99
- termNodeVerified = standaloneTermVerified; ///
30
+ static maps = [
31
+ {
32
+ nodeQuery: metavariableNodeQuery,
33
+ verify: (metavariableNode, localContext, verifyAhead) => {
34
+ const standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, localContext, verifyAhead),
35
+ metavariableVerified = standaloneMetavariableVerified; ///
100
36
 
101
- return termNodeVerified;
102
- }
37
+ return metavariableVerified;
38
+ }
39
+ },
40
+ {
41
+ nodeQuery: variableNodeQuery,
42
+ verify: (variableNode, localContext, verifyAhead) => {
43
+ const standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
44
+ variableVerified = standaloneVariableVerified; ///
45
+
46
+ return variableVerified;
47
+ }
48
+ },
49
+ {
50
+ nodeQuery: termNodeQuery,
51
+ verify: (termNode, localContext, verifyAhead) => {
52
+ const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
53
+ termVerified = standaloneTermVerified; ///
54
+
55
+ return termVerified;
56
+ }
57
+ }
58
+ ];
103
59
  }
104
60
 
105
61
  const metaLevelVerifier = new MetaLevelVerifier();
@@ -2,7 +2,6 @@
2
2
 
3
3
  import Verifier from "../verifier";
4
4
 
5
- import { verify } from "../verifier";
6
5
  import { nodeQuery } from "../utilities/query";
7
6
  import { verifyStandaloneType } from "../verify/type";
8
7
  import { verifyStandaloneTerm } from "../verify/term";
@@ -10,96 +9,54 @@ import { verifyStandaloneStatement } from "../verify/statement";
10
9
 
11
10
  const termNodeQuery = nodeQuery("/term!"),
12
11
  typeNodeQuery = nodeQuery("/type!"),
13
- statementNodeQuery = nodeQuery("/statement!"),
14
- nonTerminalNodeQuery = nodeQuery("/*");
12
+ statementNodeQuery = nodeQuery("/statement!");
15
13
 
16
14
  class StatementAsCombinatorVerifier extends Verifier {
17
- verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
18
- let nonTerminalNodeVerified;
15
+ verify(statementNode, fileContext) {
16
+ let statementVerifiedAsCombinator;
19
17
 
20
- const nodeQueryMaps = [
21
- {
22
- nodeQuery: termNodeQuery,
23
- verify: (node, localContext, verifyAhead) => {
24
- let nonTerminalNodeVerified;
18
+ const nonTerminalNode = statementNode, ///
19
+ childNodes = nonTerminalNode.getChildNodes(),
20
+ childNodesVerified = this.verifyChildNodes(childNodes, fileContext, () => {
21
+ const verifiedAhead = true;
25
22
 
26
- const termNode = node, ///
27
- termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
23
+ return verifiedAhead;
24
+ });
28
25
 
29
- nonTerminalNodeVerified = termNodeVerified; ///
26
+ statementVerifiedAsCombinator = childNodesVerified; ///
30
27
 
31
- return nonTerminalNodeVerified;
32
- }
33
- },
34
- {
35
- nodeQuery: typeNodeQuery,
36
- verify: (node, localContext, verifyAhead) => {
37
- let nonTerminalNodeVerified;
38
-
39
- const typeNode = node, ///
40
- typeNodeVerified = this.verifyTypeNode(typeNode, localContext, verifyAhead);
41
-
42
- nonTerminalNodeVerified = typeNodeVerified; ///
43
-
44
- return nonTerminalNodeVerified;
45
- }
46
- },
47
- {
48
- nodeQuery: statementNodeQuery,
49
- verify: (node, localContext, verifyAhead) => {
50
- let nonTerminalNodeVerified;
51
-
52
- const statementNode = node, ///
53
- statementNodeVerified = this.verifyStatementNode(statementNode, localContext, verifyAhead);
54
-
55
- nonTerminalNodeVerified = statementNodeVerified; ///
56
-
57
- return nonTerminalNodeVerified;
58
- }
59
- },
60
- {
61
- nodeQuery: nonTerminalNodeQuery,
62
- verify: (node, localContext, verifyAhead) => {
63
- let nonTerminalNodeVerified;
64
-
65
- const nonTerminalNode = node; ///
66
-
67
- nonTerminalNodeVerified =
68
-
69
- super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
70
-
71
- return nonTerminalNodeVerified;
72
- }
73
- }
74
- ];
75
-
76
- const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
77
-
78
- nonTerminalNodeVerified = nodeVerified; ///
79
-
80
- return nonTerminalNodeVerified;
81
- }
82
-
83
- verifyStatementNode(statementNode, localContext, verifyAhead) {
84
- const standaloneStatementVerified = verifyStandaloneStatement(statementNode, localContext, verifyAhead),
85
- statementNodeVerified = standaloneStatementVerified; ///
86
-
87
- return statementNodeVerified;
88
- }
89
-
90
- verifyTermNode(termNode, localContext, verifyAhead) {
91
- const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
92
- termNodeVerified = standaloneTermVerified; ///
93
-
94
- return termNodeVerified;
28
+ return statementVerifiedAsCombinator;
95
29
  }
96
30
 
97
- verifyTypeNode(typeNode, localContext, verifyAhead) {
98
- const standaloneTypeVerified = verifyStandaloneType(typeNode, localContext, verifyAhead),
99
- typeNodeVerified = standaloneTypeVerified; ///
31
+ static maps = [
32
+ {
33
+ nodeQuery: termNodeQuery,
34
+ verify: (termNode, localContext, verifyAhead) => {
35
+ const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
36
+ termVerified = standaloneTermVerified; ///
100
37
 
101
- return typeNodeVerified;
102
- }
38
+ return termVerified;
39
+ }
40
+ },
41
+ {
42
+ nodeQuery: typeNodeQuery,
43
+ verify: (typeNode, localContext, verifyAhead) => {
44
+ const standaloneTypeVerified = verifyStandaloneType(typeNode, localContext, verifyAhead),
45
+ typeVerified = standaloneTypeVerified; ///
46
+
47
+ return typeVerified;
48
+ }
49
+ },
50
+ {
51
+ nodeQuery: statementNodeQuery,
52
+ verify: (statementNode, localContext, verifyAhead) => {
53
+ const standaloneStatementVerified = verifyStandaloneStatement(statementNode, localContext, verifyAhead),
54
+ statementVerified = standaloneStatementVerified; ///
55
+
56
+ return statementVerified;
57
+ }
58
+ }
59
+ ];
103
60
  }
104
61
 
105
62
  const statementAsCombinatorVerifier = new StatementAsCombinatorVerifier();
@@ -1,83 +1,54 @@
1
1
  "use strict";
2
2
 
3
3
  import Verifier from "../verifier";
4
+ import LocalContext from "../context/local";
4
5
 
5
- import { verify } from "../verifier";
6
6
  import { nodeQuery } from "../utilities/query";
7
7
  import { verifyStandaloneType } from "../verify/type";
8
8
  import { verifyStandaloneTerm } from "../verify/term";
9
9
 
10
10
  const termNodeQuery = nodeQuery("/term!"),
11
- typeNodeQuery = nodeQuery("/type!"),
12
- nonTerminalNodeQuery = nodeQuery("/*");
11
+ typeNodeQuery = nodeQuery("/type!");
13
12
 
14
13
  class TermAsConstructorVerifier extends Verifier {
15
- verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
16
- let nonTerminalNodeVerified;
14
+ verify(termNode, fileContext) {
15
+ let termVerifiedAsConstructor;
17
16
 
18
- const nodeQueryMaps = [
19
- {
20
- nodeQuery: termNodeQuery,
21
- verify: (node, localContext, verifyAhead) => {
22
- let nonTerminalNodeVerified;
17
+ const nonTerminalNode = termNode, ///
18
+ childNodes = nonTerminalNode.getChildNodes(),
19
+ childNodesVerified = this.verifyChildNodes(childNodes, fileContext, () => {
20
+ const verifiedAhead = true;
23
21
 
24
- const termNode = node, ///
25
- termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
22
+ return verifiedAhead;
23
+ });
26
24
 
27
- nonTerminalNodeVerified = termNodeVerified; ///
25
+ termVerifiedAsConstructor = childNodesVerified; ///
28
26
 
29
- return nonTerminalNodeVerified;
30
- }
31
- },
32
- {
33
- nodeQuery: typeNodeQuery,
34
- verify: (node, localContext, verifyAhead) => {
35
- let nonTerminalNodeVerified;
36
-
37
- const typeNode = node, ///
38
- typeNodeVerified = this.verifyTypeNode(typeNode, localContext, verifyAhead);
39
-
40
- nonTerminalNodeVerified = typeNodeVerified; ///
41
-
42
- return nonTerminalNodeVerified;
43
- }
44
- },
45
- {
46
- nodeQuery: nonTerminalNodeQuery,
47
- verify: (node, localContext, verifyAhead) => {
48
- let nonTerminalNodeVerified;
49
-
50
- const nonTerminalNode = node; ///
51
-
52
- nonTerminalNodeVerified =
53
-
54
- super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
55
-
56
- return nonTerminalNodeVerified;
57
- }
58
- }
59
- ];
60
-
61
- const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
62
-
63
- nonTerminalNodeVerified = nodeVerified; ///
64
-
65
- return nonTerminalNodeVerified;
66
- }
67
-
68
- verifyTermNode(termNode, localContext, verifyAhead) {
69
- const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
70
- termNodeVerified = standaloneTermVerified; ///
71
-
72
- return termNodeVerified;
27
+ return termVerifiedAsConstructor;
73
28
  }
74
29
 
75
- verifyTypeNode(typeNode, localContext, verifyAhead) {
76
- const standaloneTypeVerified = verifyStandaloneType(typeNode, localContext, verifyAhead),
77
- typeNodeVerified = standaloneTypeVerified; ///
30
+ static maps = [
31
+ {
32
+ nodeQuery: termNodeQuery,
33
+ verify: (termNode, fileContext, verifyAhead) => {
34
+ const localContext = LocalContext.fromFileContext(fileContext),
35
+ standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
36
+ termVerified = standaloneTermVerified; ///
78
37
 
79
- return typeNodeVerified;
80
- }
38
+ return termVerified;
39
+ }
40
+ },
41
+ {
42
+ nodeQuery: typeNodeQuery,
43
+ verify: (typeNode, fileContext, verifyAhead) => {
44
+ const localContext = LocalContext.fromFileContext(fileContext),
45
+ standaloneTypeVerified = verifyStandaloneType(typeNode, localContext, verifyAhead),
46
+ typeVerified = standaloneTypeVerified; ///
47
+
48
+ return typeVerified;
49
+ }
50
+ }
51
+ ];
81
52
  }
82
53
 
83
54
  const termAsConstructorVerifier = new TermAsConstructorVerifier();
package/src/verifier.js CHANGED
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ import { nodeQuery } from "./utilities/query";
4
+
5
+ const nonTerminalNodeQuery = nodeQuery("/*");
6
+
3
7
  export default class Verifier {
8
+ verify(node, ...remainingArguments) {
9
+ let verified;
10
+
11
+ const nodeVerified = this.verifyNode(node, ...remainingArguments);
12
+
13
+ verified = nodeVerified; ///
14
+
15
+ return verified;
16
+ }
17
+
4
18
  verifyNode(node, ...remainingArguments) {
5
19
  let nodeVerified;
6
20
 
@@ -46,10 +60,40 @@ export default class Verifier {
46
60
  verifyNonTerminalNode(nonTerminalNode, ...remainingArguments) {
47
61
  let nonTerminalNodeVerified;
48
62
 
49
- const childNodes = nonTerminalNode.getChildNodes(), ///
50
- childNodesVerify = this.verifyChildNodes(childNodes, ...remainingArguments);
63
+ let { maps } = this.constructor;
64
+
65
+ maps = [ ///
66
+ ...maps,
67
+ {
68
+ nodeQuery: nonTerminalNodeQuery,
69
+ verify: (node, ...remainingArguments) => {
70
+ let nonTerminalNodeVerified;
71
+
72
+ const childNodes = nonTerminalNode.getChildNodes(), ///
73
+ childNodesVerify = this.verifyChildNodes(childNodes, ...remainingArguments);
74
+
75
+ nonTerminalNodeVerified = childNodesVerify; ///
76
+
77
+ return nonTerminalNodeVerified;
78
+ }
79
+ }
80
+ ]
81
+
82
+ let nodeVerified = false;
51
83
 
52
- nonTerminalNodeVerified = childNodesVerify; ///
84
+ maps.some((map) => {
85
+ const { nodeQuery, verify } = map;
86
+
87
+ const node = nodeQuery(nonTerminalNode);
88
+
89
+ if (node !== null) {
90
+ nodeVerified = verify(node, ...remainingArguments);
91
+
92
+ return true;
93
+ }
94
+ });
95
+
96
+ nonTerminalNodeVerified = nodeVerified; ///
53
97
 
54
98
  return nonTerminalNodeVerified;
55
99
  }
@@ -82,21 +126,3 @@ export default class Verifier {
82
126
  return childNodesVerify;
83
127
  }
84
128
  }
85
-
86
- export function verify(nodeQueryMaps, nonTerminalNode, ...remainingArguments) {
87
- let nodeVerified = false;
88
-
89
- nodeVerified = nodeQueryMaps.some((nodeQueryMap) => {
90
- const { nodeQuery, verify } = nodeQueryMap;
91
-
92
- const node = nodeQuery(nonTerminalNode);
93
-
94
- if (node !== null) {
95
- nodeVerified = verify(node, ...remainingArguments);
96
-
97
- return true;
98
- }
99
- });
100
-
101
- return nodeVerified;
102
- }
@@ -83,14 +83,9 @@ function verifyStatedContainedAssertion(containedAssertionNode, assignments, der
83
83
 
84
84
  localContext.debug(`The '${containedAssertionString}' stated contained assertion cannot be verified.`, containedAssertionNode);
85
85
 
86
- const nonTerminalNode = containedAssertionNode, ///
87
- nonTerminalNodeVerified = metaLevelVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
88
- const verifiedAhead = true;
86
+ const verified = metaLevelVerifier.verify(containedAssertionNode, localContext);
89
87
 
90
- return verifiedAhead;
91
- });
92
-
93
- statedContainedAssertionVerified = nonTerminalNodeVerified; ///
88
+ statedContainedAssertionVerified = verified; ///
94
89
 
95
90
  if (statedContainedAssertionVerified) {
96
91
  localContext.debug(`...verified the '${containedAssertionString}' stated contained assertion.`, containedAssertionNode);
@@ -112,14 +112,9 @@ function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived
112
112
 
113
113
  localContext.trace(`Verifying the '${definedAssertionString}' stated defined assertion...`, definedAssertionNode);
114
114
 
115
- const nonTerminalNode = definedAssertionNode, ///
116
- nonTerminalNodeVerified = metaLevelVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
117
- const verifiedAhead = true;
115
+ const verified = metaLevelVerifier.verify(definedAssertionNode, localContext);
118
116
 
119
- return verifiedAhead;
120
- });
121
-
122
- statedDefinedAssertionVerified = nonTerminalNodeVerified; ///
117
+ statedDefinedAssertionVerified = verified; ///
123
118
 
124
119
  if (statedDefinedAssertionVerified) {
125
120
  localContext.debug(`...verified the '${definedAssertionString}' stated defined assertion.`, definedAssertionNode);
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { nodesQuery } from "../../utilities/query";
4
- import { STATEMENT_META_TYPE_NAME } from "../../metaTypeNames";
5
-
6
- const metavariableNodesQuery = nodesQuery("/subproofAssertion/statement/metavariable!");
3
+ import metaLevelVerifier from "../../verifier/metaLevel";
7
4
 
8
5
  export default function verifySubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
9
6
  let subproofAssertionVerified;
@@ -54,19 +51,9 @@ function verifyStatedSubproofAssertion(subproofAssertionNode, assignments, deriv
54
51
 
55
52
  localContext.trace(`Verifying the '${subproofAssertionString}' stated subproof assertion...`, subproofAssertionNode);
56
53
 
57
- const metavariableNodes = metavariableNodesQuery(subproofAssertionNode);
58
-
59
- statedSubproofAssertionVerified = metavariableNodes.every((metavariableNode) => {
60
- const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
61
-
62
- if (metavariable !== null) {
63
- const metaTypeName = metavariable.getMetaTypeName();
54
+ const verified = metaLevelVerifier.verify(subproofAssertionNode, localContext);
64
55
 
65
- if (metaTypeName === STATEMENT_META_TYPE_NAME) {
66
- return true;
67
- }
68
- }
69
- });
56
+ statedSubproofAssertionVerified = verified; ///
70
57
 
71
58
  if (statedSubproofAssertionVerified) {
72
59
  localContext.debug(`...verified the '${subproofAssertionString}' stated subproof assertion.`, subproofAssertionNode);