occam-verify-cli 0.0.932 → 0.0.933

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 (103) hide show
  1. package/lib/conclusion.js +4 -4
  2. package/lib/consequent.js +4 -4
  3. package/lib/context/local.js +181 -3
  4. package/lib/equality.js +4 -4
  5. package/lib/metaLemma.js +4 -4
  6. package/lib/metatheorem.js +4 -4
  7. package/lib/premise.js +6 -6
  8. package/lib/substitution/statementForMetavariable.js +2 -2
  9. package/lib/supposition.js +6 -6
  10. package/lib/unifier/equality.js +216 -0
  11. package/lib/unifier/metaLevel.js +231 -0
  12. package/lib/unifier/statementAgainstCombinator.js +231 -0
  13. package/lib/unifier/termAgainstConstructor.js +211 -0
  14. package/lib/unifier.js +201 -0
  15. package/lib/unify/argumentAgainstArgument.js +24 -0
  16. package/lib/unify/metavariableAgainstStatement.js +66 -0
  17. package/lib/unify/statementAgainstMetaType.js +28 -0
  18. package/lib/unify/statementAtainstStatement.js +52 -0
  19. package/lib/unify/termAgainstTerm.js +22 -0
  20. package/lib/unify/termAgainstType.js +26 -0
  21. package/lib/unify/variableAgainstTerm.js +70 -0
  22. package/lib/verifier/metaLevel.js +236 -0
  23. package/lib/verifier/statementAsCombinator.js +236 -0
  24. package/lib/verifier/termAsConstructor.js +219 -0
  25. package/lib/verifier.js +182 -0
  26. package/lib/verify/assertion/contained.js +2 -2
  27. package/lib/verify/assertion/defined.js +2 -2
  28. package/lib/verify/declaration.js +3 -3
  29. package/lib/verify/frame.js +9 -12
  30. package/lib/verify/judgement.js +2 -2
  31. package/lib/verify/statement/qualified.js +6 -3
  32. package/lib/verify/statement/unqualified.js +2 -1
  33. package/lib/verify/statement.js +26 -19
  34. package/lib/verify/statementAsCombinator.js +2 -2
  35. package/lib/verify/term.js +6 -6
  36. package/lib/verify/termAsConstructor.js +2 -2
  37. package/package.json +2 -2
  38. package/src/conclusion.js +3 -3
  39. package/src/consequent.js +3 -3
  40. package/src/context/local.js +60 -3
  41. package/src/equality.js +3 -3
  42. package/src/metaLemma.js +1 -1
  43. package/src/metatheorem.js +1 -1
  44. package/src/premise.js +5 -5
  45. package/src/substitution/statementForMetavariable.js +2 -2
  46. package/src/supposition.js +5 -5
  47. package/src/unifier/equality.js +84 -0
  48. package/src/unifier/metaLevel.js +109 -0
  49. package/src/unifier/statementAgainstCombinator.js +104 -0
  50. package/src/unifier/termAgainstConstructor.js +76 -0
  51. package/src/unifier.js +133 -0
  52. package/src/unify/argumentAgainstArgument.js +15 -0
  53. package/src/{verify → unify}/metavariableAgainstStatement.js +18 -18
  54. package/src/{verify → unify}/statementAgainstMetaType.js +4 -4
  55. package/src/{verify → unify}/statementAtainstStatement.js +7 -7
  56. package/src/{verify → unify}/termAgainstTerm.js +5 -5
  57. package/src/{verify → unify}/termAgainstType.js +7 -7
  58. package/src/{verify → unify}/variableAgainstTerm.js +6 -6
  59. package/src/verifier/{node/metaLevel.js → metaLevel.js} +14 -14
  60. package/src/verifier/{node/statementAsCombinator.js → statementAsCombinator.js} +14 -14
  61. package/src/verifier/{node/termAsConstructor.js → termAsConstructor.js} +12 -12
  62. package/src/{verifier/node.js → verifier.js} +19 -1
  63. package/src/verify/assertion/contained.js +2 -2
  64. package/src/verify/assertion/defined.js +2 -2
  65. package/src/verify/declaration.js +3 -3
  66. package/src/verify/frame.js +10 -13
  67. package/src/verify/judgement.js +1 -1
  68. package/src/verify/statement/qualified.js +12 -3
  69. package/src/verify/statement/unqualified.js +2 -1
  70. package/src/verify/statement.js +30 -25
  71. package/src/verify/statementAsCombinator.js +2 -2
  72. package/src/verify/term.js +6 -6
  73. package/src/verify/termAsConstructor.js +2 -2
  74. package/lib/mixins/context.js +0 -135
  75. package/lib/mixins/nodesVerifier/intrinsiclevel.js +0 -59
  76. package/lib/mixins/nodesVerifier/metaLevel.js +0 -40
  77. package/lib/utilities/verifier.js +0 -80
  78. package/lib/verifier/node/metaLevel.js +0 -201
  79. package/lib/verifier/node/statementAsCombinator.js +0 -201
  80. package/lib/verifier/node/termAsConstructor.js +0 -184
  81. package/lib/verifier/node.js +0 -157
  82. package/lib/verifier/nodes/equality.js +0 -176
  83. package/lib/verifier/nodes/metaLevel.js +0 -191
  84. package/lib/verifier/nodes/statementAgainstCombinator.js +0 -191
  85. package/lib/verifier/nodes/termAgainstConstructor.js +0 -171
  86. package/lib/verifier/nodes.js +0 -175
  87. package/lib/verify/argumentAgainstArgument.js +0 -24
  88. package/lib/verify/metavariableAgainstStatement.js +0 -66
  89. package/lib/verify/statementAgainstMetaType.js +0 -28
  90. package/lib/verify/statementAtainstStatement.js +0 -52
  91. package/lib/verify/termAgainstTerm.js +0 -22
  92. package/lib/verify/termAgainstType.js +0 -26
  93. package/lib/verify/variableAgainstTerm.js +0 -70
  94. package/src/mixins/context.js +0 -96
  95. package/src/mixins/nodesVerifier/intrinsiclevel.js +0 -73
  96. package/src/mixins/nodesVerifier/metaLevel.js +0 -39
  97. package/src/utilities/verifier.js +0 -38
  98. package/src/verifier/nodes/equality.js +0 -84
  99. package/src/verifier/nodes/metaLevel.js +0 -109
  100. package/src/verifier/nodes/statementAgainstCombinator.js +0 -105
  101. package/src/verifier/nodes/termAgainstConstructor.js +0 -76
  102. package/src/verifier/nodes.js +0 -114
  103. package/src/verify/argumentAgainstArgument.js +0 -15
