I am working with the 5G NR polar code and have implemented the CRC-Aided Successive Cancellation List decoder based on this paper (Tal et al. 2012).
As my decoder is only used to decode a limited number of message length (code dimension) and code rate, it has been optimized in many ways to speed up the processing time.
Everything is perfect until one day, I learn that abut half of the bits of the messages are known (specifically, set to $0$). This is equivalent to reduce the code dimension by a factor of two, or double the real coderate.
To write it down mathematically, for a given code dimension $k$ and coderate $k/n$, codeword $\mathbf{c}$ (an $n\times 1$ vector) is generated by the generating matrix $\mathbf{G}$ (an $n\times k$ matrix) from message $\mathbf{m}$ (an $k\times 1$ vector):
$$\mathbf{c} = \mathbf{G} \mathbf{m} = [\mathbf{g_1} \mathbf{g_2} ... \mathbf{g_j} ... \mathbf{g_{j+\alpha-1}} ... \mathbf{g_k}] \times \begin{bmatrix}m_1\\m_2\\...\\m_j\\...\\m_{j+\alpha-1}\\...\\m_k\end{bmatrix}\tag{1}$$
where $m_j=m_{j+1}=...=m_{j+\alpha-1} = 0$. Then (1) is equivalent to
$$\mathbf{c} = \mathbf{G'} \mathbf{m'} = [\mathbf{g_1} \mathbf{g_2} ... \mathbf{g_{j-1}} \mathbf{g_{j+\alpha}} ... \mathbf{g_k}] \times \begin{bmatrix}m_1\\m_2\\...\\m_{j-1}\\m_{j+\alpha}\\...\\m_k\end{bmatrix}\tag{2}$$
where $\mathbf{G'}$ is an $n\times (k-\alpha)$ matrix, and $\mathbf{m'}$ is an $(k-\alpha) \times 1$ vector.
The optimal way should be implementing a decoder for the check matrix $\mathbf{H}'$ of (2). However, because I have spent months to optimize my decoder implemented for the check matrix $\mathbf{H}$ of (1), is there any way to reuse it?
I am thinking about some ways to transform the received soft-bit codeword to take into account the known bits of the associated message.
(The question is specifically about the 5G NR polar code family and its decoder. But as I focus on a fixed code dimension and code rate, I believe this is applicable for any linear block code).