UWN
UWN
And this is not about constraints at all. ``` ?- findall(G_0s, ( call_residue_vars(( dif([W|[V]],[V|[W]]), V=[[W|V]|X],W=[[V|W]|Y] ), Vs), copy_term(Vs,Vs,G_0s), \+ acyclic_term(G_0s) ), L). L = ..., loops. ``` So a term...
That example does not clarify the situation, after all, recall that ``` ?- dif(V,W), dif(W,V). dif:dif(V,W). ?- dif(W,V), dif(V,W). dif:dif(W,V). ?- dif(V,W), V\=W. dif:dif(V,W). ``` And this is all intended...
> swipl to compare results, That system is [incorrect](https://github.com/SWI-Prolog/issues/issues?q=is%3Aissue+dif%2F2) in a manner that Scryer is not. And SWI never was correct for `dif/2`. Also, rather consider to exploit algebraic properties....
> dif:dif(fu([[]]),fu([[]])) is expected Not that is not expected. the first example was incorrect.
Probably similar to #2333 , thus only writing is incorrect. All below are fine. ``` ?- V=[V], copy_term(f(V),W), W = f([[]]). false. ?- V=[V], copy_term(f(V),W), W == f(V). V =...
This is specific to `[user]`. `read/1` does not seem to have this problem. The shortest example is ``` ?- [user]. . ?- % unexpected
> It seems that in order to find examples of such wrong compilations, we must generate programs which we know describe solutions. But in order to generate such programs, #1476
> Adding a fact has no influence on universal termination. Has no influence on universal non-termination.
More examples of [failure slices](https://stackoverflow.com/questions/tagged/failure-slice)
This is seems to be a top level only issue: ``` f(F_0) :- findall(I_0, ( freeze(V,T), [T|a]=T, copy_term(V,_,[I_0]) ), [F_0]). g(F_0,T):-F_0 = freeze:freeze(_,T). ?- f(F_0), g(F_0,T). F_0 = freeze:freeze(_A,[T|a]), T...