Generic zebra puzzle solver in SICStus Prolog