An exposition of abductive reasoning through logic programming with constraints