We're updating the issue view to help you get more done. 

one-shot constraints with multiple rands may run more than once

Description

Here are two examples using fixc:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (run* [q] (fresh [x y] (fixc [x y] (fn [[x y] a _] (!= x 1)) (fn [[x y] a] (= (walk a x) (walk a y))) '...) (== x y))) (run* [q] (fresh [x y c d] (fixc [x y] (fn [[x y] a _] (!= x y)) (fn [[x y] a] (or (not (lvar? (walk a x))) (not (lvar? (walk a y))))) '...) (== [x y] [[c] [d]])))

The constraint != is reified twice in each example, showing that the fixc constraint indeed ran twice.

Environment

None

Status

Assignee

David Nolen

Reporter

Nada Amin

Labels

None

Approval

None

Patch

None

Priority

Major