occam-verify-cli 1.0.617 → 1.0.631

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 (85) hide show
  1. package/lib/context/ephemeral.js +152 -47
  2. package/lib/context/file/nominal.js +136 -140
  3. package/lib/context/liminal.js +16 -26
  4. package/lib/context/scoped.js +26 -55
  5. package/lib/context.js +103 -53
  6. package/lib/element/assertion/contained.js +3 -1
  7. package/lib/element/assertion/defined.js +3 -1
  8. package/lib/element/assertion/property.js +10 -58
  9. package/lib/element/assertion/satisfies.js +3 -1
  10. package/lib/element/assertion/subproof.js +3 -1
  11. package/lib/element/assertion/type.js +63 -109
  12. package/lib/element/assumption.js +40 -16
  13. package/lib/element/derivation.js +8 -10
  14. package/lib/element/equality.js +102 -62
  15. package/lib/element/equivalence.js +6 -6
  16. package/lib/element/equivalences.js +4 -4
  17. package/lib/element/frame.js +21 -21
  18. package/lib/element/hypothesis.js +5 -7
  19. package/lib/element/judgement.js +47 -25
  20. package/lib/element/metaType.js +2 -2
  21. package/lib/element/metavariable.js +12 -3
  22. package/lib/element/reference.js +9 -21
  23. package/lib/element/rule.js +13 -15
  24. package/lib/element/statement.js +23 -25
  25. package/lib/element/subDerivation.js +4 -6
  26. package/lib/element/substitution/frame.js +4 -4
  27. package/lib/element/substitution/reference.js +4 -4
  28. package/lib/element/substitution/statement.js +4 -4
  29. package/lib/element/substitution/term.js +7 -1
  30. package/lib/element/substitution.js +71 -43
  31. package/lib/element/term.js +15 -1
  32. package/lib/element/topLevelAssertion.js +9 -11
  33. package/lib/element/topLevelMetaAssertion.js +9 -11
  34. package/lib/element/variable.js +44 -3
  35. package/lib/process/assign.js +96 -26
  36. package/lib/process/unify.js +3 -4
  37. package/lib/process/validate.js +2 -2
  38. package/lib/process/verify.js +2 -2
  39. package/lib/utilities/element.js +74 -12
  40. package/lib/utilities/json.js +2 -2
  41. package/lib/utilities/string.js +9 -24
  42. package/lib/utilities/substitutions.js +14 -22
  43. package/package.json +1 -1
  44. package/src/context/ephemeral.js +170 -50
  45. package/src/context/file/nominal.js +136 -141
  46. package/src/context/liminal.js +22 -34
  47. package/src/context/scoped.js +33 -74
  48. package/src/context.js +97 -46
  49. package/src/element/assertion/contained.js +4 -0
  50. package/src/element/assertion/defined.js +4 -0
  51. package/src/element/assertion/property.js +15 -26
  52. package/src/element/assertion/satisfies.js +4 -0
  53. package/src/element/assertion/subproof.js +4 -0
  54. package/src/element/assertion/type.js +67 -77
  55. package/src/element/assumption.js +48 -16
  56. package/src/element/derivation.js +3 -5
  57. package/src/element/equality.js +109 -74
  58. package/src/element/equivalence.js +7 -7
  59. package/src/element/equivalences.js +7 -5
  60. package/src/element/frame.js +25 -25
  61. package/src/element/hypothesis.js +4 -6
  62. package/src/element/judgement.js +54 -24
  63. package/src/element/metaType.js +1 -1
  64. package/src/element/metavariable.js +16 -3
  65. package/src/element/reference.js +12 -26
  66. package/src/element/rule.js +8 -10
  67. package/src/element/statement.js +27 -30
  68. package/src/element/subDerivation.js +3 -5
  69. package/src/element/substitution/frame.js +1 -1
  70. package/src/element/substitution/reference.js +1 -1
  71. package/src/element/substitution/statement.js +1 -1
  72. package/src/element/substitution/term.js +2 -0
  73. package/src/element/substitution.js +60 -36
  74. package/src/element/term.js +20 -2
  75. package/src/element/topLevelAssertion.js +4 -6
  76. package/src/element/topLevelMetaAssertion.js +4 -6
  77. package/src/element/variable.js +2 -0
  78. package/src/process/assign.js +114 -37
  79. package/src/process/unify.js +2 -3
  80. package/src/process/validate.js +1 -1
  81. package/src/process/verify.js +1 -1
  82. package/src/utilities/element.js +83 -26
  83. package/src/utilities/json.js +1 -1
  84. package/src/utilities/string.js +7 -29
  85. package/src/utilities/substitutions.js +18 -29
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
 
