this implementation does not require the construction of the normal, and is based only on Kernel predicates