Allows a kernel to have either a dense or a sparse inner matrix in a way that is transparent to the user
Specifies the methods an inner matrix of a kernel must be able to provide