The papers CRYSTALS-Kyber and CRYSTALS-Dilithium both have been written by quite different authors. It seems that at least the key generation is very different from each other. CRYSTALS mainly seems to be a suite of algorithms based on the hardness of module lattices.
From CRYSTALS-Kyber:
CRYptographic SuiTe for Algebraic LatticeS – a package submitted to NIST post-quantum standardization effort in November 2017), a portfolio of post-quantum cryptographic primitives built around a key-encapsulation mechanism (KEM), based on hardness assumptions over module lattices.
Where the KEM part is obviously specific to Kyber, not to Dilithium
Which mathematical operations can be shared between implementations of both? What kind of percentage of these algorithms could use that shared implementation of (low level) primitives?