Expanding the LHS doesn't look so bad. What about the following

(Assuming the convention that

binds more strongly than

, of course.)

Now we have decomposed the original LHS into a union of three sets, the first is a subset of A (since intersecting A with any other set gives a subset of A), the second is a subset of B (again, because this is an intersection of B with another set) and the third is the empty set. Hence the whole union is contained in the union of A and B.

More formally, this is last step uses the following general rule: If

and

then

. Which is just another way of saying that

is a "least upper bound" operator in the boolean lattice of subsets of a given universal set: if Z is an upper bound for both X and Y then it is also an upper bound for

.

Similarly, intersection of sets is a "greatest lower bound" operator in that boolean lattice.