In Edward Kmett's article on CRCs it has the following derivation:
CRC(ab) = -- definition of CRC
crc(INIT,ab) + FINAL = -- linearity
crc(INIT,a0^n + 0^m b) + FINAL = -- additive homomorphism
crc(INIT,a0^n) + crc(0,0^nb) + FINAL = -- zero blindness
crc(INIT,a0^n) + crc(0,b) + FINAL -- definition of crc
crc(crc(INIT,a),0^n) + crc(0,b) + FINAL -- additive homomorphism
crc(crc(INIT,0^m)+crc(0,a),0^n) + crc(0,b) + FINAL
What in the world is a0^n
and 0^m b
? Are these powers, like a * pow(0, n)
? If so, wouldn't 0^n = 0? Or XOR? Something else entirely? Is the space significant? I am not understanding why, for example:
ab = a0^n + 0^m b
and why 0^m b
became 0^nb
between the third and fourth lines?