(<=> (Commutative-Ring ?Domain ?Plus-Op ?Zero-Id ?Mult-Op ?One-Id) (And (Abelian-Group ?Domain ?Plus-Op ?Zero-Id) (Abelian-Semigroup ?Domain ?Mult-Op ?One-Id) (Distributes ?Mult-Op ?Plus-Op ?Domain)))