Janus, a concurrent constraint programming language, provides an efficient and expressive means of constructing distributed and parallel computations . Concurrent logic programming languages  are a special case of concurrent constraint programming languages in which the constraint system is confined to the Herbrand domain. Concurrent logic programs are collections of Hom clauses with control annotations. The execution of a terminating concurrent logic program can be viewed as a proof of a query using the program as a set of axioms. The implementations of such languages can be seen as sound but incomplete theorem provers.