Only few proposals have been made in the literature to tackle this class of parallelism, and this is mainly related to the complexity of the problem. In particular, very few approaches have been described which are capable of maintaining Prolog semantics, while the large majority of the others introduce new languages with different semantics, in which exploitation of parallelism becomes simpler and more efficient.
The most interesting approach is represented by the class of Committed-choice Languages (CCL) [92]. The languages belonging to this family (e.g., GHC [112], Parlog [15], Concurrent Prolog [92], KL1 [67]) are characterized by the fact that producer/consumer roles are statical (e.g., through mode declarations), and don't know nondeterminism has been eliminated (i.e., selection of a clause will not leave choice points behind).
These restrictions guarantee the possibility of efficiently implementing dependent and-parallelism--as confirmed by the practical experience [23]. Nevertheless, these languages implement a semantic considerably different from that of Prolog (e.g., no don't know nondeterminism).