@@ -8,8 +8,8 @@ import { nodeQuery } from "../utilities/query";
8
8
 
9
9
  const variableNodeQuery = nodeQuery("/term/variable");
10
10
 
11
- export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
12
- let variableVerifiedAgainstTerm = false;
11
+ export default function unifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
12
+ let variableUnifiedAgainstTerm = false;
13
13
 
14
14
  const substitution = substitutions.find((substitution) => {
15
15
  const substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNodeA);
@@ -25,14 +25,14 @@ export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, subs
25
25
  if (substitutionMatchesTermNodeB) {
26
26
  const verifiedAhead = verifyAhead();
27
27
 
28
- variableVerifiedAgainstTerm = verifiedAhead; ///
28
+ variableUnifiedAgainstTerm = verifiedAhead; ///
29
29
  }
30
30
  } else {
31
31
  const variableA = localContextA.findVariableByVariableNode(variableNodeA);
32
32
 
33
33
  if (variableA !== null) {
34
34
  const terms = [],
35
- termVerified = verifyTerm(termNodeB, terms, localContextB, () => {
35
+ termUnified = verifyTerm(termNodeB, terms, localContextB, () => {
36
36
  let verifiedAhead = false;
37
37
 
38
38
  const firstTerm = first(terms),
@@ -67,11 +67,11 @@ export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, subs
67
67
  return verifiedAhead;
68
68
  });
69
69
 
70
- variableVerifiedAgainstTerm = termVerified; ///
70
+ variableUnifiedAgainstTerm = termUnified; ///
71
71
  }
72
72
  }
73
73
 
74
- return variableVerifiedAgainstTerm;
74
+ return variableUnifiedAgainstTerm;
75
75
  }
76
76
 
77
77
  function variableFromTerm(term, localContext) {
@@ -1,26 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import NodeVerifier from "../../verifier/node";
3
+ import Verifier from "../verifier";
4
4
 
5
- import { nodeQuery } from "../../utilities/query";
6
- import { verifyNode } from "../../utilities/verifier";
7
- import { verifyStandaloneTerm } from "../../verify/term";
8
- import { verifyStandaloneVariable } from "../../verify/variable";
9
- import { verifyStandaloneMetavariable } from "../../verify/metavariable";
5
+ import { verify } from "../verifier";
6
+ import { nodeQuery } from "../utilities/query";
7
+ import { verifyStandaloneTerm } from "../verify/term";
8
+ import { verifyStandaloneVariable } from "../verify/variable";
9
+ import { verifyStandaloneMetavariable } from "../verify/metavariable";
10
10
 
11
11
  const termNodeQuery = nodeQuery("/term!"),
12
12
  variableNodeQuery = nodeQuery("/variable!"),
13
13
  nonTerminalNodeQuery = nodeQuery("/*"),
14
14
  metavariableNodeQuery = nodeQuery("/metavariable!");
15
15
 
16
- class MetaLevelNodeVerifier extends NodeVerifier {
16
+ class MetaLevelVerifier extends Verifier {
17
17
  verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
18
18
  let nonTerminalNodeVerified;
19
19
 
20
20
  const nodeQueryMaps = [
21
21
  {
22
22
  nodeQuery: termNodeQuery,
23
- verifyNode: (node, localContext, verifyAhead) => {
23
+ verify: (node, localContext, verifyAhead) => {
24
24
  let nonTerminalNodeVerified;
25
25
 
26
26
  const termNode = node, ///
@@ -33,7 +33,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
33
33
  },
34
34
  {
35
35
  nodeQuery: variableNodeQuery,
36
- verifyNode: (node, localContext, verifyAhead) => {
36
+ verify: (node, localContext, verifyAhead) => {
37
37
  let nonTerminalNodeVerified;
38
38
 
39
39
  const variableNode = node, ///
@@ -46,7 +46,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
46
46
  },
47
47
  {
48
48
  nodeQuery: metavariableNodeQuery,
49
- verifyNode: (node, localContext, verifyAhead) => {
49
+ verify: (node, localContext, verifyAhead) => {
50
50
  let nonTerminalNodeVerified;
51
51
 
52
52
  const metavariableNode = node, ///
@@ -59,7 +59,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
59
59
  },
60
60
  {
61
61
  nodeQuery: nonTerminalNodeQuery,
62
- verifyNode: (node, localContext, verifyAhead) => {
62
+ verify: (node, localContext, verifyAhead) => {
63
63
  let nonTerminalNodeVerified;
64
64
 
65
65
  const nonTerminalNode = node; ///
@@ -73,7 +73,7 @@ class MetaLevelNodeVerifier extends NodeVerifier {
73
73
  }
74
74
  ];
75
75
 
76
- const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
76
+ const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
77
77
 
78
78
  nonTerminalNodeVerified = nodeVerified; ///
79
79
 
@@ -102,6 +102,6 @@ class MetaLevelNodeVerifier extends NodeVerifier {
102
102
  }
103
103
  }
104
104
 
105
- const metaLevelNodeVerifier = new MetaLevelNodeVerifier();
105
+ const metaLevelVerifier = new MetaLevelVerifier();
106
106
 
107
- export default metaLevelNodeVerifier;
107
+ export default metaLevelVerifier;
@@ -1,26 +1,26 @@
1
1
  "use strict";
2
2
 
3
- import NodeVerifier from "../../verifier/node";
3
+ import Verifier from "../verifier";
4
4
 
5
- import { nodeQuery } from "../../utilities/query";
6
- import { verifyNode } from "../../utilities/verifier";
7
- import { verifyStandaloneType } from "./../../verify/type";
8
- import { verifyStandaloneTerm } from "./../../verify/term";
9
- import { verifyStandaloneStatement } from "../../verify/statement";
5
+ import { verify } from "../verifier";
6
+ import { nodeQuery } from "../utilities/query";
7
+ import { verifyStandaloneType } from "../verify/type";
8
+ import { verifyStandaloneTerm } from "../verify/term";
9
+ import { verifyStandaloneStatement } from "../verify/statement";
10
10
 
11
11
  const termNodeQuery = nodeQuery("/term!"),
12
12
  typeNodeQuery = nodeQuery("/type!"),
13
13
  statementNodeQuery = nodeQuery("/statement!"),
14
14
  nonTerminalNodeQuery = nodeQuery("/*");
15
15
 
16
- class StatementAsCombinatorNodeVerifier extends NodeVerifier {
16
+ class StatementAsCombinatorVerifier extends Verifier {
17
17
  verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
18
18
  let nonTerminalNodeVerified;
19
19
 
20
20
  const nodeQueryMaps = [
21
21
  {
22
22
  nodeQuery: termNodeQuery,
23
- verifyNode: (node, localContext, verifyAhead) => {
23
+ verify: (node, localContext, verifyAhead) => {
24
24
  let nonTerminalNodeVerified;
25
25
 
26
26
  const termNode = node, ///
@@ -33,7 +33,7 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
33
33
  },
34
34
  {
35
35
  nodeQuery: typeNodeQuery,
36
- verifyNode: (node, localContext, verifyAhead) => {
36
+ verify: (node, localContext, verifyAhead) => {
37
37
  let nonTerminalNodeVerified;
38
38
 
39
39
  const typeNode = node, ///
@@ -46,7 +46,7 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
46
46
  },
47
47
  {
48
48
  nodeQuery: statementNodeQuery,
49
- verifyNode: (node, localContext, verifyAhead) => {
49
+ verify: (node, localContext, verifyAhead) => {
50
50
  let nonTerminalNodeVerified;
51
51
 
52
52
  const statementNode = node, ///
@@ -59,7 +59,7 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
59
59
  },
60
60
  {
61
61
  nodeQuery: nonTerminalNodeQuery,
62
- verifyNode: (node, localContext, verifyAhead) => {
62
+ verify: (node, localContext, verifyAhead) => {
63
63
  let nonTerminalNodeVerified;
64
64
 
65
65
  const nonTerminalNode = node; ///
@@ -73,7 +73,7 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
73
73
  }
74
74
  ];
75
75
 
76
- const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
76
+ const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
77
77
 
78
78
  nonTerminalNodeVerified = nodeVerified; ///
79
79
 
@@ -102,6 +102,6 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
102
102
  }
103
103
  }
104
104
 
105
- const statementAsCombinatorNodeVerifier = new StatementAsCombinatorNodeVerifier();
105
+ const statementAsCombinatorVerifier = new StatementAsCombinatorVerifier();
106
106
 
107
- export default statementAsCombinatorNodeVerifier;
107
+ export default statementAsCombinatorVerifier;
@@ -1,24 +1,24 @@
1
1
  "use strict";
2
2
 
3
- import NodeVerifier from "../../verifier/node";
3
+ import Verifier from "../verifier";
4
4
 
5
- import { nodeQuery } from "../../utilities/query";
6
- import { verifyNode } from "../../utilities/verifier";
7
- import { verifyStandaloneType } from "../../verify/type";
8
- import { verifyStandaloneTerm } from "../../verify/term";
5
+ import { verify } from "../verifier";
6
+ import { nodeQuery } from "../utilities/query";
7
+ import { verifyStandaloneType } from "../verify/type";
8
+ import { verifyStandaloneTerm } from "../verify/term";
9
9
 
10
10
  const termNodeQuery = nodeQuery("/term!"),
11
11
  typeNodeQuery = nodeQuery("/type!"),
12
12
  nonTerminalNodeQuery = nodeQuery("/*");
13
13
 
14
- class TermAsConstructorNodeVerifier extends NodeVerifier {
14
+ class TermAsConstructorVerifier extends Verifier {
15
15
  verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
16
16
  let nonTerminalNodeVerified;
17
17
 
18
18
  const nodeQueryMaps = [
19
19
  {
20
20
  nodeQuery: termNodeQuery,
21
- verifyNode: (node, localContext, verifyAhead) => {
21
+ verify: (node, localContext, verifyAhead) => {
22
22
  let nonTerminalNodeVerified;
23
23
 
24
24
  const termNode = node, ///
@@ -31,7 +31,7 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
31
31
  },
32
32
  {
33
33
  nodeQuery: typeNodeQuery,
34
- verifyNode: (node, localContext, verifyAhead) => {
34
+ verify: (node, localContext, verifyAhead) => {
35
35
  let nonTerminalNodeVerified;
36
36
 
37
37
  const typeNode = node, ///
@@ -44,7 +44,7 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
44
44
  },
45
45
  {
46
46
  nodeQuery: nonTerminalNodeQuery,
47
- verifyNode: (node, localContext, verifyAhead) => {
47
+ verify: (node, localContext, verifyAhead) => {
48
48
  let nonTerminalNodeVerified;
49
49
 
50
50
  const nonTerminalNode = node; ///
@@ -58,7 +58,7 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
58
58
  }
59
59
  ];
60
60
 
61
- const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
61
+ const nodeVerified = verify(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
62
62
 
63
63
  nonTerminalNodeVerified = nodeVerified; ///
64
64
 
@@ -80,6 +80,6 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
80
80
  }
81
81
  }
82
82
 
83
- const termAsConstructorNodeVerifier = new TermAsConstructorNodeVerifier();
83
+ const termAsConstructorVerifier = new TermAsConstructorVerifier();
84
84
 
85
- export default termAsConstructorNodeVerifier;
85
+ export default termAsConstructorVerifier;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- export default class NodeVerifier {
3
+ export default class Verifier {
4
4
  verifyNode(node, ...remainingArguments) {
5
5
  let nodeVerified;
6
6
 
@@ -82,3 +82,21 @@ export default class NodeVerifier {
82
82
  return childNodesVerify;
83
83
  }
84
84
  }
85
+
86
+ export function verify(nodeQueryMaps, nonTerminalNode, ...remainingArguments) {
87
+ let nodeVerified = false;
88
+
89
+ nodeVerified = nodeQueryMaps.some((nodeQueryMap) => {
90
+ const { nodeQuery, verifyNode } = nodeQueryMap;
91
+
92
+ const node = nodeQuery(nonTerminalNode);
93
+
94
+ if (node !== null) {
95
+ nodeVerified = verifyNode(node, ...remainingArguments);
96
+
97
+ return true;
98
+ }
99
+ });
100
+
101
+ return nodeVerified;
102
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import metaLevelNodeVerifier from "../../verifier/node/metaLevel";
3
+ import metaLevelVerifier from "../../verifier/metaLevel";
4
4
 
5
5
  import { isAssertionNegated } from "../../utilities/verify";
6
6
  import { nodeQuery, nodesQuery } from "../../utilities/query";
@@ -84,7 +84,7 @@ function verifyStatedContainedAssertion(containedAssertionNode, assignments, der
84
84
  localContext.debug(`The '${containedAssertionString}' stated contained assertion cannot be verified.`, containedAssertionNode);
85
85
 
86
86
  const nonTerminalNode = containedAssertionNode, ///
87
- nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
87
+ nonTerminalNodeVerified = metaLevelVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
88
88
  const verifiedAhead = true;
89
89
 
90
90
  return verifiedAhead;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyTerm from "../../verify/term";
4
- import metaLevelNodeVerifier from "../../verifier/node/metaLevel";
4
+ import metaLevelVerifier from "../../verifier/metaLevel";
5
5
 
6
6
  import { first } from "../../utilities/array";
7
7
  import { nodeQuery } from "../../utilities/query";
@@ -113,7 +113,7 @@ function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived
113
113
  localContext.trace(`Verifying the '${definedAssertionString}' stated defined assertion...`, definedAssertionNode);
114
114
 
115
115
  const nonTerminalNode = definedAssertionNode, ///
116
- nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
116
+ nonTerminalNodeVerified = metaLevelVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
117
117
  const verifiedAhead = true;
118
118
 
119
119
  return verifiedAhead;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import Declaration from "../declaration"
4
+ import metaLevelUnifier from "../unifier/metaLevel";
4
5
  import referenceMetaType from "../metaType/reference";
5
- import metaLevelNodeVerifier from "../verifier/node/metaLevel";
6
6
 
7
7
  import { nodeQuery } from "../utilities/query";
8
8
 
9
9
  const referenceNodeQuery = nodeQuery("/declaration/reference!"),
10
10
  statementNodeQuery = nodeQuery("/declaration/statement!"),
11
- metavariableNodeQuery = nodeQuery("/reference/metavariable!");
11
+ metavariableNodeQuery = nodeQuery("/metavariable!");
12
12
 
13
13
  export default function verifyDeclaration(declarationNode, declarations, localContext) {
14
14
  let declarationVerified = false;
@@ -23,7 +23,7 @@ export default function verifyDeclaration(declarationNode, declarations, localCo
23
23
  if (referenceVerified) {
24
24
  const statementNode = statementNodeQuery(declarationNode);
25
25
 
26
- const { verifyStatement } = metaLevelNodeVerifier,
26
+ const { verifyStatement } = metaLevelUnifier,
27
27
  derived = false,
28
28
  assignments = [],
29
29
  statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
@@ -19,27 +19,24 @@ export default function verifyFrame(frameNode, frames, assignments, derived, loc
19
19
 
20
20
  const declarations = [],
21
21
  declarationNodes = declarationNodesQuery(frameNode),
22
+ metavariableNodes = metavariableNodesQuery(frameNode),
22
23
  declarationsVerified = declarationNodes.every((declarationNode) => {
23
24
  const declarationVerified = verifyDeclaration(declarationNode, declarations, localContext);
24
25
 
25
26
  return declarationVerified;
26
- });
27
-
28
- if (declarationsVerified) {
29
- const metavariableNodes = metavariableNodesQuery(frameNode),
30
- metavariablesVerified = metavariableNodes.every((metavariableNode) => {
31
- const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localContext);
27
+ }),
28
+ metavariablesVerified = metavariableNodes.every((metavariableNode) => {
29
+ const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localContext);
32
30
 
33
- return metavariableVerified;
34
- });
31
+ return metavariableVerified;
32
+ });
35
33
 
36
- if (metavariablesVerified) {
37
- const frame = Frame.fromDeclarations(declarations);
34
+ if (declarationsVerified && metavariablesVerified) {
35
+ const frame = Frame.fromDeclarations(declarations);
38
36
 
39
- frames.push(frame);
37
+ frames.push(frame);
40
38
 
41
- frameVerified = true;
42
- }
39
+ frameVerified = true;
43
40
  }
44
41
 
45
42
  if (frameVerified) {
@@ -9,7 +9,7 @@ import { first } from "../utilities/array";
9
9
  import { nodeQuery } from "../utilities/query";
10
10
 
11
11
  const frameNodeQuery = nodeQuery("/judgement/frame!"),
12
- metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
12
+ metavariableNodeQuery = nodeQuery("/judgement/statement/metavariable!");
13
13
 
14
14
  export default function verifyJudgement(judgementNode, assignments, derived, localContext) {
15
15
  let judgementVerified;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ import unifyMetavariableAgainstStatement from "../../unify/metavariableAgainstStatement";
4
+
3
5
  import { nodeQuery } from "../../utilities/query";
4
6
  import { verifyStatementAsEquality, verifyStatementAsTypeAssertion } from "../../verify/statement";
5
7
 
6
8
  const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
7
9
  metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
8
10
 
9
- import verifyMetavariableAgainstStatement from "../../verify/metavariableAgainstStatement";
10
-
11
11
  export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, localContext) {
12
12
  let qualifiedStatementVerified;
13
13
 
@@ -184,7 +184,16 @@ function verifyQualifiedStatementAAgainstReference(qualifiedStatementNode, subst
184
184
 
185
185
  if (metavariablePresent) {
186
186
  const statementNode = statementNodeQuery(qualifiedStatementNode),
187
- metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead);
187
+ localContextA = null,
188
+ localContextB = localContext, ///
189
+ statementNodeB = statementNode, ///
190
+ substitutionNode = null,
191
+ metavariableNodeA = metavariableString, ///
192
+ metavariableVerifiedAgainstStatement = unifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, () => {
193
+ const verifiedAhead = true;
194
+
195
+ return verifiedAhead;
196
+ });
188
197
 
189
198
  qualifiedStatementVerifiedAgainstReference = metavariableVerifiedAgainstStatement; ///
190
199
  }
@@ -3,7 +3,7 @@
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
5
  import { nodeQuery } from "../../utilities/query";
6
- import { verifyStatementAsEquality, verifyStatementAsTypeAssertion } from "../../verify/statement";
6
+ import { verifyStatementAsEquality, verifyStatementAsJudgement, verifyStatementAsTypeAssertion } from "../../verify/statement";
7
7
 
8
8
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
9
9
 
@@ -92,6 +92,7 @@ function verifyDerivedStatement(statementNode, assignments, derived, localContex
92
92
 
93
93
  const verifyStatementFunctions = [
94
94
  verifyStatementAsEquality,
95
+ verifyStatementAsJudgement,
95
96
  verifyStatementAsTypeAssertion
96
97
  ];
97
98
 
@@ -2,12 +2,13 @@
2
2
 
3
3
  import verifyEquality from "../verify/equality";
4
4
  import verifyJudgement from "../verify/judgement";
5
+ import metaLevelUnifier from "../unifier/metaLevel";
5
6
  import bracketedCombinator from "../ocmbinator/bracketed";
6
7
  import verifyTypeAssertion from "../verify/assertion/type";
7
8
  import verifyDefinedAssertion from "../verify/assertion/defined";
8
9
  import verifySubproofAssertion from "../verify/assertion/subproof";
9
10
  import verifyContainedAssertion from "../verify/assertion/contained";
10
- import statementAgainstCombinatorNodesVerifier from "../verifier/nodes/statementAgainstCombinator";
11
+ import statementAgainstCombinatorUnifier from "../unifier/statementAgainstCombinator";
11
12
 
12
13
  import { nodeQuery } from "../utilities/query";
13
14
  import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
@@ -15,10 +16,10 @@ import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
15
16
  const variableNodeQuery = nodeQuery("/substitution/variable!"),
16
17
  equalityNodeQuery = nodeQuery("/statement/equality!"),
17
18
  judgementNodeQuery = nodeQuery("/statement/judgement!"),
18
- termVariableNodeQuery = nodeQuery("/substitution/term/variable!"),
19
19
  metavariableNodeQuery = nodeQuery("/statement/metavariable!"),
20
20
  substitutionNodeQuery = nodeQuery("/statement/substitution!"),
21
21
  typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
22
+ termVariableNodeQuery = nodeQuery("/substitution/term/variable!"),
22
23
  definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
23
24
  subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
24
25
  containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
@@ -80,7 +81,11 @@ export function verifyStandaloneStatement(statementNode, localContext, verifyAhe
80
81
  return standaloneStatementVerified;
81
82
  }
82
83
 
83
- Object.assign(statementAgainstCombinatorNodesVerifier, {
84
+ Object.assign(metaLevelUnifier, {
85
+ verifyStatement
86
+ });
87
+
88
+ Object.assign(statementAgainstCombinatorUnifier, {
84
89
  verifyStatement
85
90
  });
86
91
 
@@ -112,48 +117,48 @@ export function verifyStatementAsEquality(statementNode, assignments, derived, l
112
117
  return statementVerifiedAsEquality;
113
118
  }
114
119
 
115
- export function verifyStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
116
- let statementVerifiedAsTypeAssertion = false;
120
+ export function verifyStatementAsJudgement(statementNode, assignments, derived, localContext) {
121
+ let statementVerifiedAsJudgement = false;
117
122
 
118
- const typeAssertionNode = typeAssertionNodeQuery(statementNode);
123
+ const judgementNode = judgementNodeQuery(statementNode);
119
124
 
120
- if (typeAssertionNode !== null) {
125
+ if (judgementNode !== null) {
121
126
  const statementString = localContext.nodeAsString(statementNode);
122
127
 
123
- localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
128
+ localContext.trace(`Verifying the '${statementString}' statement as a judgement...`, statementNode);
124
129
 
125
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext);
130
+ const judgementVerified = verifyJudgement(judgementNode, assignments, derived, localContext);
126
131
 
127
- statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
132
+ statementVerifiedAsJudgement = judgementVerified; ///
128
133
 
129
- if (statementVerifiedAsTypeAssertion) {
130
- localContext.debug(`...verified the '${statementString}' statement as a type assertion.`, statementNode);
134
+ if (statementVerifiedAsJudgement) {
135
+ localContext.debug(`...verified the '${statementString}' statement as a judgement.`, statementNode);
131
136
  }
132
137
  }
133
138
 
134
- return statementVerifiedAsTypeAssertion;
139
+ return statementVerifiedAsJudgement;
135
140
  }
136
141
 
137
- function verifyStatementAsJudgement(statementNode, assignments, derived, localContext) {
138
- let statementVerifiedAsJudgement = false;
142
+ export function verifyStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
143
+ let statementVerifiedAsTypeAssertion = false;
139
144
 
140
- const judgementNode = judgementNodeQuery(statementNode);
145
+ const typeAssertionNode = typeAssertionNodeQuery(statementNode);
141
146
 
142
- if (judgementNode !== null) {
147
+ if (typeAssertionNode !== null) {
143
148
  const statementString = localContext.nodeAsString(statementNode);
144
149
 
145
- localContext.trace(`Verifying the '${statementString}' statement as a judgement...`, statementNode);
150
+ localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
146
151
 
147
- const judgementVerified = verifyJudgement(judgementNode, assignments, derived, localContext);
152
+ const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext);
148
153
 
149
- statementVerifiedAsJudgement = judgementVerified; ///
154
+ statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
150
155
 
151
- if (statementVerifiedAsJudgement) {
152
- localContext.debug(`...verified the '${statementString}' statement as a judgement.`, statementNode);
156
+ if (statementVerifiedAsTypeAssertion) {
157
+ localContext.debug(`...verified the '${statementString}' statement as a type assertion.`, statementNode);
153
158
  }
154
159
  }
155
160
 
156
- return statementVerifiedAsJudgement;
161
+ return statementVerifiedAsTypeAssertion;
157
162
  }
158
163
 
159
164
  function verifyStatementAsMetavariable(statementNode, assignments, derived, localContext) {
@@ -312,13 +317,13 @@ function verifyStatementAgainstCombinator(statementNode, combinator, localContex
312
317
  const combinatorStatementNode = combinator.getStatementNode(),
313
318
  nonTerminalNodeA = statementNode, ///
314
319
  nonTerminalNodeB = combinatorStatementNode, ///
315
- nonTerminalNodeVerified = statementAgainstCombinatorNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, () => {
320
+ nonTerminalNodeUnify = statementAgainstCombinatorUnifier.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, () => {
316
321
  const verifiedAhead = true;
317
322
 
318
323
  return verifiedAhead;
319
324
  });
320
325
 
321
- statementVerifiedAgainstCombinator = nonTerminalNodeVerified; ///
326
+ statementVerifiedAgainstCombinator = nonTerminalNodeUnify; ///
322
327
 
323
328
  if (statementVerifiedAgainstCombinator) {
324
329
  localContext.debug(`...verified the '${statementString}' statement against the '${combinatorString}' combinator.`, statementNode);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Combinator from "../combinator";
4
- import statementAsCombinatorNodeVerifier from "../verifier/node/statementAsCombinator";
4
+ import statementAsCombinatorVerifier from "../verifier/statementAsCombinator";
5
5
 
6
6
  export default function verifyStatementAsCombinator(statementNode, fileContext) {
7
7
  let statementVerifiedAsCombinator = false;
@@ -12,7 +12,7 @@ export default function verifyStatementAsCombinator(statementNode, fileContext)
12
12
 
13
13
  const nonTerminalNode = statementNode, ///
14
14
  childNodes = nonTerminalNode.getChildNodes(),
15
- childNodesVerified = statementAsCombinatorNodeVerifier.verifyChildNodes(childNodes, fileContext, () => {
15
+ childNodesVerified = statementAsCombinatorVerifier.verifyChildNodes(childNodes, fileContext, () => {
16
16
  const verifiedAhead = true;
17
17
 
18
18
  return verifiedAhead;