distributed logic programming