Re: Strange variables...

Daniel Diaz <[email protected]>
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Hi Fred,

thank you for this report. This is a bug in the compiler.
Fixed in the git and will be available in the 1.4.5 version.

Daniel


Le 08/01/2015 20:57, Fred Bapst a écrit :
> I'm observing a rather strange behaviour (GnuProlog 1.4.4 on Windows and Linux,
> idem for older versions) and I'm not able to completely isolate it; it seems to
> be related to singleton variables and backtracking. Here is a stupid code
> demonstrating the issue:
>
> %--------------
> z(A,B, A,B).
> z(A,B, B,A).
>
> p5(Ls):-
>      _ = [B, C],
>      % write(B), % write(C),
>      Ls = [A, E],
>      z(A, _, 1, 2),
>      E=3,
>      z(A, _, B, C).
>
> %--------------
>
> Asking for every solution leads to an infinite loop...
>
>    ?- p5(X).
>    X = [1,3] ? a
>       ...... [infinine loop].....
>
> Writing B and C removes the problem; and writing only one of them leads to
> another strange behavior.
>
> Running the call with the tracer also changes the behavior, and reveals
> strange d(...) sub-terms:
>
> {trace}
> | ?- p5(X).
>        1    1  Call: p5(_23) ?
>        2    2  Call: z(_53,_57,1,2) ?
>        2    2  Exit: z(1,2,1,2) ?
>        3    2  Call: z(1,_85,_126,_127) ?
>        3    2  Exit: z(1,_85,1,_85) ?
>        1    1  Exit: p5([1,3]) ?
> X = [1,3] ? a
>        1    1  Redo: p5([1,3]) ?
>        3    2  Redo: z(1,_85,1,_85) ?
>        3    2  Exit: z(1,_85,_85,1) ?
>        1    1  Exit: p5([1,3]) ?
> X = [1,3]
>        1    1  Redo: p5([1,3]) ?
>        2    2  Redo: z(1,2,1,2) ?
>        2    2  Exit: z(2,1,1,2) ?
>        3    2  Call:
> z(2,_85,d(3,[a(z(2,_85,d(3,[a(z(2,_85,...),3,2,...),a(p5(...),1,...)]),2),3,2,144),a(p5([2,3]),1,1,87)]),2)
> ?
>        3    2  Exit:
> z(2,d(3,[a(z(2,d(3,[a(z(2,d(...,...),...),3,2,...),a(p5(...),1,...)]),d(3,[a(z(2,d(...,...),...),3,2,...),a(p5(...),1,...)]),2),3,2,144),a(p5([2,3]),1,1,87)]),d(3,[a(z(2,d(3,[a(z(2,d(...,...),...),3,2,...),a(p5(...),1,...)]),d(3,[a(z(2,d(...,...),...),3,2,...),a(p5(...),1,...)]),2),3,2,144),a(p5([2,3]),1,1,87)]),2)
> ?
>        1    1  Exit: p5([2,3]) ?
> X = [2,3]
> (16 ms) yes
> {trace}
>
>
> _______________________________________________
> Users-prolog mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/users-prolog
>


-- 
Ce message a ete verifie par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a ete trouve.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.