This program demonstrates the use of the existentials and the QBVF (quantified
bit-vector solver). We generate CRC polynomials of degree 16 that can be used
for messages of size 48-bits. The query finds all such polynomials that have hamming
distance is at least 4. That is, if the CRC can't tell two different 48-bit messages
apart, then they must differ in at least 4 bits.

Given a hamming distance value hd, crcGood returns true if
the 16 bit polynomial can distinguish all messages that has at most
hd different bits. Note that we express this conversely: If the
sent and received messages are different, then it must be the
case that that must differ from each other (including CRCs), in
more than hd bits.

Note that different runs can produce different results, depending on the random
numbers used by the solver, solver version, etc. (Also, the solver will take some
time to generate these results. On my machine, the first five polynomials were
generated in about 5 minutes.)