Casting a numeric data type to boolean data type is very different from casting to any other numeric type. The following figure shows that casting to boolean behaves very differently from cast to an unsiged 1 bit integer. This difference in behavior when casting to the type is the fundamental reason why boolean and 1 bit unsigned are not the same data type.
Figure: Casting values -5:0.25:5 to boolean and to 1 bit unsigned with saturation and wrapping.
For full details of this example, see the attached pdf. Or, read the quick recap below.
The top plot in the figure shows cast to boolean. The output is always 1 except for the one case when the input is 0.
The middle plot shows a saturating cast to 1 bit unsigned integer. The plot is a step function with an output sequence of all 0s followed by a sequence of all 1s. Clearly, this behaves very differently from cast to boolean.
The bottom plot shows a wrapping cast to 1 bit unsigned integer. The plot is periodic with period two. The first half of a period is all 0s, and the second half is all 1s. Clearly, this behaves very differently from cast to boolean.