Description
Also, for a specific rotation index, keep only the key with the most towers (in the cryptcontext map with all automorphism keys).
A related issue was originally opened in palisade: https://gitlab.com/palisade/palisade-development/-/issues/90 (there was even an early implementation, but it was hacky/did not fully work). It would take an existing evaluation key and compress it to a certain level.
The desired API change is to add an extra argument to Eval*KeyGen methods, which will set the level at which the key should be created (by default, it will be 0).
It would also be helpful to add a CompressEvalKey function that reduces the number of RNS limbs for an existing evaluation key.
The initial focus should be on BGV and CKKS. The BFV setup is a little bit trickier (there, the level would imply how many RNS limbs were removed).
Unit tests should be added.