# Set Operators

The in operator examines membership of the set. Response in ['y', 'Y', 'n', 'N'] is True when Response is 'y', 'Y', 'n' or 'N' and False otherwise. Another useful set for validation purposes is ['A' .. 'Z', 'a' .. 'z', '-', CHR(39)], containing the acceptable characters for British surnames.

Three other commonly used set operators are + (union), - (difference), and * (intersection). If Set1 contains 1, 2, 4 and 5 and Set2 contains 3, 4, 5 and 6 then:

• Set1 + Set2 contains 1, 2, 3, 4, 5 and 6 (all of the values);
• Set1 – Set2 contains 1 and 2 (values from Set1 that are not in Set2);
• Set1 * Set2 contains 4 and 5 (values in both sets).

The following program demonstrates the use of these operators.

```program DieSet;
{\$APPTYPE CONSOLE}
uses
Sysutils;
type
TDieSet = set of 1..6;
var
Set1 : TDieSet = [1, 2, 4, 5];
Set2 : TDieSet = [3, 4, 5, 6];
Set3 : TDieSet;

procedure Display(DisplayedSet : TDieSet);
var
Count : integer;
begin
for Count := 1 to 6 do
begin
if Count in DisplayedSet then
write(Count,' '); //Membership
end;
writeln;
end;

begin
write('Set1: ');
Display(Set1);
write('Set2: ');
Display(Set2);
Set3 := Set1 + Set2;   //Union
write('Union: ');
Display(Set3);
Set3 := Set1 - Set2;   //Difference
write('Difference (Set1 - Set2): ');
Display(Set3);
Set3 := Set1 * Set2;   //Intersection
write('Intersection: ');
Display(Set3);