occam-verify-cli 0.0.532 → 0.0.534

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 (62) hide show
  1. package/lib/assignment.js +60 -0
  2. package/lib/conclusion.js +3 -3
  3. package/lib/consequence.js +2 -2
  4. package/lib/constants.js +1 -5
  5. package/lib/context/proof.js +1 -20
  6. package/lib/equality.js +22 -81
  7. package/lib/log.js +3 -2
  8. package/lib/premise.js +7 -7
  9. package/lib/supposition.js +4 -4
  10. package/lib/variable.js +23 -3
  11. package/lib/verifier/metastatementForMetavariable.js +23 -23
  12. package/lib/verifier/statement.js +199 -0
  13. package/lib/verifier/statementForMetavariable.js +25 -25
  14. package/lib/verifier/termForVariable.js +23 -23
  15. package/lib/verifier.js +27 -26
  16. package/lib/verify/assertion/type.js +56 -68
  17. package/lib/verify/conclusion.js +2 -2
  18. package/lib/verify/consequence.js +2 -2
  19. package/lib/verify/derivation.js +3 -3
  20. package/lib/verify/metastatement/qualified.js +3 -3
  21. package/lib/verify/metastatement/unqualified.js +3 -3
  22. package/lib/verify/metastatement.js +2 -2
  23. package/lib/verify/premise.js +2 -2
  24. package/lib/verify/ruleDerivation.js +3 -3
  25. package/lib/verify/statement/qualified.js +3 -3
  26. package/lib/verify/statement/unqualified.js +3 -3
  27. package/lib/verify/statement.js +87 -132
  28. package/lib/verify/statementAsCombinator.js +2 -2
  29. package/lib/verify/supposition.js +4 -4
  30. package/package.json +1 -1
  31. package/src/{assertion/type.js → assignment.js} +4 -4
  32. package/src/conclusion.js +4 -4
  33. package/src/consequence.js +2 -2
  34. package/src/constants.js +0 -1
  35. package/src/context/proof.js +0 -25
  36. package/src/equality.js +20 -109
  37. package/src/log.js +1 -1
  38. package/src/premise.js +15 -15
  39. package/src/supposition.js +11 -11
  40. package/src/variable.js +18 -2
  41. package/src/verifier/metastatementForMetavariable.js +19 -19
  42. package/src/verifier/statement.js +135 -0
  43. package/src/verifier/statementForMetavariable.js +21 -21
  44. package/src/verifier/termForVariable.js +19 -19
  45. package/src/verifier.js +21 -21
  46. package/src/verify/assertion/type.js +83 -82
  47. package/src/verify/conclusion.js +2 -2
  48. package/src/verify/consequence.js +2 -2
  49. package/src/verify/derivation.js +4 -4
  50. package/src/verify/metastatement/qualified.js +2 -2
  51. package/src/verify/metastatement/unqualified.js +2 -2
  52. package/src/verify/metastatement.js +1 -1
  53. package/src/verify/premise.js +2 -2
  54. package/src/verify/ruleDerivation.js +4 -4
  55. package/src/verify/statement/qualified.js +2 -2
  56. package/src/verify/statement/unqualified.js +2 -2
  57. package/src/verify/statement.js +87 -200
  58. package/src/verify/statementAsCombinator.js +2 -2
  59. package/src/verify/supposition.js +4 -4
  60. package/lib/assertion/type.js +0 -60
  61. package/lib/node/statement/equality.js +0 -16
  62. package/src/node/statement/equality.js +0 -10
@@ -11,8 +11,8 @@ const metavariableNodeQuery = nodeQuery('/metastatement/metavariable!'),
11
11
  metaArgumentChildNodeNodeQuery = nodeQuery('/metaArgument/*!');
12
12
 
