bits are treated as erased at the decoder, while shortening introduces a sub-code imposing the untransmitted code bits to assume a fixed value, typically zero, such that their value is already known by the decoder. It has been observed that for polar codes, shortening works better for high rates, and puncturing for low rates [@punct_paper].

Puncturing $U$ code bits deteriorates the bit-channel reliabilities, additionally causing $U$ bit channels, termed as *incapable bits*, to be completely unreliable; the position of these bits can be calculated on the basis of the matching pattern [@short_mat]. In order to avoid catastrophic error-correction performance degradation under SC decoding, incapable bits must be frozen to prevent random decisions at the decoder. Shortening, on the contrary, improves the bit channel reliabilities by introducing overcapable bits, i.e. bits with conceptually infinite reliability that are always correctly decoded [@punct_paper]. However, code bits in the matching pattern must depend on frozen bits only, which forces to freeze the most reliable bit-channels worsening the error correction capabilities of the code.

Rate matching alters the code reliability sequence so that bit-channel reliabilities need to be recalculated to find the optimal frozen set; DE/GA method is used to evaluate new bit-channel reliabilities in 