users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Avoiding unification equality / from variable to atom


From: Alexandre Saidi
Subject: Re: Avoiding unification equality / from variable to atom
Date: Mon, 30 Aug 2010 12:46:13 +0200

Hi Peter,
I think you must use something like the predefined numbervars.

Example : 
?- numbervars(f(A),1,U).
—> A = '$VAR'(1)
U = 2

numbervars “counts" variables in his first argument term, beginning with the 
index given by the 2nd arg (here 1).
Meanwhile, numbervars “renames” variables as you can see in     A = '$VAR’(1) 
by calling the first variable '$VAR'(1).
The answer U=2 gives the next free index (also, 2-1=1 means : you had one 
variable).

If we try 
?- numbervars(rel(_,A,A),2,N).
we will rename the variable ‘A' by '$VAR'(3) and N=4 (this time, the index 
started at 2 and same variable gets same number).

Now, for your question : 
?- numbervars([rel(_,A,_),rel(de,B,C),rel(para,C,D)],1,N), 
memberchk(rel(_,A,_),[rel(de,B,C),rel(para,C,D)]).
—> No.

The only success case is when there are identical variables.


Hope this will help.

Alex


Le 27 août 2010 à 02:05, Pedro Fialho a écrit :

> Hi all,
> 
> Here I present a simple case which describes my problem:
> 
> | ?-  memberchk(rel(_,A,_),[rel(de,B,C),rel(para,C,D)]).
> B = A
> 
> yes
> | ?- 
> 
> I'd like this memberchk/2 call to answer "No", stated that the
> content on the list argument is unknown and as such the A \== B 
> constraint it's not available.
> 
> Is there a way to avoid unification/equality between variables?
> Or a translator from variable to atom (uppercase to lowercase)?
> 
> Any hints?
> 
> 
> Greetings,
> Peter
> 
> 
> _______________________________________________
> Users-prolog mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/users-prolog

 -------------------------------
Alexandre Saidi
Maitre de Conférences
Ecole Centrale de Lyon-Dép. MI
LIRIS-CNRS UMR 5205
Tél : 0472186530, Fax : 0472186443









reply via email to

[Prev in Thread] Current Thread [Next in Thread]