In CKKS, after performing a multiplication (c_mul = c1 * c2), we typically apply rescaling to reduce noise in the ciphertext. However, this also consumes a level (L to L-1). Now, if I want to add c_mul (at level L-1) to another ciphertext c3 that's still at level L, direct addition isn't possible. This is because they have different "scales" due to their moduli. SEAL seems to handle this by copying the encryption parameters of c_mul to c3. But what's the underlying mathematical concept/proof in CKKS that enables this switching across levels?
In CKKS, after performing a multiplication (c_mul = c1 * c2), we typically apply rescaling to reduce noise in the ciphertext. However, this also consumes a level (L to L-1). Now, if I want to add c_mul (at level L-1) to another ciphertext c3 that's still at level L, direct addition isn't possible. This is because they have different "scales" due to their moduli. SEAL seems to handle this by copying the encryption parameters of c_mul to c3. But what's the underlying mathematical concept/proof in CKKS that enables this switching across levels?