Skip to content

setof/3 discrepancy between tpl and scryer-prolog #3245

@flexoron

Description

@flexoron
$ tpl
Trealla Prolog (c) Infradig 2020, v2.89.11-1-gb588
?- A=a, setof(A+B,(nonvar(A);var(B)),X), B=b.
   A = a, B = b, X = [a+_A,a+_B].
?- A=a, setof(A+B,B^(nonvar(A);var(B)),X), B=b.
   A = a, B = b, X = [a+_A,a+_B].
?-

$ rustc --version
rustc 1.93.0 (254b59607 2026-01-19)
$ scryer-prolog -v
v0.10.0-84-g453a88f0 % target/release

$ scryer-prolog -f
?- A=a, setof(A+B,(nonvar(A);var(B)),X), B=b.
   A = a, B = b, X = [a+_A,a+_B].
?- A=a, setof(A+B,B^(nonvar(A);var(B)),X), B=b.
   A = a, B = b, X = [a+b]. % correct but ...
?- 

It seems, B^ helps to figure out the set.
Logically correct, other systems do not yield this result.
Is Scryer ahead of others?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions