What is an integral domain?