Shared proof for finishing a native-word product #
This module proves the final stage shared by the one-word and two-word multiplication kernels:
carry handling, overflow testing and field packing of a rounded UInt64 significand. Product
construction stays in each backend, where the machine representation and its capacity bounds
differ.
Decoding finishWord with its decline marker gives finish?.
The caller's decline marker only has to lie above every valid packed word.
Native carry, overflow, and packing agree with the natural-number normal-result specification.
Callers supply the representation facts for their product implementation: the natural values of
the position and rounded significand, the no-wrap fact for incrementing the position, and the
implicit and carry bits as machine words. The overflow threshold and exponent offset are computed
from biasWord, whose value follows from the width bound alone.