From afromant@midway.uchicago.edu  Mon Dec  6 23:55:37 1999
Received: from midway.uchicago.edu (midway.uchicago.edu [128.135.12.12])
	by swi.psy.uva.nl (8.9.3/8.9.3) with ESMTP id XAA27931
	for <prolog@swi.psy.uva.nl>; Mon, 6 Dec 1999 23:55:36 +0100 (MET)
Received: from harper.uchicago.edu (root@harper.uchicago.edu [128.135.12.7])
	by midway.uchicago.edu (8.9.3/8.9.3) with ESMTP id QAA16554;
	Mon, 6 Dec 1999 16:55:37 -0600 (CST)
Received: from equality-7-2524 (pierce-175-003.rh.uchicago.edu [128.135.175.3])
	by harper.uchicago.edu (8.9.3/8.9.3) with SMTP id QAA03022;
	Mon, 6 Dec 1999 16:55:36 -0600 (CST)
Message-Id: <199912062255.QAA03022@harper.uchicago.edu>
X-Sender: afromant@nsit-popmail.uchicago.edu
X-Mailer: QUALCOMM Windows Eudora Pro Version 4.0.1 
Date: Mon, 06 Dec 1999 16:57:01 -0500
To: "Richard A. O'Keefe" <ok@hermes.otago.ac.nz>, prolog@swi.psy.uva.nl
From: alexandra romantseva <afromant@midway.uchicago.edu>
Subject: join(X,Y) SOLVED!!!
In-Reply-To: <199912062121.KAA08715@hermes.otago.ac.nz>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"

Everyone, 


Richard has found the answer to join, and it's a silly looking one at that.

The definition join(X, X).  is the answer to my problem....
Thank you so very much.

And most importantly thanks to all who put in their time and effort to help
me and solve the mystery definition of join(X,Y).


	:o)
	Sasha



At 10:21 AM 12/7/99 +1300, you wrote:
>	join(X,Y)
>	
>	combines the two equivalence relations X and Y (which must work
>	on the same number of things for this to make good sense) things
>	equivalent in X remain equivalent, things that are equivalent in
>	Y remain equivalent and some things become equivalent because of
>	the combination of X and Y.
>
>At first it sounded to me as though this meant
>
>    "if X : Eqv(S) and Y: Eqv(S) then join(X,Y) : Eqv(S)
>     is the least (finest) equivalence relation containing 
>     both X and Y".
>
>If that's the case, then programming it is quite straightforward
>(join(X, Y) = (X + Y)*, using obvious notation) once you tell us
>how the equivalence relations X and Y and the result are to be
>represented.
>
>But then came the example:
>
>	and the following is supposed to happen :
>	
>	| ?- unitequiv(5,2,4,X), unitequiv(5,2,3,Y), join(X,Y).
>	X = [A,B,B,B,C]
>	Y = [A,B,B,B,C] ? 
>	no
>	
>That left me _completely_ confused.  the list [A,B,B,B,C] doesn't
>look like any equivalence relation representation that I can think
>of (unless it is the partition {{1}, {2,3,4}, {5}}) and join is a
>predicate, not a function, with no place that I can see to put the
>result.
>
>Here's a wild guess.  S is the integers 1..N for some N.
>A list [X1,...,XN] represents the equivalence relation
>(i equiv j if and only if Xi is the same variable as Xj).
>join(X, Y) is to take two such representations and *convert*
>them both to the representation of (X+Y)* by binding variables.
>
>If that's the case, then
>    unit_equiv(5, 2,4, X)	=> X = [X1,X2,X3,X2,X5]
>    unit_equiv(5, 2,3, Y)	=> Y = [Y1,Y2,Y2,Y4,Y5]
>and the definition
>    join(X, X) :- true.
>should work.  You'd get
>    X1 = Y1
>    X2 = Y2 = X3 = Y4
>    X5 = Y5
>or  X = Y = [A,B,B,B,C].
>
>If it's not the case, I have no idea what's going on.
> 
-----------------------------------------------------
Click here for Free Video!!
http://www.gohip.com/freevideo/