13
13
  export default class StatementForMetavariableVerifier extends Verifier {
14
- matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
15
- let nonTerminalNodeMatches = false;
14
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
15
+ let nonTerminalNodeVerifies = false;
16
16
 
17
17
  const nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
18
18
  nonTerminalNodeBRuleNameMetaArgumentRuleName = (nonTerminalNodeBRuleName === META_ARGUMENT_RULE_NAME);
@@ -23,7 +23,7 @@ export default class StatementForMetavariableVerifier extends Verifier {
23
23
 
24
24
  nonTerminalNodeB = metaArgumentChildNodeB; ///
25
25
 
26
- nonTerminalNodeMatches = this.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
26
+ nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
27
27
  } else {
28
28
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
29
29
  nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
@@ -33,43 +33,43 @@ export default class StatementForMetavariableVerifier extends Verifier {
33
33
  if (nonTerminalNodeARuleNameMetastatementRuleName && nonTerminalNodeBRuleNameStatementRuleName) {
34
34
  const metastatementNodeA = nonTerminalNodeA, ///
35
35
  statementNodeB = nonTerminalNodeB, ///
36
- statementNodeMatches = this.matchStatementNode(metastatementNodeA, statementNodeB, substitutions);
36
+ statementNodeVerifies = this.verifyStatementNode(metastatementNodeA, statementNodeB, substitutions);
37
37
 
38
- if (statementNodeMatches) {
39
- nonTerminalNodeMatches = true; ///
38
+ if (statementNodeVerifies) {
39
+ nonTerminalNodeVerifies = true; ///
40
40
  } else {
41
41
  const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
42
42
  nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
43
43
  nodesA = nonTerminalNodeAChildNodes, ///
44
44
  nodesB = nonTerminalNodeBChildNodes, ///
45
- nodesMatch = this.matchNodes(nodesA, nodesB, substitutions);
45
+ nodesMatch = this.verifyNodes(nodesA, nodesB, substitutions);
46
46
 
47
- nonTerminalNodeMatches = nodesMatch; ///
47
+ nonTerminalNodeVerifies = nodesMatch; ///
48
48
  }
49
49
  } else if (nonTerminalNodeBRuleName === nonTerminalNodeARuleName) {
50
- nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
50
+ nonTerminalNodeVerifies = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
51
51
  }
52
52
  }
53
53
 
54
- return nonTerminalNodeMatches;
54
+ return nonTerminalNodeVerifies;
55
55
  }
56
56
 
57
- matchStatementNode(metastatementNodeA, statementNodeB, substitutions) {
58
- let statementNodeMatches = false;
57
+ verifyStatementNode(metastatementNodeA, statementNodeB, substitutions) {
58
+ let statementNodeVerifies = false;
59
59
 
60
60
  const metavariableNodeA = metavariableNodeQuery(metastatementNodeA);
61
61
 
62
62
  if (metavariableNodeA !== null) {
63
- const metavariableNodeMatches = this.matchMetavariableNode(metavariableNodeA, statementNodeB, substitutions);
63
+ const metavariableNodeVerifies = this.verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions);
64
64
 
65
- statementNodeMatches = metavariableNodeMatches; ///
65
+ statementNodeVerifies = metavariableNodeVerifies; ///
66
66
  }
67
67
 
68
- return statementNodeMatches;
68
+ return statementNodeVerifies;
69
69
  }
70
70
 
71
- matchMetavariableNode(metavariableNodeA, statementNodeB, substitutions) {
72
- let metavariableNodeMatches;
71
+ verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions) {
72
+ let metavariableNodeVerifies;
73
73
 
74
74
  const metavariableNameA = metavariableNameFromMetavariableNode(metavariableNodeA),
75
75
  substitution = substitutions.find((substitution) => {
@@ -82,9 +82,9 @@ export default class StatementForMetavariableVerifier extends Verifier {
82
82
 
83
83
  if (substitution !== null) {
84
84
  const statementNode = statementNodeB, ///
85
- substitutionNodesMatch = substitution.matchStatementNode(statementNode);
85
+ substitutionNodesMatch = substitution.verifyStatementNode(statementNode);
86
86
 
87
- metavariableNodeMatches = substitutionNodesMatch; ///
87
+ metavariableNodeVerifies = substitutionNodesMatch; ///
88
88
  } else {
89
89
  const { createSubstitutions } = this.constructor;
90
90
 
@@ -97,9 +97,9 @@ export default class StatementForMetavariableVerifier extends Verifier {
97
97
  substitutions.push(substitution);
98
98
  }
99
99
 
100
- metavariableNodeMatches = true;
100
+ metavariableNodeVerifies = true;
101
101
  }
102
102
 
103
- return metavariableNodeMatches;
103
+ return metavariableNodeVerifies;
104
104
  }
105
105
  }
@@ -10,8 +10,8 @@ import { variableNameFromVariableNode } from "../utilities/query";
10
10
  const variableNodeQuery = nodeQuery('/term/variable!');
11
11
 
12
12
  export default class TermForVariableVerifier extends Verifier {
13
- matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
14
- let nonTerminalNodeMatches = false;
13
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
14
+ let nonTerminalNodeVerifies = false;
15
15
 
16
16
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
17
17
  nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName();
@@ -23,37 +23,37 @@ export default class TermForVariableVerifier extends Verifier {
23
23
  if (nonTerminalNodeARuleNameTermRuleName && nonTerminalNodeBRuleNameTermRuleName) {
24
24
  const termNodeA = nonTerminalNodeA, ///
25
25
  termNodeB = nonTerminalNodeB, ///
26
- termNodeMatches = this.matchTermNode(termNodeA, termNodeB, substitutions);
26
+ termNodeVerifies = this.verifyTermNode(termNodeA, termNodeB, substitutions);
27
27
 
28
- if (termNodeMatches) {
29
- nonTerminalNodeMatches = true; ///
28
+ if (termNodeVerifies) {
29
+ nonTerminalNodeVerifies = true; ///
30
30
  } else {
31
- nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
31
+ nonTerminalNodeVerifies = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
32
32
  }
33
33
  } else {
34
- nonTerminalNodeMatches = super.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
34
+ nonTerminalNodeVerifies = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
35
35
  }
36
36
  }
37
37
 
38
- return nonTerminalNodeMatches;
38
+ return nonTerminalNodeVerifies;
39
39
  }
40
40
 
41
- matchTermNode(termNodeA, termNodeB, substitutions) {
42
- let termNodeMatches = false;
41
+ verifyTermNode(termNodeA, termNodeB, substitutions) {
42
+ let termNodeVerifies = false;
43
43
 
44
44
  const variableNodeA = variableNodeQuery(termNodeA);
45
45
 
46
46
  if (variableNodeA !== null) {
47
- const variableMatches = this.matchVariableNode(variableNodeA, termNodeB, substitutions);
47
+ const variableVerifies = this.verifyVariableNode(variableNodeA, termNodeB, substitutions);
48
48
 
49
- termNodeMatches = variableMatches; ///
49
+ termNodeVerifies = variableVerifies; ///
50
50
  }
51
51
 
52
- return termNodeMatches;
52
+ return termNodeVerifies;
53
53
  }
54
54
 
55
- matchVariableNode(variableNodeB, termNodeB, substitutions) {
56
- let variableMatches;
55
+ verifyVariableNode(variableNodeB, termNodeB, substitutions) {
56
+ let variableVerifies;
57
57
 
58
58
  const variableNameA = variableNameFromVariableNode(variableNodeB),
59
59
  substitution = substitutions.find((substitution) => {
@@ -66,9 +66,9 @@ export default class TermForVariableVerifier extends Verifier {
66
66
 
67
67
  if (substitution !== null) {
68
68
  const termNode = termNodeB, ///
69
- substitutionNodesMatch = substitution.matchTermNode(termNode);
69
+ substitutionNodesVerifies = substitution.verifyTermNode(termNode);
70
70
 
71
- variableMatches = substitutionNodesMatch; ///
71
+ variableVerifies = substitutionNodesVerifies; ///
72
72
  } else {
73
73
  const { createSubstitutions } = this.constructor;
74
74
 
@@ -81,9 +81,9 @@ export default class TermForVariableVerifier extends Verifier {
81
81
  substitutions.push(substitution);
82
82
  }
83
83
 
84
- variableMatches = true;
84
+ variableVerifies = true;
85
85
  }
86
86
 
87
- return variableMatches;
87
+ return variableVerifies;
88
88
  }
89
89
  }
package/src/verifier.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  export default class Verifier {
4
- matchNode(nodeA, nodeB, substitutions) {
5
- let nodeMatches = false;
4
+ verifyNode(nodeA, nodeB, substitutions, context) {
5
+ let nodeVerifies = false;
6
6
 
7
7
  const nodeATerminalNode = nodeA.isTerminalNode(),
8
8
  nodeBTerminalNode = nodeB.isTerminalNode();
@@ -11,50 +11,50 @@ export default class Verifier {
11
11
  if (nodeATerminalNode) {
12
12
  const terminalNodeA = nodeA, ///
13
13
  terminalNodeB = nodeB, ///
14
- terminalNodeMatches = this.matchTerminalNode(terminalNodeA, terminalNodeB);
14
+ terminalNodeVerifies = this.verifyTerminalNode(terminalNodeA, terminalNodeB);
15
15
 
16
- nodeMatches = terminalNodeMatches; ///
16
+ nodeVerifies = terminalNodeVerifies; ///
17
17
  } else {
18
18
  const nonTerminalNodeA = nodeA, ///
19
19
  nonTerminalNodeB = nodeB, ///
20
- nonTerminalNodeMatches = this.matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
20
+ nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context);
21
21
 
22
- nodeMatches = nonTerminalNodeMatches; ///
22
+ nodeVerifies = nonTerminalNodeVerifies; ///
23
23
  }
24
24
  }
25
25
 
26
- return nodeMatches;
26
+ return nodeVerifies;
27
27
  }
28
28
 
29
- matchNodes(nodesA, nodesB, substitutions) {
30
- let nodesMatch = false;
29
+ verifyNodes(nodesA, nodesB, substitutions, context) {
30
+ let nodesVerify = false;
31
31
 
32
32
  const nodesALength = nodesA.length,
33
33
  nodesBLength = nodesB.length;
34
34
 
35
35
  if (nodesALength === nodesBLength) {
36
- nodesMatch = nodesA.every((nodeA, index) => {
36
+ nodesVerify = nodesA.every((nodeA, index) => {
37
37
  const nodeB = nodesB[index],
38
- nodeMatches = this.matchNode(nodeA, nodeB, substitutions);
38
+ nodeVerifies = this.verifyNode(nodeA, nodeB, substitutions, context);
39
39
 
40
- if (nodeMatches) {
40
+ if (nodeVerifies) {
41
41
  return true;
42
42
  }
43
43
  })
44
44
  }
45
45
 
46
- return nodesMatch;
46
+ return nodesVerify;
47
47
  }
48
48
 
49
- matchTerminalNode(terminalNodeA, terminalNodeB, substitutions) {
49
+ verifyTerminalNode(terminalNodeA, terminalNodeB, substitutions, context) {
50
50
  const matches = terminalNodeA.match(terminalNodeB),
51
- terminalNodeMatches = matches; ///
51
+ terminalNodeVerifies = matches; ///
52
52
 
53
- return terminalNodeMatches;
53
+ return terminalNodeVerifies;
54
54
  }
55
55
 
56
- matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
57
- let nonTerminalNodeMatches = false;
56
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context = null) {
57
+ let nonTerminalNodeVerifies = false;
58
58
 
59
59
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
60
60
  nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
@@ -64,11 +64,11 @@ export default class Verifier {
64
64
  nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
65
65
  nodesA = nonTerminalNodeAChildNodes, ///
66
66
  nodesB = nonTerminalNodeBChildNodes, ///
67
- nodesMatch = this.matchNodes(nodesA, nodesB, substitutions);
67
+ nodesVerify = this.verifyNodes(nodesA, nodesB, substitutions, context);
68
68
 
69
- nonTerminalNodeMatches = nodesMatch; ///
69
+ nonTerminalNodeVerifies = nodesVerify; ///
70
70
  }
71
71
 
72
- return nonTerminalNodeMatches;
72
+ return nonTerminalNodeVerifies;
73
73
  }
74
74
  }
@@ -1,54 +1,53 @@
1
1
  "use strict";
2
2
 
3
3
  import Variable from "../../variable";
4
- import TypeAssertion from "../../assertion/type";
4
+ import Assignment from "../../assignment";
5
5
 
6
6
  import { first } from "../../utilities/array";
7
- import { verifyTermAsVariable } from "../../verify/term";
8
7
  import { nodeQuery, typeNameFromTypeNode } from "../../utilities/query";
8
+ import { verifyTermAsVariable, verifyTermAgainstConstructors } from "../../verify/term";
9
9
 
10
10
  const termNodeQuery = nodeQuery("/typeAssertion/term"),
11
11
  typeNodeQuery = nodeQuery("/typeAssertion/type");
12
12
 
13
- export default function verifyTypeAssertion(typeAssertionNode, assertions, derived, proofContext) {
13
+ export default function verifyTypeAssertion(typeAssertionNode, assignments, derived, context) {
14
14
  let typeAssertionVerified = false;
15
15
 
16
- const typeAssertionString = proofContext.nodeAsString(typeAssertionNode);
16
+ const typeAssertionString = context.nodeAsString(typeAssertionNode);
17
17
 
18
- proofContext.debug(`Verifying the '${typeAssertionString}' type assertion...`, typeAssertionNode);
18
+ context.debug(`Verifying the '${typeAssertionString}' type assertion...`, typeAssertionNode);
19
19
 
20
20
  const typeNode = typeNodeQuery(typeAssertionNode),
21
21
  typeName = typeNameFromTypeNode(typeNode),
22
- typePresent = proofContext.isTypePresentByTypeName(typeName);
22
+ typePresent = context.isTypePresentByTypeName(typeName);
23
23
 
24
24
  if (!typePresent) {
25
- proofContext.error(`The ${typeName} type is not present.`, typeAssertionNode);
25
+ context.error(`The ${typeName} type is not present.`, typeAssertionNode);
26
26
  } else {
27
27
  if (!typeAssertionVerified) {
28
- const variableTypeAssertionVerified = verifyVariableTypeAssertion(typeAssertionNode, assertions, derived, proofContext);
28
+ const variableTypeAssertionVerified = verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, context);
29
29
 
30
30
  typeAssertionVerified = variableTypeAssertionVerified; ///
31
31
  }
32
32
 
33
- // if (!typeAssertionVerified) {
34
- // const termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, assertions, proofContext);
35
- //
36
- // typeAssertionVerified = termTypeAssertionVerified; ///
37
- // }
33
+ if (!typeAssertionVerified) {
34
+ const termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, context);
35
+
36
+ typeAssertionVerified = termTypeAssertionVerified; ///
37
+ }
38
38
  }
39
39
 
40
40
  if (typeAssertionVerified) {
41
- proofContext.info(`Verified the '${typeAssertionString}' statement type assertion.`, typeAssertionNode);
41
+ context.info(`Verified the '${typeAssertionString}' statement type assertion.`, typeAssertionNode);
42
42
  }
43
43
 
44
44
  return typeAssertionVerified;
45
45
  }
46
46
 
47
- function verifyVariableTypeAssertion(typeAssertionNode, assertions, derived, proofContext) {
47
+ function verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, context) {
48
48
  let variableTypeAssertionVerified = false;
49
49
 
50
- const context = proofContext, ///
51
- variables = [],
50
+ const variables = [],
52
51
  termNode = termNodeQuery(typeAssertionNode),
53
52
  termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
54
53
 
@@ -56,41 +55,45 @@ function verifyVariableTypeAssertion(typeAssertionNode, assertions, derived, pro
56
55
  const typeNode = typeNodeQuery(typeAssertionNode),
57
56
  typeName = typeNameFromTypeNode(typeNode),
58
57
  assertedTypeName = typeName, ///
59
- assertedType = proofContext.findTypeByTypeName(assertedTypeName),
60
- firstVariable = first(variables),
61
- variable = firstVariable, ///
62
- variableName = variable.getName(),
63
- variableType = variable.getType();
64
-
65
- if (derived) {
66
- const variableTypeEqualToOrSubTypeOfAssertedType = variableType.isEqualToOrSubTypeOf(assertedType);
58
+ assertedType = context.findTypeByTypeName(assertedTypeName);
67
59
 
68
- if (!variableTypeEqualToOrSubTypeOfAssertedType) {
69
- const assertedTypeName = assertedType.getName(),
70
- variableTypeName = variableType.getName();
71
-
72
- proofContext.error(`The '${variableName}' variable's '${variableTypeName}' type is not equal to or a sub-type of the '${assertedTypeName}' asserted type.`, typeAssertionNode);
73
- } else {
74
- variableTypeAssertionVerified = true;
75
- }
60
+ if (assertedType === null) {
61
+ context.error(`The '${assertedTypeName}' asserted type is not present.`, typeAssertionNode);
76
62
  } else {
77
- const assertedTypeEqualToOrSubTypeOfVariableType = assertedType.isEqualToOrSubTypeOf(variableType);
63
+ const firstVariable = first(variables),
64
+ variable = firstVariable, ///
65
+ variableName = variable.getName(),
66
+ variableType = variable.getType();
67
+
68
+ if (derived) {
69
+ const variableTypeEqualToOrSubTypeOfAssertedType = variableType.isEqualToOrSubTypeOf(assertedType);
70
+
71
+ if (!variableTypeEqualToOrSubTypeOfAssertedType) {
72
+ const assertedTypeName = assertedType.getName(),
73
+ variableTypeName = variableType.getName();
74
+
75
+ context.error(`The '${variableName}' variable's '${variableTypeName}' type is not equal to or a sub-type of the '${assertedTypeName}' asserted type.`, typeAssertionNode);
76
+ } else {
77
+ variableTypeAssertionVerified = true;
78
+ }
79
+ } else {
80
+ const assertedTypeEqualToOrSubTypeOfVariableType = assertedType.isEqualToOrSubTypeOf(variableType);
78
81
 
79
- if (!assertedTypeEqualToOrSubTypeOfVariableType) {
80
- const assertedTypeName = assertedType.getName(),
81
- variableTypeName = variableType.getName();
82
+ if (!assertedTypeEqualToOrSubTypeOfVariableType) {
83
+ const assertedTypeName = assertedType.getName(),
84
+ variableTypeName = variableType.getName();
82
85
 
83
- proofContext.error(`The '${assertedTypeName}' asserted type is not equal to or a sub-type of the '${variableName}' variable's '${variableTypeName}' type.`, typeAssertionNode);
84
- } else {
85
- const type = assertedType, ///
86
- name = variableName, ///
87
- variable = Variable.fromTypeAndName(type, name),
88
- typeAssertion = TypeAssertion.fromVariable(variable),
89
- assertion = typeAssertion; ///
86
+ context.error(`The '${assertedTypeName}' asserted type is not equal to or a sub-type of the '${variableName}' variable's '${variableTypeName}' type.`, typeAssertionNode);
87
+ } else {
88
+ const type = assertedType, ///
89
+ name = variableName, ///
90
+ variable = Variable.fromTypeAndName(type, name),
91
+ assignment = Assignment.fromVariable(variable);
90
92
 
91
- assertions.push(assertion);
93
+ assignments.push(assignment);
92
94
 
93
- variableTypeAssertionVerified = true;
95
+ variableTypeAssertionVerified = true;
96
+ }
94
97
  }
95
98
  }
96
99
  }
@@ -98,40 +101,38 @@ function verifyVariableTypeAssertion(typeAssertionNode, assertions, derived, pro
98
101
  return variableTypeAssertionVerified;
99
102
  }
100
103
 
101
- // function verifyTermTypeAssertion(typeAssertionNode, assertions, proofContext) {
102
- // let termTypeAssertionVerified = false;
103
- //
104
- // const types = [],
105
- // context = proofContext, ///
106
- // termNode = termNodeQuery(typeAssertionNode),
107
- // termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context);
108
- //
109
- // if (termVerifiedAgainstConstructors) {
110
- // const typeNode = typeNodeQuery(typeAssertionNode),
111
- // typeName = typeNameFromTypeNode(typeNode),
112
- // assertedTypeName = typeName, ///
113
- // assertedType = proofContext.findTypeByTypeName(assertedTypeName),
114
- // firstType = first(types),
115
- // termType = firstType,
116
- // termString = proofContext.nodeAsString(termNode),
117
- // termTypeEqualToOrSubTypeOfAssertedType = termType.isEqualToOrSubTypeOf(assertedType);
118
- //
119
- // if (!termTypeEqualToOrSubTypeOfAssertedType) {
120
- // const termTypeName = termType.getName(),
121
- // assertedTypeName = assertedType.getName();
122
- //
123
- // proofContext.error(`The '${termString}' term's '${termTypeName}' type is not equal to or a sub-type of the '${assertedTypeName}' asserted type.`);
124
- // } else {
125
- // const type = assertedType, ///
126
- // typeAssertion = TypeAssertion.fromTypeAndTermNode(type, termNode),
127
- // assertion = typeAssertion; ///
128
- //
129
- // assertions.push(assertion);
130
- //
131
- // termTypeAssertionVerified = true;
132
- // }
133
- // }
134
- //
135
- // return termTypeAssertionVerified;
136
- // }
104
+ function verifyTermTypeAssertion(typeAssertionNode, context) {
105
+ let termTypeAssertionVerified = false;
106
+
107
+ const types = [],
108
+ termNode = termNodeQuery(typeAssertionNode),
109
+ termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context);
110
+
111
+ if (termVerifiedAgainstConstructors) {
112
+ const typeNode = typeNodeQuery(typeAssertionNode),
113
+ typeName = typeNameFromTypeNode(typeNode),
114
+ assertedTypeName = typeName, ///
115
+ assertedType = context.findTypeByTypeName(assertedTypeName);
116
+
117
+ if (assertedType === null) {
118
+ context.error(`The '${assertedTypeName}' asserted type is not present.`, typeAssertionNode);
119
+ } else {
120
+ const firstType = first(types),
121
+ termType = firstType, ///
122
+ termTypeIsEqualToAssertedType = termType.isEqualTo(assertedType);
123
+
124
+ if (!termTypeIsEqualToAssertedType) {
125
+ const termString = context.nodeAsString(termNode),
126
+ termTypeName = termType.getName(),
127
+ assertedTypeName = assertedType.getName();
128
+
129
+ context.error(`The '${assertedTypeName}' asserted type is not equal to the '${termString}' term's '${termTypeName}' type.`, typeAssertionNode);
130
+ } else {
131
+ termTypeAssertionVerified = true;
132
+ }
133
+ }
134
+ }
135
+
136
+ return termTypeAssertionVerified;
137
+ }
137
138
 
@@ -16,9 +16,9 @@ export default function verifyConclusion(conclusionNode, conclusions, metaproofC
16
16
  metaproofContext.debug(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
17
17
 
18
18
  const derived = false,
19
- assertions = [],
19
+ assignments = [],
20
20
  unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode),
21
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assertions, derived, metaproofContext);
21
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, metaproofContext);
22
22
 
23
23
  if (unqualifiedMetastatementVerified) {
24
24
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
@@ -16,9 +16,9 @@ export default function verifyConsequence(consequenceNode, consequences, proofCo
16
16
  proofContext.debug(`Verifying the '${consequenceString}' consequence...`, consequenceNode);
17
17
 
18
18
  const derived = false,
19
- assertions = [],
19
+ assignments = [],
20
20
  unqualifiedStatementNode = unqualifiedStatementNodeQuery(consequenceNode),
21
- unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assertions, derived, proofContext);
21
+ unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, proofContext);
22
22
 
23
23
  if (unqualifiedStatementVerified) {
24
24
  const statementNode = statementNodeQuery(unqualifiedStatementNode),
@@ -96,9 +96,9 @@ function verifyChild(childNode, proofContext) {
96
96
 
97
97
  case QUALIFIED_STATEMENT_RULE_NAME: {
98
98
  const derived = true,
99
- assertions = [],
99
+ assignments = [],
100
100
  qualifiedStatementNode = childNode, ///
101
- qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assertions, derived, proofContext);
101
+ qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assignments, derived, proofContext);
102
102
 
103
103
  if (qualifiedStatementVerified) {
104
104
  const statementNode = statementNodeQuery(qualifiedStatementNode),
@@ -114,9 +114,9 @@ function verifyChild(childNode, proofContext) {
114
114
 
115
115
  case UNQUALIFIED_STATEMENT_RULE_NAME: {
116
116
  const derived = true,
117
- assertions = [],
117
+ assignments = [],
118
118
  unqualifiedStatementNode = childNode, ///
119
- unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assertions, derived, proofContext);
119
+ unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, proofContext);
120
120
 
121
121
  if (unqualifiedStatementVerified) {
122
122
  const statementNode = statementNodeQuery(unqualifiedStatementNode),
@@ -7,7 +7,7 @@ import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query
7
7
  const referenceNodeQuery = nodeQuery("/qualifiedMetastatement/qualification!/reference!"),
8
8
  metastatementNodeQuery = nodeQuery("/qualifiedMetastatement/metastatement!");
9
9
 
10
- export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, assertions, derived, metaproofContext) {
10
+ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, derived, metaproofContext) {
11
11
  let qualifiedMetastatementVerified = false;
12
12
 
13
13
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
@@ -31,7 +31,7 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
31
31
  }
32
32
 
33
33
  if (ruleMatchesMetastatement) {
34
- const metastatementVerified = verifyMetastatement(metastatementNode, assertions, derived, metaproofContext);
34
+ const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, metaproofContext);
35
35
 
36
36
  qualifiedMetastatementVerified = metastatementVerified; ///
37
37
  }
@@ -6,7 +6,7 @@ import { nodeQuery } from "../../utilities/query";
6
6
 
7
7
  const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
8
8
 
9
- export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assertions, derived, metaproofContext) {
9
+ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, metaproofContext) {
10
10
  let unqualifiedMetastatementVerified = false;
11
11
 
12
12
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
@@ -23,7 +23,7 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
23
23
  }
24
24
 
25
25
  if (metastatementMatches) {
26
- const metastatementVerified = verifyMetastatement(metastatementNode, assertions, derived, metaproofContext);
26
+ const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, metaproofContext);
27
27
 
28
28
  unqualifiedMetastatementVerified = metastatementVerified; ///
29
29
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- export default function verifyMetastatement(metastatementNode, assertions, derived, metaproofContext) {
3
+ export default function verifyMetastatement(metastatementNode, assignments, derived, metaproofContext) {
4
4
  let metastatementVerified = true; ///
5
5
 
6
6
  ///
@@ -17,9 +17,9 @@ export default function verifyPremise(premiseNode, premises, metaproofContext) {
17
17
  metaproofContext.debug(`Verifying the '${premiseString}' premise...`, premiseNode);
18
18
 
19
19
  const derived = false,
20
- assertions = [],
20
+ assignments = [],
21
21
  unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode),
22
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assertions, derived, metaproofContext);
22
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, metaproofContext);
23
23
 
24
24
  if (unqualifiedMetastatementVerified) {
25
25
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
@@ -96,9 +96,9 @@ function verifyChild(childNode, metaproofContext) {
96
96
 
97
97
  case QUALIFIED_METASTATEMENT_RULE_NAME: {
98
98
  const derived = true,
99
- assertions = [],
99
+ assignments = [],
100
100
  qualifiedMetastatementNode = childNode, ///
101
- qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, assertions, derived, metaproofContext);
101
+ qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, derived, metaproofContext);
102
102
 
103
103
  if (qualifiedMetastatementVerified) {
104
104
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
@@ -114,9 +114,9 @@ function verifyChild(childNode, metaproofContext) {
114
114
 
115
115
  case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
116
116
  const derived = true,
117
- assertions = [],
117
+ assignments = [],
118
118
  unqualifiedMetastatementNode = childNode, ///
119
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assertions, derived, metaproofContext);
119
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, metaproofContext);
120
120
 
121
121
  if (unqualifiedMetastatementVerified) {
122
122
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),