Languages of this class used non-determinism in a fundamental way to gain parallelism. Also central is the notion of the logical variable as a communication channel. Non-determinism is exploited in two different ways: non-deterministic composition similar to Dijkstra's guarded clauses (in PCN [CT90] and UNITY [CM88]), and non-deterministic goal resolution (in parallel logic programming [Sha89]).