core.logic

disequality reification is broken

Details

  • Type: Defect Defect
  • Status: Closed Closed
  • Priority: Blocker Blocker
  • Resolution: Completed
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:

Description

(run* [q]
  (fresh [x y]
    (!= [1 x] [y 2])
    (== q [x y])))

Does not return the following expected reified value:

(([_0 _1] :- (!= [_0 2] [_1 1])))

Even more bizarre things happen with the following:

(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y])))

z leaks out in the reified value.

(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y z])))

We only see one var constraint in the reified value.

Activity

David Nolen made changes -
Field Original Value New Value
Summary disequality reification bug disequality reification is broken
David Nolen made changes -
Description {code}
(run* [q]
  (fresh [x y]
    (!= [1 x] [y 2])
    (== q [x y])))
{code}

Does not return the following expected reified value:

{code}
(([_0 _1] :- (!= _0 2) (!= _1 1)))
{code}
{code}
(run* [q]
  (fresh [x y]
    (!= [1 x] [y 2])
    (== q [x y])))
{code}

Does not return the following expected reified value:

{code}
(([_0 _1] :- (!= _0 2) (!= _1 1)))
{code}

Even more bizarre things happen with the following:

{code}
(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y])))
{code}

z leaks out in the reified value.

{code}
(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y z])))
{code}

We only see one var constraint in the reified value.
David Nolen made changes -
Description {code}
(run* [q]
  (fresh [x y]
    (!= [1 x] [y 2])
    (== q [x y])))
{code}

Does not return the following expected reified value:

{code}
(([_0 _1] :- (!= _0 2) (!= _1 1)))
{code}

Even more bizarre things happen with the following:

{code}
(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y])))
{code}

z leaks out in the reified value.

{code}
(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y z])))
{code}

We only see one var constraint in the reified value.
{code}
(run* [q]
  (fresh [x y]
    (!= [1 x] [y 2])
    (== q [x y])))
{code}

Does not return the following expected reified value:

{code}
(([_0 _1] :- (!= [_0 2] [_1 1])))
{code}

Even more bizarre things happen with the following:

{code}
(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y])))
{code}

z leaks out in the reified value.

{code}
(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y z])))
{code}

We only see one var constraint in the reified value.
David Nolen made changes -
Labels 0.8.0
David Nolen made changes -
Priority Major [ 3 ] Blocker [ 1 ]
David Nolen made changes -
Status Open [ 1 ] In Progress [ 3 ]
David Nolen made changes -
Resolution Completed [ 1 ]
Status In Progress [ 3 ] Resolved [ 5 ]
David Nolen made changes -
Status Resolved [ 5 ] Closed [ 6 ]

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: