lib-1.7 has a general notion AlmostLeft(Right)Cancellative,
and it is used in *-cancelˡ-nonZero in IsCancellativeCommutativeSemiring.
On the other hand  Nat.Properties has the definitions of kind.
*-cancelʳ-≡ :  ∀ m n {o} → m * suc o ≡ n * suc o → m ≡ n  
 
It has sense to add there  *-cancelˡ-nonZero,  *-cancelʳ-nonZero
having  types AlmostLeft(Right)Cancellative,
and to add the instances of CancellativeCommutativeSemiring for Nat and Integer.
?