Theory And Practice Of Logic Programming