3
- import elements from "../../elements";
4
3
  import Assertion from "../assertion";
5
4
 
6
5
  import { define } from "../../elements";
7
- import { variableAssignmentFromVariable } from "../../process/assign";
6
+ import { variableAssignmentFromTypeAssertion } from "../../process/assign";
8
7
 
9
8
  export default define(class TypeAssertion extends Assertion {
10
9
  constructor(context, string, node, term, type) {
@@ -29,49 +28,57 @@ export default define(class TypeAssertion extends Assertion {
29
28
  return typeAssertionNode;
30
29
  }
31
30
 
32
- verify(assignments, stated, context) {
33
- let verifies = false;
31
+ validate(assignments, stated, context) {
32
+ let validates = false;
34
33
 
35
- let typeAssertionString = this.getString(); ///
34
+ const typeAssertionString = this.getString(); ///
36
35
 
37
- context.trace(`Verifying the '${typeAssertionString}' type assertion...`);
36
+ context.trace(`Validating the '${typeAssertionString}' type assertion...`);
38
37
 
39
- const typeVerifies = this.verifyType(context);
38
+ const valid = this.isValid();
40
39
 
41
- if (typeVerifies) {
42
- let verifiesWhenStated = false,
43
- verifiesWhenDerived = false;
40
+ if (valid) {
41
+ validates = true;
44
42
 
45
- if (stated) {
46
- verifiesWhenStated = this.verifyWhenStated(assignments, context);
47
- } else {
48
- verifiesWhenDerived = this.verifyWhenDerived(context);
49
- }
43
+ context.debug(`...the '${typeAssertionString}' type assertion is already valid.`);
44
+ } else {
45
+ const typeValidates = this.validateType(context);
50
46
 
51
- if (verifiesWhenStated || verifiesWhenDerived) {
52
- verifies = true;
53
- }
54
- }
47
+ if (typeValidates) {
48
+ let validatesWhenStated = false,
49
+ validatesWhenDerived = false;
50
+
51
+ if (stated) {
52
+ validatesWhenStated = this.validateWhenStated(assignments, context);
53
+ } else {
54
+ validatesWhenDerived = this.validateWhenDerived(context);
55
+ }
55
56
 
56
- if (verifies) {
57
- if (stated) {
58
- this.assign(assignments, context);
57
+ if (validatesWhenStated || validatesWhenDerived) {
58
+ validates = true;
59
+ }
59
60
  }
60
- }
61
61
 
62
- if (verifies) {
63
- context.debug(`...verified the '${typeAssertionString}' type assertion.`);
62
+ if (validates) {
63
+ const assertion = this; ///
64
+
65
+ context.addAssertion(assertion);
66
+
67
+ this.assign(assignments, stated, context);
68
+
69
+ context.debug(`...verified the '${typeAssertionString}' type assertion.`);
70
+ }
64
71
  }
65
72
 
66
- return verifies;
73
+ return validates;
67
74
  }
68
75
 
69
- verifyType(context) {
70
- let typeVerifies;
76
+ validateType(context) {
77
+ let typeValidates;
71
78
 
72
79
  const typeString = this.type.getString();
73
80
 
74
- context.trace(`Verifying the '${typeString}' type...`);
81
+ context.trace(`Validating the '${typeString}' type...`);
75
82
 
76
83
  const nominalTypeName = this.type.getNominalTypeName(),
77
84
  type = context.findTypeByNominalTypeName(nominalTypeName);
@@ -79,58 +86,58 @@ export default define(class TypeAssertion extends Assertion {
79
86
  if (type !== null) {
80
87
  this.type = type;
81
88
 
82
- typeVerifies = true;
89
+ typeValidates = true;
83
90
  } else {
84
91
  context.debug(`The '${typeString}' type is not present.`);
85
92
  }
86
93
 
87
- if (typeVerifies) {
94
+ if (typeValidates) {
88
95
  context.debug(`...verified the '${typeString}' type.`);
89
96
  }
90
97
 
91
- return typeVerifies;
98
+ return typeValidates;
92
99
  }
93
100
 
94
- verifyWhenStated(assignments, context) {
95
- let verifiesWhenStated = false;
101
+ validateWhenStated(assignments, context) {
102
+ let validatesWhenStated = false;
96
103
 
97
104
  const typeAssertionString = this.getString(); ///
98
105
 
99
- context.trace(`Verifying the '${typeAssertionString}' stated type assertion...`);
106
+ context.trace(`Validating the '${typeAssertionString}' stated type assertion...`);
100
107
 
101
- const termVerifies = this.term.verify(context, () => {
102
- let verifiesForwards;
108
+ const termValidates = this.term.validate(context, () => {
109
+ let validatesForwards;
103
110
 
104
111
  const termType = this.term.getType(),
105
112
  typeEqualToOrSubTypeOfTermType = this.type.isEqualToOrSubTypeOf(termType);
106
113
 
107
114
  if (typeEqualToOrSubTypeOfTermType) {
108
- verifiesForwards = true;
115
+ validatesForwards = true;
109
116
  }
110
117
 
111
- return verifiesForwards;
118
+ return validatesForwards;
112
119
  });
113
120
 
114
- if (termVerifies) {
115
- verifiesWhenStated = true;
121
+ if (termValidates) {
122
+ validatesWhenStated = true;
116
123
  }
117
124
 
118
- if (verifiesWhenStated) {
125
+ if (validatesWhenStated) {
119
126
  context.debug(`...verified the '${typeAssertionString}' stated type assertion.`);
120
127
  }
121
128
 
122
- return verifiesWhenStated;
129
+ return validatesWhenStated;
123
130
  }
124
131
 
125
- verifyWhenDerived(context) {
126
- let verifiesWhenDerived;
132
+ validateWhenDerived(context) {
133
+ let validatesWhenDerived;
127
134
 
128
135
  const typeAssertionString = this.getString(); ///
129
136
 
130
- context.trace(`Verifying the '${typeAssertionString}' derived type assertion...`);
137
+ context.trace(`Validating the '${typeAssertionString}' derived type assertion...`);
131
138
 
132
- const termVerifies = this.term.verify(context, () => {
133
- let verifiesForwards = false;
139
+ const termValidates = this.term.validate(context, () => {
140
+ let validatesForwards = false;
134
141
 
135
142
  const termType = this.term.getType(),
136
143
  termTypeProvisional = termType.isProvisional();
@@ -138,52 +145,35 @@ export default define(class TypeAssertion extends Assertion {
138
145
  if (!termTypeProvisional) {
139
146
  const typeEqualToOrSuperTypeOfTermType = this.type.isEqualToOrSuperTypeOf(termType);
140
147
 
141
- verifiesForwards = typeEqualToOrSuperTypeOfTermType; ///
148
+ validatesForwards = typeEqualToOrSuperTypeOfTermType; ///
142
149
  }
143
150
 
144
- return verifiesForwards;
151
+ return validatesForwards;
145
152
  });
146
153
 
147
- verifiesWhenDerived = termVerifies; ///
154
+ validatesWhenDerived = termValidates; ///
148
155
 
149
- if (verifiesWhenDerived) {
156
+ if (validatesWhenDerived) {
150
157
  context.debug(`...verified the '${typeAssertionString}' derived type assertion.`);
151
158
  }
152
159
 
153
- return verifiesWhenDerived;
160
+ return validatesWhenDerived;
154
161
  }
155
162
 
156
- assign(assignments, context) {
163
+ assign(assignments, stated, context) {
157
164
  if (assignments === null) {
158
165
  return;
159
166
  }
160
167
 
161
- const { Type, Variable } = elements,
162
- termNode = this.term.getNode();
163
-
164
- let type,
165
- provisional;
166
-
167
- provisional = this.type.isProvisional();
168
-
169
- if (!provisional) {
170
- type = this.type;
171
- } else {
172
- provisional = false;
173
-
174
- type = Type.fromTypeAndProvisional(this.type, provisional);
168
+ if (!stated) {
169
+ return;
175
170
  }
176
171
 
177
- const singularVariableNode = termNode.getSingularVariableNode();
172
+ const typeAssertion = this, ///
173
+ variableAssigment = variableAssignmentFromTypeAssertion(typeAssertion, context),
174
+ assignment = variableAssigment; ///
178
175
 
179
- if (singularVariableNode !== null) {
180
- const variableNode = singularVariableNode, ///
181
- variable = Variable.fromVariableNodeAndType(variableNode, type, context),
182
- variableAssignment = variableAssignmentFromVariable(variable),
183
- assignment = variableAssignment; ///
184
-
185
- assignments.push(assignment);
186
- }
176
+ assignments.push(assignment);
187
177
  }
188
178
 
189
179
  static name = "TypeAssertion";
@@ -31,6 +31,18 @@ export default define(class Assumption extends Element {
31
31
 
32
32
  getMetavariable() { return this.reference.getMetavariable(); }
33
33
 
34
+ matchAssumptionNode(assumptionode) {
35
+ const assumptionodeA = assumptionode; ///
36
+
37
+ assumptionode = this.getAssumptionNode();
38
+
39
+ const assumptionodeB = assumptionode, ///
40
+ assumptionodeAAMatchesAssumptionBNodeB = assumptionodeA.match(assumptionodeB),
41
+ assumptionodeMatches = assumptionodeAAMatchesAssumptionBNodeB; ///
42
+
43
+ return assumptionodeMatches;
44
+ }
45
+
34
46
  compareSubstitution(substitution, context) {
35
47
  let comparesToSubstituion = false;
36
48
 
@@ -55,6 +67,14 @@ export default define(class Assumption extends Element {
55
67
  return comparesToSubstituion;
56
68
  }
57
69
 
70
+ isValid(context) {
71
+ const assumptionNode = this.getAssumptionNode(),
72
+ assumptionPresent = context.isAssumptionPresentByAssumptionNode(assumptionNode),
73
+ valid = assumptionPresent; ///
74
+
75
+ return valid;
76
+ }
77
+
58
78
  validate(assignments, stated, context) {
59
79
  let validates = false;
60
80
 
@@ -62,29 +82,41 @@ export default define(class Assumption extends Element {
62
82
 
63
83
  context.trace(`Validating the '${assumptionString}' assumption...`);
64
84
 
65
- const referenceValidates = this.validateReference(assignments, stated, context);
85
+ const valid = this.isValid(context);
66
86
 
67
- if (referenceValidates) {
68
- const statementValidates = this.validateStatement(assignments, stated, context);
87
+ if (valid) {
88
+ validates = true;
69
89
 
70
- if (statementValidates) {
71
- let validatesWhenStated = false,
72
- validatesWhenDerived = false;
90
+ context.debug(`...the '${assumptionString}' assumption is already valid.`);
91
+ } else {
92
+ const referenceValidates = this.validateReference(assignments, stated, context);
73
93
 
74
- if (stated) {
75
- validatesWhenStated = this.validateWhenStated(assignments, context);
76
- } else {
77
- validatesWhenDerived = this.validateWhenDerived(context);
78
- }
94
+ if (referenceValidates) {
95
+ const statementValidates = this.validateStatement(assignments, stated, context);
96
+
97
+ if (statementValidates) {
98
+ let validatesWhenStated = false,
99
+ validatesWhenDerived = false;
100
+
101
+ if (stated) {
102
+ validatesWhenStated = this.validateWhenStated(assignments, context);
103
+ } else {
104
+ validatesWhenDerived = this.validateWhenDerived(context);
105
+ }
79
106
 
80
- if (validatesWhenStated || validatesWhenDerived) {
81
- validates = true;
107
+ if (validatesWhenStated || validatesWhenDerived) {
108
+ validates = true;
109
+ }
82
110
  }
83
111
  }
84
- }
85
112
 
86
- if (validates) {
87
- context.debug(`...validated the '${assumptionString}' assumption.`);
113
+ if (validates) {
114
+ const assumption = this; ///
115
+
116
+ context.addAssumption(assumption);
117
+
118
+ context.debug(`...validated the '${assumptionString}' assumption.`);
119
+ }
88
120
  }
89
121
 
90
122
  return validates;
@@ -43,13 +43,11 @@ export default define(class Derivation extends Element {
43
43
  subproofOrProofAssertionVerifies = await subproofOrProofAssertion.verify(assignments, context);
44
44
 
45
45
  if (subproofOrProofAssertionVerifies) {
46
- const assignmentsAssigned = assignAssignments(assignments, context);
46
+ assignAssignments(assignments, context);
47
47
 
48
- if (assignmentsAssigned) {
49
- context.addSubproofOrProofAssertion(subproofOrProofAssertion);
48
+ context.addSubproofOrProofAssertion(subproofOrProofAssertion);
50
49
 
51
- return true;
52
- }
50
+ return true;
53
51
  }
54
52
  });
55
53
 
@@ -4,7 +4,7 @@ import { Element } from "occam-languages";
4
4
 
5
5
  import { define } from "../elements";
6
6
  import { equateTerms } from "../process/equate";
7
- import { equalityAssignmentFromEquality, variableAssignmentFromVariable } from "../process/assign";
7
+ import { equalityAssignmentFromEquality, leftVariableAssignmentFromEquality, rightVariableAssignmentFromEquality } from "../process/assign";
8
8
 
9
9
  export default define(class Equality extends Element {
10
10
  constructor(context, string, node, leftTerm, rightTerm) {
@@ -29,6 +29,18 @@ export default define(class Equality extends Element {
29
29
  return equalityNde;
30
30
  }
31
31
 
32
+ getLeftTermNode() {
33
+ const leftTermNode = this.leftTerm.getNode();
34
+
35
+ return leftTermNode;
36
+ }
37
+
38
+ getRightTermNode() {
39
+ const rightTermNode = this.rightTerm.getNode();
40
+
41
+ return rightTermNode;
42
+ }
43
+
32
44
  getType() {
33
45
  let type;
34
46
 
@@ -57,6 +69,18 @@ export default define(class Equality extends Element {
57
69
  return terms;
58
70
  }
59
71
 
72
+ matchEqualityNode(equalityNode) {
73
+ const equalityNodeA = equalityNode; ///
74
+
75
+ equalityNode = this.getEqualityNode();
76
+
77
+ const equalityNodeB = equalityNode, ///
78
+ equalityNodeAAMatchesEqualityBNodeB = equalityNodeA.match(equalityNodeB),
79
+ equalityNodeMatches = equalityNodeAAMatchesEqualityBNodeB; ///
80
+
81
+ return equalityNodeMatches;
82
+ }
83
+
60
84
  isReflexive() {
61
85
  const leftTermString = this.leftTerm.getString(),
62
86
  rightTermString = this.rightTerm.getString(),
@@ -65,6 +89,14 @@ export default define(class Equality extends Element {
65
89
  return reflexive;
66
90
  }
67
91
 
92
+ isEqualTo(equality) {
93
+ const equalityNode = equality.getNode(),
94
+ equalityNodeMatches = this.matchEqualityNode(equalityNode),
95
+ equalTo = equalityNodeMatches; ///
96
+
97
+ return equalTo;
98
+ }
99
+
68
100
  isEqual(context) {
69
101
  let equal = false;
70
102
 
@@ -79,151 +111,154 @@ export default define(class Equality extends Element {
79
111
  return equal;
80
112
  }
81
113
 
82
- verify(assignments, stated, context) {
83
- let verifies = false;
114
+ isValid(context) {
115
+ const equalityNode = this.getEqualityNode(),
116
+ equalityPresent = context.isEqualityPresentByEqualityNode(equalityNode),
117
+ valid = equalityPresent; ///
118
+
119
+ return valid;
120
+ }
121
+
122
+ validate(assignments, stated, context) {
123
+ let validates = false;
84
124
 
85
125
  const equalityString = this.getString(); ///
86
126
 
87
- context.trace(`Verifying the '${equalityString}' equality...`);
127
+ context.trace(`Validating the '${equalityString}' equality...`);
88
128
 
89
- const termsVerify = this.verifyTerms(context);
129
+ const valid = this.isValid(context);
90
130
 
91
- if (termsVerify) {
92
- let verifiesWhenStated = false,
93
- verifiesWhenDerived = false;
131
+ if (valid) {
132
+ validates = true;
94
133
 
95
- if (stated) {
96
- verifiesWhenStated = this.verifyWhenStated(assignments, context);
97
- } else {
98
- verifiesWhenDerived = this.verifyWhenDerived(context);
99
- }
134
+ context.debug(`...the '${equalityString}' equality is already valid.`);
135
+ } else {
136
+ const termsValidate = this.validateTerms(context);
137
+
138
+ if (termsValidate) {
139
+ let validatesWhenStated = false,
140
+ validatesWhenDerived = false;
100
141
 
101
- if (verifiesWhenStated || verifiesWhenDerived) {
102
- verifies = true;
142
+ if (stated) {
143
+ validatesWhenStated = this.validateWhenStated(assignments, context);
144
+ } else {
145
+ validatesWhenDerived = this.validateWhenDerived(context);
146
+ }
147
+
148
+ if (validatesWhenStated || validatesWhenDerived) {
149
+ validates = true;
150
+ }
103
151
  }
104
- }
105
152
 
106
- if (verifies) {
153
+ if (validates) {
154
+ const equality = this; ///
107
155
 
108
- this.assign(assignments, context);
156
+ context.addEquality(equality);
109
157
 
110
- }
158
+ this.assign(assignments, stated, context);
111
159
 
112
- if (verifies) {
113
- context.debug(`...verified the '${equalityString}' equality.`);
160
+ context.debug(`...validated the '${equalityString}' equality.`);
161
+ }
114
162
  }
115
163
 
116
- return verifies;
164
+ return validates;
117
165
  }
118
166
 
119
- verifyTerms(context) {
120
- let termsVerify;
167
+ validateTerms(context) {
168
+ let termsValidate;
121
169
 
122
170
  const equalityString = this.getString(); ///
123
171
 
124
- context.trace(`Verifying the '${equalityString}' equality's terms...`);
172
+ context.trace(`Validating the '${equalityString}' equality's terms...`);
125
173
 
126
- const leftTermVerifies = this.leftTerm.verify(context, () => {
127
- let verifiesForwards;
174
+ const leftTermValidates = this.leftTerm.validate(context, () => {
175
+ let validatesForwards;
128
176
 
129
- const rightTermVerifies = this.rightTerm.verify(context, () => {
130
- let verifiesForwards;
177
+ const rightTermValidates = this.rightTerm.validate(context, () => {
178
+ let validatesForwards;
131
179
 
132
180
  const leftTermType = this.leftTerm.getType(),
133
181
  rightTermType = this.rightTerm.getType(),
134
182
  leftTermTypeComparableToRightTermType = leftTermType.isComparableTo(rightTermType);
135
183
 
136
- verifiesForwards = leftTermTypeComparableToRightTermType; ///
184
+ validatesForwards = leftTermTypeComparableToRightTermType; ///
137
185
 
138
- return verifiesForwards;
186
+ return validatesForwards;
139
187
  });
140
188
 
141
- verifiesForwards = rightTermVerifies; ///
189
+ validatesForwards = rightTermValidates; ///
142
190
 
143
- return verifiesForwards;
191
+ return validatesForwards;
144
192
  });
145
193
 
146
- termsVerify = leftTermVerifies; ///
194
+ termsValidate = leftTermValidates; ///
147
195
 
148
- if (termsVerify) {
149
- context.debug(`...verified the '${equalityString}' equality's terms.`);
196
+ if (termsValidate) {
197
+ context.debug(`...validated the '${equalityString}' equality's terms.`);
150
198
  }
151
199
 
152
- return termsVerify;
200
+ return termsValidate;
153
201
  }
154
202
 
155
- verifyWhenStated(assignments, context) {
156
- let verifiesWhenStated;
203
+ validateWhenStated(assignments, context) {
204
+ let validatesWhenStated;
157
205
 
158
206
  const equalityString = this.getString(); ///
159
207
 
160
- context.trace(`Verifying the '${equalityString}' stated equality...`);
208
+ context.trace(`Validating the '${equalityString}' stated equality...`);
161
209
 
162
- verifiesWhenStated = true;
210
+ validatesWhenStated = true;
163
211
 
164
- if (verifiesWhenStated) {
165
- context.debug(`...verified the '${equalityString}' stated equality.`);
212
+ if (validatesWhenStated) {
213
+ context.debug(`...validated the '${equalityString}' stated equality.`);
166
214
  }
167
215
 
168
- return verifiesWhenStated;
216
+ return validatesWhenStated;
169
217
  }
170
218
 
171
- verifyWhenDerived(context) {
172
- let verifiesWhenDerived;
219
+ validateWhenDerived(context) {
220
+ let validatesWhenDerived;
173
221
 
174
222
  const equalityString = this.getString(); ///
175
223
 
176
- context.trace(`Verifying the '${equalityString}' derived equality...`);
224
+ context.trace(`Validating the '${equalityString}' derived equality...`);
177
225
 
178
- verifiesWhenDerived = true; ///
226
+ validatesWhenDerived = true; ///
179
227
 
180
- if (verifiesWhenDerived) {
181
- context.debug(`...verified the '${equalityString}' derived equality.`);
228
+ if (validatesWhenDerived) {
229
+ context.debug(`...validated the '${equalityString}' derived equality.`);
182
230
  }
183
231
 
184
- return verifiesWhenDerived;
232
+ return validatesWhenDerived;
185
233
  }
186
234
 
187
- assign(assignments, context) {
235
+ assign(assignments, stated, context) {
188
236
  if (assignments === null) {
189
237
  return;
190
238
  }
191
239
 
192
- const { Variable } = elements,
193
- type = this.getType(),
194
- leftTermNode = this.leftTerm.getNode(),
195
- rightTermNode = this.rightTerm.getNode(),
196
- leftTermNodeSingularVariableNode = leftTermNode.getSingularVariableNode(),
197
- rightTermNodeSingularVariableNode = rightTermNode.getSingularVariableNode(),
198
- leftVariableNode = leftTermNodeSingularVariableNode, ///
199
- rightVariableNode = rightTermNodeSingularVariableNode; ///
240
+ const equality = this, ///
241
+ equalityAssignment = equalityAssignmentFromEquality(equality, context),
242
+ leftVariableAssignment = leftVariableAssignmentFromEquality(equality, context),
243
+ rightVariableAssignment = rightVariableAssignmentFromEquality(equality, context);
200
244
 
201
245
  let assignment;
202
246
 
203
- if (leftVariableNode !== null) {
204
- const leftVariable = Variable.fromVariableNodeAndType(leftVariableNode, type, context),
205
- leftVariableAssignment = variableAssignmentFromVariable(leftVariable);
247
+ assignment = equalityAssignment; ///
248
+
249
+ assignments.push(assignment);
206
250
 
251
+ if (leftVariableAssignment !== null) {
207
252
  assignment = leftVariableAssignment; ///
208
253
 
209
254
  assignments.push(assignment);
210
255
  }
211
256
 
212
- if (rightVariableNode !== null) {
213
- const rightVariable = Variable.fromVariableNodeAndType(rightVariableNode, type, context),
214
- rightVariableAssignment = variableAssignmentFromVariable(rightVariable);
215
-
257
+ if (rightVariableAssignment !== null) {
216
258
  assignment = rightVariableAssignment; ///
217
259
 
218
260
  assignments.push(assignment);
219
261
  }
220
-
221
- const equality = this, //
222
- equalityAssignment = equalityAssignmentFromEquality(equality);
223
-
224
- assignment = equalityAssignment; ///
225
-
226
- assignments.push(assignment);
227
262
  }
228
263
 
229
264
  static name = "Equality";