DLP : a language for distributed logic programming : design, semantics and