gp@sys.uea.ac.uk (George Papadopoulos CMP RA) (04/16/89)
Unlike what seems to be claimed in the relevant literature, it appears that a _complete_ absorption of unification in the mapping of one concurrent logic language onto another is not always possible. The case I have in mind (there may be others but I'm not aware of them) is problematical to all CLLs since it has to do with the common choose-only-one-rule operational semantics rather than with unification itself. It's the case of a procedure having guarded clauses with non-deterministic input patterns. Consider the following contrived program (written in a GHC-like syntax): p(f(X,Y),Z,W) :- g1(X,Y,U) | b1(X,Y,U,Z,W). p(X,g(Y,Z),W) :- g2(X,Y,Z,V) | b2(Y,Z,V,W). The usual (only?) way to map this sort of program to another CLL is by doing something like this: p(P1,P2,W) :- g1'({P1,X1,Y1},U,I), g2'(P1,{P2,Y2,Z2},V,I), commit(I,X1,Y1,Y2,Z2,U,V,P2,W). where {...} plays the role of Parlog's one-way matching primitive. It can be predefined or have its functionality included in g1' and g2' with something like: g1'({f(X,Y),X1,Y1},U,I) :- g1(X,Y,U1) | X1=X, Y1=Y, U=U1, I=1. g1'(_,_,_) :- otherwise | true. ... etc. Of course the above scheme is incomplete; it needs extra arguments to report failures, kill unnecessary work, etc. The point I'm driving at however is that you need the extra variables X1,Y1,Y2,Z2 to communicate the results of the input unifications to the 'commit' process. In other words it appears that you reify unification rather than absorb it. Note that this problem does not arise with non-overlapping or "identical" input patterns; only one clause will be candidate for commitment then, and 'commit' can refer directly to the arguments imported during input unification. Am I right here? George -- George A. Papadopoulos, RA, ! Tel: +44-603-56161, Ext. 2692 SYS, UEA, Norwich NR4 7TJ, UK ! e-mail: gp@sys.uea.ac.uk Disclaimer: "Reality is determined either by majority vote or government grant, with the latter holding veto power over the former" L. Ron Hubbard, Mission Earth