<!--
RSS generated by JIRA (4.4#649-r158309) at Wed May 22 19:41:29 CDT 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+LOGIC+AND+status+%3D+Resolved+ORDER+BY+priority+DESC&tempMax=1000&field=key&field=summary
-->
<!-- If you wish to do custom client-side styling of RSS, uncomment this:
<?xml-stylesheet href="http://dev.clojure.org/jira/styles/jiraxml2html.xsl" type="text/xsl"?>
-->
<rss version="0.92">
    <channel>
        <title>Clojure JIRA</title>
        <link>http://dev.clojure.org/jira/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+LOGIC+AND+status+%3D+Resolved+ORDER+BY+priority+DESC</link>
        <description>An XML representation of a search request</description>
                <language>en-us</language>
                        <issue start="0" end="109" total="109"/>
                <build-info>
            <version>4.4</version>
            <build-number>649</build-number>
            <build-date>25-07-2011</build-date>
        </build-info>
<item>
            <title>[LOGIC-90] These three FD constraints seem to diverge with certain domains</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-90</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This code:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(run 1 [a b c d]
     (infd a b c d (interval 0 3))
     (&amp;lt;fd a b)
     (&amp;lt;fd c d)
     (&amp;lt;fd d a))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;returns &lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;([2 3 0 1])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; as expected. However, if we change the interval to &lt;tt&gt;(interval 0 4)&lt;/tt&gt; it seems to diverge. The behavior is the same between &lt;tt&gt;(domain 0 1 2 3)&lt;/tt&gt; and &lt;tt&gt;(domain 0 1 2 3 4)&lt;/tt&gt;.&lt;/p&gt;</description>
                <environment>clojure 1.5.0-beta1, core.logic 0.8.0-beta4</environment>
            <key id="15935">LOGIC-90</key>
            <summary>These three FD constraints seem to diverge with certain domains</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="gfredericks">Gary Fredericks</reporter>
                        <labels>
                    </labels>
                <created>Tue, 1 Jan 2013 13:03:30 -0600</created>
                <updated>Tue, 1 Jan 2013 13:45:35 -0600</updated>
                    <resolved>Tue, 1 Jan 2013 13:45:35 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30345" author="dnolen" created="Tue, 1 Jan 2013 13:45:35 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/7ea49dffb057df6775a5b98d869bfef44ae83ec9&quot;&gt;http://github.com/clojure/core.logic/commit/7ea49dffb057df6775a5b98d869bfef44ae83ec9&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-91] nom/tie and spurious reification of predc constraint</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-91</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
           (nom/fresh [a]
             (fresh [x]
               (predc x number? `number?)
               (== x 1)
               (== (nom/tie a [a x]) q))))
        [(nom/tie &apos;a_0 &apos;(a_0 1))]))
  (is (= (run* [q]
           (nom/fresh [a]
             (fresh [x]
               (== x 1)
               (predc x number? `number?)
               (== (nom/tie a [a x]) q))))
        [(nom/tie &apos;a_0 &apos;(a_0 1))])) ;; &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt; b/c of extra :- number? constraint&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15936">LOGIC-91</key>
            <summary>nom/tie and spurious reification of predc constraint</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Wed, 2 Jan 2013 04:57:52 -0600</created>
                <updated>Wed, 2 Jan 2013 08:46:44 -0600</updated>
                    <resolved>Wed, 2 Jan 2013 08:46:44 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30348" author="namin" created="Wed, 2 Jan 2013 05:07:48 -0600"  >&lt;p&gt;Implementing -force-ans in Tie&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;clojure.core.logic.IForceAnswerTerm
  (-force-ans [v x]
    (force-ans (:body v)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;resolves the test above, but not this one:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
           (nom/fresh [a b c]
             (fresh [x y]
               (== x 1)
               (predc x number? `number?)
               (== (nom/tie b (nom/tie a [a x])) (nom/tie c q)))))
        [(nom/tie &apos;a_0 &apos;(a_0 1))])) ;; still &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt; b/c of extra :- number? constraint&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30352" author="dnolen" created="Wed, 2 Jan 2013 08:15:48 -0600"  >&lt;p&gt;This issue actually impacts any &quot;single shot&quot; constraint that implements `-relevant?` as simply returning `true`. The problem is that the `cgoal` constraint wrapper checks `runnable?`, runs the constraint, and then checks `relevant?` and if that&apos;s true adds the constraint even though it may  very well may be entailed!&lt;/p&gt;

&lt;p&gt;There are 6 constraints (1 of them the `defc` macro) which implement `-relevant?` as returning `true`. I think we should have more support (a protocol) for constraints which are essentially &quot;single shot&quot; and don&apos;t need to bother with implementing the `IRelevant` protocol.&lt;/p&gt;

&lt;p&gt;For some background - the CLP(FD) constraints benefit most from the `IRelevant` protocol, where the constraints involve up to 3 terms and a considerable amount of propagation work may be avoided by doing some checking up front.&lt;/p&gt;</comment>
                    <comment id="30353" author="namin" created="Wed, 2 Jan 2013 08:19:35 -0600"  >&lt;p&gt;Hi David,&lt;/p&gt;

&lt;p&gt;I have a fix proposed in pull request &lt;a href=&quot;https://github.com/clojure/core.logic/pull/15&quot;&gt;https://github.com/clojure/core.logic/pull/15&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea there is that to honor single-shot constraints, we only need to honor the (remcg this) that they contain. This is only possible if they have proper ids. That&apos;s what I fix.&lt;/p&gt;

&lt;p&gt;Let me know what you think.&lt;/p&gt;</comment>
                    <comment id="30354" author="dnolen" created="Wed, 2 Jan 2013 08:46:44 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/020f730429d71315f752ea51abad20dca896c8b0&quot;&gt;http://github.com/clojure/core.logic/commit/020f730429d71315f752ea51abad20dca896c8b0&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-88] disequality reification is broken</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-88</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x y]
    (!= [1 x] [y 2])
    (== q [x y])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Does not return the following expected reified value:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(([_0 _1] :- (!= [_0 2] [_1 1])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Even more bizarre things happen with the following:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;z leaks out in the reified value.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x y z]
    (!= [1 x z] [y 2 3])
    (== q [x y z])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We only see one var constraint in the reified value.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15930">LOGIC-88</key>
            <summary>disequality reification is broken</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                        <label>0.8.0</label>
                    </labels>
                <created>Sat, 29 Dec 2012 10:33:18 -0600</created>
                <updated>Wed, 2 Jan 2013 18:43:40 -0600</updated>
                    <resolved>Wed, 2 Jan 2013 18:43:40 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30358" author="dnolen" created="Wed, 2 Jan 2013 18:43:40 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/5a0eb2754dc744e60ea1c4ea3460b5429685ef59&quot;&gt;http://github.com/clojure/core.logic/commit/5a0eb2754dc744e60ea1c4ea3460b5429685ef59&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-53] core.logic converts defrecords to maps in it&apos;s query results</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-53</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defrecord Test [a b])

(run* [q]
  (== q (-&amp;gt;Test 1 2 )))

;; ({:a 1, :b 2})
;; Where&apos;s my record?&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>0.7.5 or 0.8-alpha</environment>
            <key id="15705">LOGIC-53</key>
            <summary>core.logic converts defrecords to maps in it&apos;s query results</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="martintrojer">Martin Trojer</reporter>
                        <labels>
                        <label>0.8.0</label>
                    </labels>
                <created>Tue, 18 Sep 2012 09:26:48 -0500</created>
                <updated>Wed, 2 Jan 2013 19:18:19 -0600</updated>
                    <resolved>Wed, 2 Jan 2013 19:18:19 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29498" author="dnolen" created="Wed, 19 Sep 2012 12:02:58 -0500"  >&lt;p&gt;Records are IPersistentMaps. core.logic doesn&apos;t know anything about your custom type so it returns the type it knows how to unify. &lt;/p&gt;

&lt;p&gt;If you want core.logic to work with your record you need to implement the unification protocols for you record. But of course that&apos;s a little tedious if you have many different records.&lt;/p&gt;

&lt;p&gt;Open to better ideas. The relevant code where this unexpected behavior occurs is the implementation of IWalkTerm for the core Clojure data types.&lt;/p&gt;</comment>
                    <comment id="30359" author="dnolen" created="Wed, 2 Jan 2013 19:18:19 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/bd3f13a1cd3214e5e15e52383b49f0a54ec8a502&quot;&gt;http://github.com/clojure/core.logic/commit/bd3f13a1cd3214e5e15e52383b49f0a54ec8a502&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-95] disequality</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-95</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This snippet wrongly succeeds with the result: &lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(([foo _0] :- (!= (foo _0))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
      (nom/fresh [a b]
        (fresh [x y]
          (!= x y)
          (== (nom/tie a (nom/tie b [b y])) (nom/tie b (nom/tie a [a x])))
          (== x &apos;foo)
          (== [x y] q))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Moving the disequality anywhere further down makes the snippet rightly fail.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15941">LOGIC-95</key>
            <summary>disequality</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="1" iconUrl="http://dev.clojure.org/jira/images/icons/priority_blocker.gif">Blocker</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Fri, 4 Jan 2013 05:16:39 -0600</created>
                <updated>Fri, 4 Jan 2013 11:23:47 -0600</updated>
                    <resolved>Fri, 4 Jan 2013 11:23:47 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30362" author="namin" created="Fri, 4 Jan 2013 05:47:40 -0600"  >&lt;p&gt;An insight: if I remove the -relevant-var? protocol from !=c in core.logic, then this works and all other tests pass. Of course, this probably has performance applications, so thinking of alternatives.&lt;/p&gt;</comment>
                    <comment id="30363" author="namin" created="Fri, 4 Jan 2013 08:00:19 -0600"  >&lt;p&gt;The problem is not specific to nominal disequality. Here is the same bug with only core.logic:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
    (fresh [x y w z]
      (!= x y)
      (!= w z)
      (== z y)
      (== x &apos;foo)
      (== y &apos;foo)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This should fail, because x == y == &apos;foo, but instead we get: &lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(_0 :- (!= (_1 foo)) (!= (foo foo))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;.&lt;/p&gt;

&lt;p&gt;The problem is that var-rands takes the substitution map into account, while -relevant-var doesn&apos;t.&lt;/p&gt;</comment>
                    <comment id="30364" author="namin" created="Fri, 4 Jan 2013 08:31:51 -0600"  >&lt;p&gt;Another way disequality is broken:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x y w z]
    (!= x [y])
    (== x [&apos;foo])
    (== y &apos;foo)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This snippet should fail, but instead returns &apos;(_0). This is because y is not returned by recover-vars.&lt;/p&gt;</comment>
                    <comment id="30365" author="namin" created="Fri, 4 Jan 2013 11:18:42 -0600"  >&lt;p&gt;diseq.diff contains detailed commit message explaining the issues, fixes, and tests.&lt;/p&gt;</comment>
                    <comment id="30366" author="dnolen" created="Fri, 4 Jan 2013 11:23:47 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/fb489298417c643fdd03efbf6951e998e6821910&quot;&gt;http://github.com/clojure/core.logic/commit/fb489298417c643fdd03efbf6951e998e6821910&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11789" name="diseq.diff" size="4476" author="namin" created="Fri, 4 Jan 2013 11:18:42 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-18] clojure.core.logic namespace instead of clojure.core.logic.minikanren + prelude</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-18</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="14678">LOGIC-18</key>
            <summary>clojure.core.logic namespace instead of clojure.core.logic.minikanren + prelude</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 9 Oct 2011 15:11:42 -0500</created>
                <updated>Sun, 20 Nov 2011 15:14:56 -0600</updated>
                    <resolved>Sun, 20 Nov 2011 15:14:56 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27320" author="dnolen" created="Sun, 20 Nov 2011 15:14:56 -0600"  >&lt;p&gt;done&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-3] nonrel/lvar -&gt; nonrel/lvaro, nonrel/nonlvar -&gt; nonrel/nonlvaro</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-3</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;They are relations and should probably follow the naming convention for goals. This also avoids confusing newcomers when trying to to use the nonrel namespace.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14439">LOGIC-3</key>
            <summary>nonrel/lvar -&gt; nonrel/lvaro, nonrel/nonlvar -&gt; nonrel/nonlvaro</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 19 May 2011 10:45:29 -0500</created>
                <updated>Sat, 21 May 2011 13:02:27 -0500</updated>
                    <resolved>Sat, 21 May 2011 13:02:27 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26450" author="dnolen" created="Sat, 21 May 2011 13:02:27 -0500"  >&lt;p&gt;Fixed by &lt;a href=&quot;https://github.com/clojure/core.logic/commit/d1886dcb4015143ddcb054ddc601482e914fb584&quot;&gt;https://github.com/clojure/core.logic/commit/d1886dcb4015143ddcb054ddc601482e914fb584&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-1] Tabling bug</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-1</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Pepjin pointed out that trying to determine the path on this graph, &lt;a href=&quot;http://paste.pocoo.org/show/391274/&quot;&gt;http://paste.pocoo.org/show/391274/&lt;/a&gt;, does not terminate even with tabling.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14437">LOGIC-1</key>
            <summary>Tabling bug</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 18 May 2011 12:34:48 -0500</created>
                <updated>Sat, 21 May 2011 13:00:21 -0500</updated>
                    <resolved>Sat, 21 May 2011 13:00:21 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26447" author="pepijndevos" created="Thu, 19 May 2011 06:39:02 -0500"  >&lt;p&gt;Probably related. The second run also produces 10 items, while it can produce many more, as showed in run 3 by reversing the arguments.&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (run 10 &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (desto &quot;munchen&quot; q))&lt;br/&gt;
(&quot;wien&quot; &quot;frankfurt&quot; &quot;venezia&quot; &quot;zurich&quot; &quot;warszawa&quot; &quot;zacrab&quot; &quot;berlin&quot; &quot;munchen&quot; &quot;amsterdam&quot; &quot;budapest&quot;)&lt;br/&gt;
user=&amp;gt; (run 20 &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (desto &quot;munchen&quot; q))&lt;br/&gt;
(&quot;wien&quot; &quot;frankfurt&quot; &quot;venezia&quot; &quot;zurich&quot; &quot;warszawa&quot; &quot;zacrab&quot; &quot;berlin&quot; &quot;munchen&quot; &quot;amsterdam&quot; &quot;budapest&quot;)&lt;br/&gt;
user=&amp;gt; (run 20 &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (desto q &quot;munchen&quot;))&lt;br/&gt;
(&quot;frankfurt&quot; &quot;wien&quot; &quot;zurich&quot; &quot;venezia&quot; &quot;marseille&quot; &quot;paris&quot; &quot;barcelona&quot; &quot;berlin&quot; &quot;moskva&quot; &quot;athina&quot; &quot;kharkov&quot; &quot;wilno&quot; &quot;smyrna&quot; &quot;kyiv&quot; &quot;pamplona&quot; &quot;madrid&quot; &quot;lisboa&quot; &quot;warszawa&quot; &quot;rostov&quot; &quot;brindisi&quot;)&lt;/p&gt;</comment>
                    <comment id="26449" author="dnolen" created="Sat, 21 May 2011 13:00:21 -0500"  >&lt;p&gt;Fixed by &lt;a href=&quot;https://github.com/clojure/core.logic/commit/5a15ba9555cd349f9e3f6df786ecfc3cd231abde&quot;&gt;https://github.com/clojure/core.logic/commit/5a15ba9555cd349f9e3f6df786ecfc3cd231abde&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10000">None</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-6] no way to unify the first of a seq to one lvar and the rest to another</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-6</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;would be nice to be able to do stuff like &lt;/p&gt;

&lt;p&gt;(cond-m foo&lt;br/&gt;
  (cons ?a nil) (println a))&lt;/p&gt;

&lt;p&gt;where foo is some value, and (cons ?a nil) is pattern to match and (println a) is code to execute if it matches. (cons ?a nil) would match a sequence with one element, with ?a matching that one element.&lt;/p&gt;

&lt;p&gt;you can sort of do this by modifying replace-lvar to turn (cons a b) into (lcons a b) this works for some cases but fails for the one given above, not sure why&lt;/p&gt;</description>
                <environment></environment>
            <key id="14450">LOGIC-6</key>
            <summary>no way to unify the first of a seq to one lvar and the rest to another</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Wed, 1 Jun 2011 16:37:38 -0500</created>
                <updated>Thu, 2 Jun 2011 16:52:55 -0500</updated>
                    <resolved>Thu, 2 Jun 2011 16:52:55 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26482" author="hiredman" created="Wed, 1 Jun 2011 16:53:03 -0500"  >&lt;p&gt;(cond-m &apos;&lt;span class=&quot;error&quot;&gt;&amp;#91;(1)&amp;#93;&lt;/span&gt;&lt;br/&gt;
        &lt;span class=&quot;error&quot;&gt;&amp;#91;(cons ?a nil)&amp;#93;&lt;/span&gt; a)&lt;/p&gt;

&lt;p&gt;does actually return 1 if you making the change to replace-lvar my mistake&lt;/p&gt;</comment>
                    <comment id="26490" author="hiredman" created="Thu, 2 Jun 2011 16:52:55 -0500"  >&lt;p&gt;bd9a3440977ed17648d1e57fec2ba52c95657733 adds support for unifying first and rest using (?first ?second . ?rest)&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-5] cannot unify an lcons currently</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-5</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;if you have an lcons in your pattern somehow (modify replace-lvar to emit lcons for unifying lvars to the head and tail of a seq) currently you will get an exception because unify.clj uses metadata to pass the list of lvars around and lcons don&apos;t support metadata, so lcons at the toplevel get an exception when trying to attach metadata.&lt;/p&gt;

&lt;p&gt;either lcons needs to support metadata or the list of lvars should be passed around some other way.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14449">LOGIC-5</key>
            <summary>cannot unify an lcons currently</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Wed, 1 Jun 2011 16:29:15 -0500</created>
                <updated>Thu, 2 Jun 2011 16:50:53 -0500</updated>
                    <resolved>Thu, 2 Jun 2011 16:50:52 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26489" author="hiredman" created="Thu, 2 Jun 2011 16:50:52 -0500"  >&lt;p&gt;dcf03a7f474da22b3a5889a37ac29c125026fceb adds metadata support to lvar&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-7] cannot emit lvars from macros</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-7</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;if we have a pattern matching macro like, for example, a cond-m that does something like&lt;br/&gt;
(cond-m some-value&lt;br/&gt;
    some-pattern some-code-to-execute-on-match&lt;br/&gt;
    some-other-pattern ...&lt;br/&gt;
    another-pattern ...)&lt;br/&gt;
it would be nice if the work of preping the patterns could be done at compile time and just emit clojure literals representing the prepared patterns, lvars are currently not emittable in code, so the cost of prepping patterns would be incurred at runtime.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14451">LOGIC-7</key>
            <summary>cannot emit lvars from macros</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Wed, 1 Jun 2011 16:58:41 -0500</created>
                <updated>Sun, 24 Jul 2011 13:20:30 -0500</updated>
                    <resolved>Sun, 24 Jul 2011 13:20:30 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26483" author="hiredman" created="Wed, 1 Jun 2011 17:13:36 -0500"  >&lt;p&gt;this seems to turn an expression containing lvars into something you can return from a macro&lt;/p&gt;

&lt;p&gt;(defn emittable &lt;span class=&quot;error&quot;&gt;&amp;#91;expr&amp;#93;&lt;/span&gt;&lt;br/&gt;
  (postwalk&lt;br/&gt;
   (fn &lt;span class=&quot;error&quot;&gt;&amp;#91;expr&amp;#93;&lt;/span&gt;&lt;br/&gt;
     (cond&lt;br/&gt;
      (mk/lvar? expr)&lt;br/&gt;
      `(clojure.core.logic.minikanren.LVar.&lt;br/&gt;
        ~(.name expr)&lt;br/&gt;
        ~(.hash expr)&lt;br/&gt;
        ~(.cs expr))&lt;br/&gt;
      (symbol? expr)&lt;br/&gt;
      `(quote ~expr)&lt;br/&gt;
      (seq? expr)&lt;br/&gt;
      `(list ~@expr)&lt;br/&gt;
      :else expr))&lt;br/&gt;
   expr))&lt;/p&gt;</comment>
                    <comment id="26485" author="hiredman" created="Wed, 1 Jun 2011 18:04:05 -0500"  >&lt;p&gt;the problem shows up with lcons as well, a possibly solution would be to have lcons and lvar and whatever else have a protocol IEmittable extended to them, where (emit some-lvar) would for example return `(LVar. ~(.name some-lvar) ~(.hash some-lvar) ~(.cs some-lvar))&lt;/p&gt;</comment>
                    <comment id="26643" author="dnolen" created="Sun, 24 Jul 2011 13:20:30 -0500"  >&lt;p&gt;This is currently outside scope.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-8] tabled goals perisist across runs</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-8</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Tabled goals store state in the same way memoize does.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;(run 5 &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (tabled-goal)) and then (run 10 &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (tabled-goal)) will both return 5 results.&lt;/li&gt;
	&lt;li&gt;multiple runs wil accumulate memory.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="14456">LOGIC-8</key>
            <summary>tabled goals perisist across runs</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="pepijndevos">Pepijn de Vos</reporter>
                        <labels>
                    </labels>
                <created>Wed, 8 Jun 2011 12:53:17 -0500</created>
                <updated>Wed, 8 Jun 2011 22:41:57 -0500</updated>
                    <resolved>Wed, 8 Jun 2011 22:41:56 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26497" author="dnolen" created="Wed, 8 Jun 2011 22:41:57 -0500"  >&lt;p&gt;Fixed by dd1a398922244b86ca8f29f9da511e21157d5b54&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-9] make run non-lazy, add lazy-run variant</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-9</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The laziness of the run interface is not essential to core.logic&apos;s operation. lazy-sequences are used in core.logic simply as a way to get TCO like behavior / prevent stack overflow. run being non-lazy makes tabling goals only for the duration of a run much simpler to implement.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14457">LOGIC-9</key>
            <summary>make run non-lazy, add lazy-run variant</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 8 Jun 2011 13:01:07 -0500</created>
                <updated>Wed, 8 Jun 2011 22:42:55 -0500</updated>
                    <resolved>Wed, 8 Jun 2011 22:42:55 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26498" author="dnolen" created="Wed, 8 Jun 2011 22:42:55 -0500"  >&lt;p&gt;Fixed by 1c9610ba6d51837b14854e015f5e7a1ce37e65a2&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-11] Disequality Constraints - lvar remains fresh if we have disequality constraint that involves lcons</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-11</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;(run* &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt;&lt;br/&gt;
  (exist &lt;span class=&quot;error&quot;&gt;&amp;#91;x a b&amp;#93;&lt;/span&gt;&lt;br/&gt;
     (!= x (lcons a b))&lt;br/&gt;
     (== x 1)))&lt;/p&gt;

&lt;p&gt;;; (_.0)&lt;/p&gt;</description>
                <environment></environment>
            <key id="14491">LOGIC-11</key>
            <summary>Disequality Constraints - lvar remains fresh if we have disequality constraint that involves lcons</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 14 Jul 2011 21:46:28 -0500</created>
                <updated>Sun, 24 Jul 2011 13:09:49 -0500</updated>
                    <resolved>Sun, 24 Jul 2011 13:09:48 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26641" author="dnolen" created="Sun, 24 Jul 2011 13:09:49 -0500"  >&lt;p&gt;the behavior is correct.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-29] Indexed relations return incorrect results for partially ground values</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-29</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Consider the following code:&lt;br/&gt;
(defrel rel1 ^:index a)&lt;br/&gt;
(fact rel1 &lt;span class=&quot;error&quot;&gt;&amp;#91;1 2&amp;#93;&lt;/span&gt;)&lt;br/&gt;
(run* &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (fresh &lt;span class=&quot;error&quot;&gt;&amp;#91;a&amp;#93;&lt;/span&gt; (rel1 &lt;span class=&quot;error&quot;&gt;&amp;#91;q a&amp;#93;&lt;/span&gt;) (== a 2)))&lt;/p&gt;

&lt;p&gt;The result of the above query is () although it should be (1). If the index is dropped, the correct result is returned.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15260">LOGIC-29</key>
            <summary>Indexed relations return incorrect results for partially ground values</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="qbg">Brian Goslinga</reporter>
                        <labels>
                    </labels>
                <created>Sun, 4 Mar 2012 15:02:42 -0600</created>
                <updated>Sun, 4 Mar 2012 15:46:33 -0600</updated>
                    <resolved>Sun, 4 Mar 2012 15:46:33 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27902" author="dnolen" created="Sun, 4 Mar 2012 15:46:33 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/773f13c3e92bb0eb658781b73fa6b02d1ec5008f&quot;&gt;https://github.com/clojure/core.logic/commit/773f13c3e92bb0eb658781b73fa6b02d1ec5008f&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-41] Unexpected behavior when using functions</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-41</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Not sure if this is a bug, but it seems a bit strange&lt;/p&gt;

&lt;p&gt;=&amp;gt;(defn cp &lt;span class=&quot;error&quot;&gt;&amp;#91;a b c d&amp;#93;&lt;/span&gt; (== a b) (== c d))&lt;br/&gt;
=&amp;gt;(run* &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (fresh &lt;span class=&quot;error&quot;&gt;&amp;#91;x y&amp;#93;&lt;/span&gt; (cp 1 x 2 y) (== q &lt;span class=&quot;error&quot;&gt;&amp;#91;x y&amp;#93;&lt;/span&gt;)))&lt;br/&gt;
(&lt;span class=&quot;error&quot;&gt;&amp;#91;_.0 2&amp;#93;&lt;/span&gt;)&lt;/p&gt;

&lt;p&gt;My expectation was that I get (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 2)&amp;#93;&lt;/span&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="15494">LOGIC-41</key>
            <summary>Unexpected behavior when using functions</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="bendisposto">Jens Bendisposto</reporter>
                        <labels>
                    </labels>
                <created>Thu, 31 May 2012 14:47:20 -0500</created>
                <updated>Thu, 31 May 2012 14:50:48 -0500</updated>
                    <resolved>Thu, 31 May 2012 14:50:48 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="28667" author="dnolen" created="Thu, 31 May 2012 14:50:48 -0500"  >&lt;p&gt;This is not a bug. You can&apos;t just combine two unifications like that. They must be combined under fresh or all.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-22] Unqualified Symbols at Macroexpansion via defrel</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-22</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;&lt;a href=&quot;https://gist.github.com/1392568&quot;&gt;https://gist.github.com/1392568&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The particular problem here is because the call to &quot;to-stream&quot;  in &quot;clojure.core.logic/extend-rel&quot; isn&apos;t namespace qualified.&lt;/p&gt;

&lt;p&gt;Looking through the implementation of the facts, there are some strange things going on with the macros.&lt;/p&gt;

&lt;p&gt;Seems to be some more unqualified symbols representing vars in &quot;extend-rel&quot;.&lt;/p&gt;

&lt;p&gt;Also, why is clojure.core.logic/f-sym and clojure.core.logic/a-sym being used instead of gensym?&lt;/p&gt;</description>
                <environment></environment>
            <key id="15028">LOGIC-22</key>
            <summary>Unqualified Symbols at Macroexpansion via defrel</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Thu, 24 Nov 2011 18:59:57 -0600</created>
                <updated>Fri, 25 Nov 2011 15:35:17 -0600</updated>
                    <resolved>Fri, 25 Nov 2011 15:35:17 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27346" author="dnolen" created="Fri, 25 Nov 2011 15:35:17 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/10d9d9d78a960256c787e37c26ee24ee57d05751&quot;&gt;https://github.com/clojure/core.logic/commit/10d9d9d78a960256c787e37c26ee24ee57d05751&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-21] Remove ?x variable pattern</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-21</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;?x is a bit noisy. We should just allow defining logic vars via match with any symbol. We can use &amp;amp;env to figure out if the user is referring to existing locals or not.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15014">LOGIC-21</key>
            <summary>Remove ?x variable pattern</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 17 Nov 2011 12:35:59 -0600</created>
                <updated>Sun, 27 Nov 2011 22:55:26 -0600</updated>
                    <resolved>Sun, 27 Nov 2011 22:55:26 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27340" author="ambrosebs" created="Thu, 24 Nov 2011 07:50:40 -0600"  >&lt;p&gt;This is just referring to variables introduced with matche right?&lt;/p&gt;</comment>
                    <comment id="27342" author="dnolen" created="Thu, 24 Nov 2011 09:54:44 -0600"  >&lt;p&gt;Yeah. At the time when I wrote those macros I hadn&apos;t used &amp;amp;env much.&lt;/p&gt;</comment>
                    <comment id="27352" author="dnolen" created="Sun, 27 Nov 2011 22:55:26 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/b1ab2dbde8fa9a6332268c1810f586516baedf15&quot;&gt;https://github.com/clojure/core.logic/commit/b1ab2dbde8fa9a6332268c1810f586516baedf15&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-20] Switch conde style to use vectors instead of list</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-20</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Suggested by Christophe Grand.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn foo [...]
  (conde
    [(g0 ...) ...]
    [(g1 ...) ...]))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We should update all the source to use this default style.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15013">LOGIC-20</key>
            <summary>Switch conde style to use vectors instead of list</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 17 Nov 2011 12:34:12 -0600</created>
                <updated>Sun, 27 Nov 2011 20:18:16 -0600</updated>
                    <resolved>Sun, 27 Nov 2011 20:18:16 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="27341" author="ambrosebs" created="Thu, 24 Nov 2011 07:51:29 -0600"  >&lt;p&gt;Anyone got a macro? &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                    <comment id="27350" author="dnolen" created="Sun, 27 Nov 2011 20:18:16 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/de34c3ed961b76e5cbc76169975bdc48c033beae&quot;&gt;https://github.com/clojure/core.logic/commit/de34c3ed961b76e5cbc76169975bdc48c033beae&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-32] Unification bug</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-32</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q] (== q #{1}))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Results in the following exception:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;IllegalArgumentException 
Don&apos;t know how to create ISeq from: 
java.lang.&lt;span class=&quot;code-object&quot;&gt;Long&lt;/span&gt;  clojure.lang.RT.seqFrom (RT.java:487)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15278">LOGIC-32</key>
            <summary>Unification bug</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 15 Mar 2012 09:33:40 -0500</created>
                <updated>Thu, 15 Mar 2012 18:17:56 -0500</updated>
                    <resolved>Thu, 15 Mar 2012 18:17:56 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="27956" author="dnolen" created="Thu, 15 Mar 2012 18:17:56 -0500"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/a473226d0a9aeadace0a322d506c69f13c81970a&quot;&gt;https://github.com/clojure/core.logic/commit/a473226d0a9aeadace0a322d506c69f13c81970a&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-31] unifier is not commutative</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-31</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I am not sure if this is actually a bug&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (require &apos;&lt;span class=&quot;error&quot;&gt;&amp;#91;clojure.core.logic :as logic&amp;#93;&lt;/span&gt;)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (logic/unifier (logic/unifier &apos;{:a ?x} &apos;{:a ?y}) &apos;{:a 5})&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (logic/unifier (logic/unifier &apos;{:a ?x} &apos;{:a 5}) &apos;{:a ?y})&lt;br/&gt;
{:a 5}&lt;/p&gt;


&lt;p&gt;For comparison: here is the result of core.unify (and what I expected)&lt;/p&gt;

&lt;p&gt;user=&amp;gt; (require &apos;&lt;span class=&quot;error&quot;&gt;&amp;#91;clojure.core.unify :as unify&amp;#93;&lt;/span&gt;)&lt;br/&gt;
nil&lt;br/&gt;
user=&amp;gt; (unify/unifier (unify/unifier &apos;{:a ?x} &apos;{:a ?y}) &apos;{:a 5})&lt;br/&gt;
{:a 5}&lt;br/&gt;
user=&amp;gt; (unify/unifier (unify/unifier &apos;{:a ?x} &apos;{:a 5}) &apos;{:a ?y})&lt;br/&gt;
{:a 5}&lt;/p&gt;

</description>
                <environment>clojure 1.3.0, core.logic 0.6.7</environment>
            <key id="15275">LOGIC-31</key>
            <summary>unifier is not commutative</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="bendisposto">Jens Bendisposto</reporter>
                        <labels>
                    </labels>
                <created>Wed, 14 Mar 2012 02:38:36 -0500</created>
                <updated>Sat, 17 Mar 2012 14:15:11 -0500</updated>
                    <resolved>Sat, 17 Mar 2012 14:15:11 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27941" author="bendisposto" created="Wed, 14 Mar 2012 02:58:02 -0500"  >&lt;p&gt;Obviously i meant associative, not commutative. &lt;/p&gt;</comment>
                    <comment id="27948" author="dnolen" created="Wed, 14 Mar 2012 12:30:05 -0500"  >&lt;p&gt;Thanks for pointing this out. Yes the unifier isn&apos;t doing the right thing here. Will look into a fix. &lt;/p&gt;</comment>
                    <comment id="27961" author="qbg" created="Sat, 17 Mar 2012 12:50:08 -0500"  >&lt;p&gt;The issue occurs because (unifier &apos;{:a ?x} &apos;{:a ?y}) is {:a _.0}, and since _.0 is a symbol, it does not unify with 5.&lt;/p&gt;

&lt;p&gt;Changing the definition of solve to use walk* instead of -reify fixes the issue, but is a breaking change (and breaks tests that depend on the reification lvars).&lt;/p&gt;

&lt;p&gt;unifier could use an alternative implementation of solve, but that probably isn&apos;t ideal and would still be a breaking change (although less of one perhaps).&lt;/p&gt;</comment>
                    <comment id="27962" author="dnolen" created="Sat, 17 Mar 2012 14:15:02 -0500"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/468df05f4d6241cb7f30c16306631c49f391e98c&quot;&gt;https://github.com/clojure/core.logic/commit/468df05f4d6241cb7f30c16306631c49f391e98c&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-17] ClojureScript compatibility</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-17</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="14676">LOGIC-17</key>
            <summary>ClojureScript compatibility</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Sun, 9 Oct 2011 15:10:17 -0500</created>
                <updated>Sat, 24 Mar 2012 21:11:15 -0500</updated>
                    <resolved>Sat, 24 Mar 2012 21:11:15 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="28007" author="dnolen" created="Sat, 24 Mar 2012 21:11:15 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/a516fd632499c9797a745b9ff2696633904cc782&quot;&gt;https://github.com/clojure/core.logic/commit/a516fd632499c9797a745b9ff2696633904cc782&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-23] Locals not available in matche</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-23</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Ran into an issue with the fix for &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-21&quot; title=&quot;Remove ?x variable pattern&quot;&gt;&lt;del&gt;LOGIC-21&lt;/del&gt;&lt;/a&gt;.  Locals used inside of a matche clause were not recognized as existing and new fresh values were assigned instead.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-none&quot;&gt;(defn locals-membero [x l]
  (matche [l]
          ([[x . tail]])
          ([[head . tail]]
             (membero x tail))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In the above example, x was not found in &lt;b&gt;locals&lt;/b&gt; and a new fresh value was assigned, giving incorrect results.  A fix for the issue is attached.&lt;/p&gt;</description>
                <environment>clojure 1.2.1, core.logic 0.6.6</environment>
            <key id="15057">LOGIC-23</key>
            <summary>Locals not available in matche</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ryansenior">Ryan Senior</reporter>
                        <labels>
                    </labels>
                <created>Thu, 8 Dec 2011 16:33:46 -0600</created>
                <updated>Fri, 9 Dec 2011 12:23:49 -0600</updated>
                    <resolved>Fri, 9 Dec 2011 12:23:49 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27428" author="ryansenior" created="Thu, 8 Dec 2011 18:16:15 -0600"  >&lt;p&gt;Fixed typo on the locals-membero test function&lt;/p&gt;</comment>
                    <comment id="27442" author="dnolen" created="Fri, 9 Dec 2011 12:23:49 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/858583237c77c142a2a4e49ba7b6c11f072ef503&quot;&gt;https://github.com/clojure/core.logic/commit/858583237c77c142a2a4e49ba7b6c11f072ef503&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10735" name="46b1fa5af0678ae69d304a1e6b12393b3f87ac9c.patch" size="3169" author="ryansenior" created="Thu, 8 Dec 2011 16:33:46 -0600" />
                    <attachment id="10736" name="921538ed513b0f5045d63004948088b4ae6c28e2.patch" size="806" author="ryansenior" created="Thu, 8 Dec 2011 18:16:15 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-24] Suspected Regression from 0.6.5-0.6.6</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-24</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Outlined here: &lt;a href=&quot;http://stackoverflow.com/questions/8568894/why-run-does-not-work-with-natural-number-in-core-logic&quot;&gt;http://stackoverflow.com/questions/8568894/why-run-does-not-work-with-natural-number-in-core-logic&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="15085">LOGIC-24</key>
            <summary>Suspected Regression from 0.6.5-0.6.6</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="ambrosebs">Ambrose Bonnaire-Sergeant</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Dec 2011 09:30:47 -0600</created>
                <updated>Tue, 10 Jan 2012 21:35:55 -0600</updated>
                    <resolved>Tue, 10 Jan 2012 21:35:55 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27525" author="dnolen" created="Tue, 10 Jan 2012 21:35:55 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/2e4bd26201b197e93dc1818d1ee087645e44bb69&quot;&gt;https://github.com/clojure/core.logic/commit/2e4bd26201b197e93dc1818d1ee087645e44bb69&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-27] runtime error when using ^:index</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-27</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="15223">LOGIC-27</key>
            <summary>runtime error when using ^:index</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jasonjckn">Jason Jackson</reporter>
                        <labels>
                    </labels>
                <created>Wed, 15 Feb 2012 15:19:35 -0600</created>
                <updated>Sun, 13 May 2012 11:36:54 -0500</updated>
                    <resolved>Sun, 13 May 2012 11:36:54 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27780" author="dnolen" created="Mon, 20 Feb 2012 14:15:53 -0600"  >&lt;p&gt;Again, please create the patch with git with the proper attribution information, thanks!&lt;/p&gt;</comment>
                    <comment id="28491" author="jasonjckn" created="Sun, 13 May 2012 10:09:15 -0500"  >&lt;p&gt;Someone has fixed this in Master, so this issue can be closed. &lt;/p&gt;</comment>
                    <comment id="28494" author="dnolen" created="Sun, 13 May 2012 11:36:54 -0500"  >&lt;p&gt;Fixed in master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10911" name="index_patch" size="695" author="jasonjckn" created="Wed, 15 Feb 2012 15:19:35 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-54] Set unification does not operate symmetrically</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-54</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;A check is absent in unify-with-set that would check for missing values in addition to missing lvars. The incorrect behavior is shown below:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user&amp;gt; (run* [out] (== #{out} #{1}))
(1)
user&amp;gt; (run* [out] (== #{1} #{out}))
()&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The attached patch includes a similar test to the above and was run against the HEAD as of this posting.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15710">LOGIC-54</key>
            <summary>Set unification does not operate symmetrically</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="abrooks">Aaron Brooks</reporter>
                        <labels>
                    </labels>
                <created>Fri, 21 Sep 2012 14:51:14 -0500</created>
                <updated>Thu, 27 Sep 2012 21:38:33 -0500</updated>
                    <resolved>Thu, 27 Sep 2012 21:38:33 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29515" author="dnolen" created="Fri, 21 Sep 2012 14:58:29 -0500"  >&lt;p&gt;Thanks for the report will look into it.&lt;/p&gt;</comment>
                    <comment id="29539" author="dnolen" created="Thu, 27 Sep 2012 21:38:33 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/cdc4bf8563e9f566cc6e3e0e4f8a7735cd92b88e&quot;&gt;http://github.com/clojure/core.logic/commit/cdc4bf8563e9f566cc6e3e0e4f8a7735cd92b88e&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11516" name="0001-Fix-unify-with-set-to-work-symmetrically.patch" size="1595" author="abrooks" created="Fri, 21 Sep 2012 14:51:14 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-55] Unification of sets allows for duplicate values leading to non-set-like behavior</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-55</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Considering this behavior:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user&amp;gt; (run* [out] (== 3 out) (== #{3 out} #{3 out}))
(3)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There are other more convoluted cases involving multiple lvars but I think the above is enough for discussion. I think the above behavior is at least unexpected (desiring documentation) if not actually incorrect behavior.&lt;/p&gt;

&lt;p&gt;A possible solution would be to apply &lt;tt&gt;distincto&lt;/tt&gt; (or some equivalent) to the members of each incoming set before the body of unify-with-set (extending &lt;tt&gt;IUnifyWithSet&lt;/tt&gt; to &lt;tt&gt;clojure.lang.IPersistentSet&lt;/tt&gt;). Naturally this makes set unification even more expensive than it currently is but I&apos;m currently inclined to think that this additional cost is unavoidable, at least with the current approach.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15711">LOGIC-55</key>
            <summary>Unification of sets allows for duplicate values leading to non-set-like behavior</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="abrooks">Aaron Brooks</reporter>
                        <labels>
                    </labels>
                <created>Fri, 21 Sep 2012 15:03:18 -0500</created>
                <updated>Thu, 27 Sep 2012 21:38:47 -0500</updated>
                    <resolved>Thu, 27 Sep 2012 21:38:47 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29518" author="dnolen" created="Fri, 21 Sep 2012 15:19:00 -0500"  >&lt;p&gt;I probably should held off on implementing unification with sets. Oh well. The distincto approach sounds reasonable to me - would gladly take a patch.&lt;/p&gt;</comment>
                    <comment id="29519" author="abrooks" created="Fri, 21 Sep 2012 15:22:32 -0500"  >&lt;p&gt;I&apos;ll look in to that. Would you be against declaring &lt;tt&gt;distincto&lt;/tt&gt; so I can use it earlier in the file? I don&apos;t recall off the top of my head but I think &lt;tt&gt;distincto&lt;/tt&gt; can&apos;t be moved that early in the file and probably wants to stay where it is anyways.&lt;/p&gt;</comment>
                    <comment id="29540" author="dnolen" created="Thu, 27 Sep 2012 21:38:47 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/cdc4bf8563e9f566cc6e3e0e4f8a7735cd92b88e&quot;&gt;http://github.com/clojure/core.logic/commit/cdc4bf8563e9f566cc6e3e0e4f8a7735cd92b88e&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-56] Unification of sets does not consider all possibilities</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-56</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>
&lt;p&gt;The current unify-with-set logic will unify the first lvars it comes across, preventing backtrack unification with other lvars in the sets. See examples:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user&amp;gt; (run* [out]
        (fresh [a b c d]
          (== out [a b c d])
          (== #{a b} #{c d})))
([_.0 _.1 _.0 _.1])

user&amp;gt; (run* [out]
        (fresh [a b c d]
          (== out [a b c d])
          (== [a c] [7 9])
          (== #{a b} #{c d})))
()&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I&apos;m still thinking of a way to efficiently handle this but wanted to post it when I came across it.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15712">LOGIC-56</key>
            <summary>Unification of sets does not consider all possibilities</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="abrooks">Aaron Brooks</reporter>
                        <labels>
                    </labels>
                <created>Fri, 21 Sep 2012 15:12:18 -0500</created>
                <updated>Thu, 27 Sep 2012 21:39:00 -0500</updated>
                    <resolved>Thu, 27 Sep 2012 21:39:00 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29516" author="abrooks" created="Fri, 21 Sep 2012 15:18:32 -0500"  >&lt;p&gt;BTW, I should note that issue was noticed by Jim Duey.&lt;/p&gt;</comment>
                    <comment id="29520" author="dnolen" created="Fri, 21 Sep 2012 15:28:01 -0500"  >&lt;p&gt;More evidence that I probably should not have attempted unification with sets. This is why there is no support for logic vars as keys in maps - we should probably even throw in that case.&lt;/p&gt;

&lt;p&gt;Perhaps we can support backtracking by switching complex unification of sets to a conde? Though at that point you&apos;re probably better of using lists + distincto.&lt;/p&gt;</comment>
                    <comment id="29521" author="abrooks" created="Fri, 21 Sep 2012 15:34:17 -0500"  >&lt;p&gt;Yeah, I looked at map unification and decided to punt entirely. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/wink.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; One thing at a time.&lt;/p&gt;

&lt;p&gt;Now is a good time to thank you, again, for core.logic. This is better to have than not.&lt;/p&gt;</comment>
                    <comment id="29535" author="dnolen" created="Wed, 26 Sep 2012 15:22:53 -0500"  >&lt;p&gt;After some discussion with William Byrd at StrangeLoop I&apos;m inclined to remove set unification from core.logic entirely. It turns out this is an open research problem and I find it unlikely that I&apos;ll be able to figure this one out anytime soon. Will this cause too much trouble for you all?&lt;/p&gt;

&lt;p&gt;Note that a related change would be to throw on any maps that have logic vars as keys during unification.&lt;/p&gt;</comment>
                    <comment id="29536" author="abrooks" created="Wed, 26 Sep 2012 20:58:43 -0500"  >&lt;p&gt;This seems entirely reasonable. The complexity explodes quickly and distincto judiciously applied is far more efficient. Kill it as you wish. (Though I might suggest leaving the protocol in with no implementation so experimenters can easily extend it.)&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;</comment>
                    <comment id="29538" author="dnolen" created="Thu, 27 Sep 2012 09:36:02 -0500"  >&lt;p&gt;Excellent. I&apos;ll leave the protocol in, along with some fair warning about attempting it &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/wink.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; Thanks for the quick feedback.&lt;/p&gt;</comment>
                    <comment id="29541" author="dnolen" created="Thu, 27 Sep 2012 21:39:00 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/cdc4bf8563e9f566cc6e3e0e4f8a7735cd92b88e&quot;&gt;http://github.com/clojure/core.logic/commit/cdc4bf8563e9f566cc6e3e0e4f8a7735cd92b88e&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-37] The facts and retractions functions do not take the relation&apos;s namespace into account when resolving the index.</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-37</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Inserting facts into a relation that is defined in another namespace, specifically a namespace that has been required but not referred (I don&apos;t see the bug if I :use the other namespace).&lt;/p&gt;

&lt;p&gt;I&apos;ve tracked the problem down to this line:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/clojure/core.logic/blob/master/src/main/clojure/clojure/core/logic.clj#L1621&quot;&gt;https://github.com/clojure/core.logic/blob/master/src/main/clojure/clojure/core/logic.clj#L1621&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the facts function, when the relation index gets resolved, the namespace is not taken into account,&lt;/p&gt;

&lt;p&gt;index (var-get (resolve (index-sym (.name rel) arity o)))&lt;/p&gt;

&lt;p&gt;as it is when resolving the relation set.&lt;/p&gt;

&lt;p&gt;rel-set (var-get (ns-resolve rel-ns (set-sym (.name rel) arity)))&lt;/p&gt;

&lt;p&gt;Using ns-resolve, with rel-ns, seems to fix the issue for  me.&lt;/p&gt;

&lt;p&gt;index (var-get (ns-resolve rel-ns (index-sym (.name rel) arity o)))&lt;/p&gt;</description>
                <environment></environment>
            <key id="15403">LOGIC-37</key>
            <summary>The facts and retractions functions do not take the relation&apos;s namespace into account when resolving the index.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="liebke">David Edgar Liebke</reporter>
                        <labels>
                    </labels>
                <created>Thu, 3 May 2012 12:29:28 -0500</created>
                <updated>Thu, 27 Sep 2012 21:52:52 -0500</updated>
                    <resolved>Thu, 27 Sep 2012 21:52:52 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29542" author="dnolen" created="Thu, 27 Sep 2012 21:42:47 -0500"  >&lt;p&gt;Apologies for the slow response. Is this still a problem?&lt;/p&gt;</comment>
                    <comment id="29545" author="liebke" created="Thu, 27 Sep 2012 21:50:36 -0500"  >&lt;p&gt;Hi David,&lt;/p&gt;

&lt;p&gt;Nope, the problem has been resolved, as I recall you applied the patch and cut a new release the same day I submitted the request; so thanks again for the quick fix!&lt;/p&gt;

&lt;p&gt;David&lt;/p&gt;</comment>
                    <comment id="29546" author="dnolen" created="Thu, 27 Sep 2012 21:52:52 -0500"  >&lt;p&gt;fixed&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11165" name="0001-Fixed-issue-resolving-the-clojure.core.logic.Rel-ind.patch" size="1574" author="liebke" created="Thu, 3 May 2012 12:29:28 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-46] Unification on Struct Maps Causes Error</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-46</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Unless two struct maps satisfy &lt;tt&gt;identical?&lt;/tt&gt;, attempting to unify on them results in an error. Consider the following:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defstruct element :tag :attrs :content)
(def an-element (struct element :div [] &lt;span class=&quot;code-quote&quot;&gt;&quot;bar&quot;&lt;/span&gt;))

(run* [q]
  (membero an-element (all-elements))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Results in:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;java.lang.RuntimeException: Can&apos;t remove struct key
 at clojure.lang.Util.runtimeException (Util.java:156)
    clojure.lang.PersistentStructMap.without (PersistentStructMap.java:178)
    clojure.lang.RT.dissoc (RT.java:736)
    clojure.core$dissoc.invoke (core.clj:1404)
    clojure.core.logic$eval4245$fn__4246.invoke (logic.clj:1430)
    clojure.core.logic$eval2230$fn__2231$G__2221__2240.invoke (logic.clj:36)
    clojure.core.logic$eval4139$fn__4140.invoke (logic.clj:1280)
    clojure.core.logic$eval2050$fn__2051$G__2041__2060.invoke (logic.clj:18)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;During unification for &lt;tt&gt;IPersistentMap&lt;/tt&gt;, the two map-like arguments have the just-compared entry removed with &lt;tt&gt;dissoc&lt;/tt&gt; on recursion. For struct maps, this obviously throws the above error, whereas for Clojure records it &quot;downgrades&quot; them to regular maps (also sub-optimal).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Aside: I&apos;ve encountered the above using Christophe Grand&apos;s Enlive library, which still uses struct maps for modeling parsed HTML/XML documents.)&lt;/em&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="15611">LOGIC-46</key>
            <summary>Unification on Struct Maps Causes Error</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="semperos">Daniel Gregoire</reporter>
                        <labels>
                    </labels>
                <created>Thu, 2 Aug 2012 14:23:58 -0500</created>
                <updated>Thu, 4 Oct 2012 19:30:41 -0500</updated>
                    <resolved>Thu, 4 Oct 2012 19:20:02 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29089" author="dnolen" created="Tue, 7 Aug 2012 20:48:14 -0500"  >&lt;p&gt;There is no support for unifying struct maps. Patch welcome.&lt;/p&gt;</comment>
                    <comment id="29543" author="dnolen" created="Thu, 27 Sep 2012 21:44:48 -0500"  >&lt;p&gt;I&apos;m considering adding a IEmptyableCollection protocol to core.logic. If you implement then we can call it when unifying maps to preserve the original type. Does this sound satisfactory?&lt;/p&gt;</comment>
                    <comment id="29548" author="semperos" created="Thu, 27 Sep 2012 22:16:54 -0500"  >&lt;p&gt;Per our conversation at StrangeLoop, this sounds like a nice approach, and should solve current issues both with structmaps and records.&lt;/p&gt;</comment>
                    <comment id="29598" author="dnolen" created="Thu, 4 Oct 2012 19:20:02 -0500"  >&lt;p&gt;Fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/a62e7f11f02ade156043d309dc94166c9ec581b8&quot;&gt;http://github.com/clojure/core.logic/commit/a62e7f11f02ade156043d309dc94166c9ec581b8&lt;/a&gt;. The record issue will be resolved in a separate ticket.&lt;/p&gt;</comment>
                    <comment id="29600" author="dnolen" created="Thu, 4 Oct 2012 19:30:34 -0500"  >&lt;p&gt;I refined the ticket &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-58&quot; title=&quot;make defrecord unification easier to adopt&quot;&gt;&lt;del&gt;LOGIC-58&lt;/del&gt;&lt;/a&gt; about issues around defrecord which is really an issue around reconstructing it during reification not unification specifically.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-49] minimal map type for unifying only part of a map</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-49</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;currently it&apos;s a bit obnoxious that map unification must be over the entire map. It would be useful to have a new datatype - partial-map &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/help_16.gif&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; this would allow us to only match part of a map instead of the whole thing. Is this unsound?&lt;/p&gt;</description>
                <environment></environment>
            <key id="15660">LOGIC-49</key>
            <summary>minimal map type for unifying only part of a map</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 31 Aug 2012 12:09:24 -0500</created>
                <updated>Fri, 12 Oct 2012 13:52:05 -0500</updated>
                    <resolved>Fri, 12 Oct 2012 13:52:05 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29641" author="lynaghk" created="Fri, 12 Oct 2012 12:44:10 -0500"  >&lt;p&gt;How do you feel about letting partial map have a value meaning &quot;don&apos;t unify with a map that has a key here&quot;. E.g.,&lt;/p&gt;

&lt;p&gt;{:a ?x :b ?y} == {:a 1 :b 2 :c 3} =&amp;gt; {:a 1 :b 2}&lt;/p&gt;

&lt;p&gt;but&lt;/p&gt;

&lt;p&gt;{:a ?x :b !_} == {:a 1 :b 2 :c 3} =&amp;gt; nil&lt;/p&gt;

&lt;p&gt;My use case is doing map matching + rewrites and in some cases I don&apos;t want a partial-map to match a map that already has some keys defined.&lt;/p&gt;</comment>
                    <comment id="29642" author="dnolen" created="Fri, 12 Oct 2012 13:10:13 -0500"  >&lt;p&gt;Sure, but this is a separate ticket. Also it should be expressible via a normal goal - not-has-keyo or some such. Once that&apos;s done we can think about sugar.&lt;/p&gt;</comment>
                    <comment id="29643" author="lynaghk" created="Fri, 12 Oct 2012 13:16:33 -0500"  >&lt;p&gt;Also on the Github: &lt;a href=&quot;https://github.com/lynaghk/core.logic/tree/partial-map&quot;&gt;https://github.com/lynaghk/core.logic/tree/partial-map&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="29644" author="lynaghk" created="Fri, 12 Oct 2012 13:31:01 -0500"  >&lt;p&gt;Patch without !_ sugar.&lt;/p&gt;</comment>
                    <comment id="29645" author="lynaghk" created="Fri, 12 Oct 2012 13:47:22 -0500"  >&lt;p&gt;Add patch, not diff.&lt;/p&gt;</comment>
                    <comment id="29646" author="dnolen" created="Fri, 12 Oct 2012 13:52:05 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/9b340ea4fff2f4dad50b0f9631054e713b895fe8&quot;&gt;http://github.com/clojure/core.logic/commit/9b340ea4fff2f4dad50b0f9631054e713b895fe8&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11555" name="49-partial-map.diff" size="2728" author="lynaghk" created="Fri, 12 Oct 2012 13:31:01 -0500" />
                    <attachment id="11554" name="49-partial-map.diff" size="3460" author="lynaghk" created="Fri, 12 Oct 2012 13:16:33 -0500" />
                    <attachment id="11557" name="49-partial-map.patch" size="3325" author="lynaghk" created="Fri, 12 Oct 2012 13:47:22 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-62] distincto bug</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-62</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run 16 [q] (distincto q) (everyo #(membero % (range 3)) q))
;; returns (() [0] [1] [2] (0 0) (0 1) (1 0) (0 2) (1 1) (2 0) (1 2) (2 1) (2 2) (0 0 0) (0 0 1) (0 1 0)), incorrect&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15783">LOGIC-62</key>
            <summary>distincto bug</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 25 Oct 2012 14:30:29 -0500</created>
                <updated>Fri, 26 Oct 2012 00:39:44 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 00:39:44 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29805" author="dnolen" created="Fri, 26 Oct 2012 00:39:44 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/36cd3dfabd4848bce1c57fe5147b7f6c353de1b6&quot;&gt;http://github.com/clojure/core.logic/commit/36cd3dfabd4848bce1c57fe5147b7f6c353de1b6&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-60] Simple unification and partial-map support for ClojureScript</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-60</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This ports over the simple unifier (and prep and binding-map) as well as the partial-map support into ClojureScript.  Additionally some deprecated protocol use was patched up.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15781">LOGIC-60</key>
            <summary>Simple unification and partial-map support for ClojureScript</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="ohpauleez">Paul deGrandis</assignee>
                                <reporter username="ohpauleez">Paul deGrandis</reporter>
                        <labels>
                    </labels>
                <created>Thu, 25 Oct 2012 09:41:29 -0500</created>
                <updated>Fri, 26 Oct 2012 00:40:52 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 00:40:52 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29800" author="dnolen" created="Thu, 25 Oct 2012 11:11:30 -0500"  >&lt;p&gt;This looks great but could we copy over the related tests for simple unification and partial map unification? You can run these with script/test. Thanks.&lt;/p&gt;</comment>
                    <comment id="29801" author="ohpauleez" created="Thu, 25 Oct 2012 12:39:59 -0500"  >&lt;p&gt;I promise to write tests from now on &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/wink.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;I patched up one bug, noted the failing unification for partial-map (I will open a new ticket for it).&lt;/p&gt;

&lt;p&gt;Also, prep is failing on some JS Object because of a with-meta call.  See the tests for the cases where that happens.  I couldn&apos;t figure it out, but I haven&apos;t hit this in my project code (I&apos;m doing extremely simple unification and binding-map stuff).&lt;br/&gt;
I&apos;ll open up a new ticket for that as well.&lt;/p&gt;

&lt;p&gt;===&lt;br/&gt;
edit: take version 3 - removed print statements I left in the test file&lt;/p&gt;</comment>
                    <comment id="29806" author="dnolen" created="Fri, 26 Oct 2012 00:40:52 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/e33668ff0bd76aded94b7911e498c62473e47a6f&quot;&gt;http://github.com/clojure/core.logic/commit/e33668ff0bd76aded94b7911e498c62473e47a6f&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11613" name="logic-60-simple-unification-partmap-2.diff" size="10593" author="ohpauleez" created="Thu, 25 Oct 2012 12:37:22 -0500" />
                    <attachment id="11614" name="logic-60-simple-unification-partmap-3.diff" size="10583" author="ohpauleez" created="Thu, 25 Oct 2012 12:48:44 -0500" />
                    <attachment id="11612" name="logic-60-simple-unification-partmap.diff" size="6421" author="ohpauleez" created="Thu, 25 Oct 2012 09:49:37 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-57] poor performance when using tabling</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-57</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="15721">LOGIC-57</key>
            <summary>poor performance when using tabling</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 Sep 2012 15:19:15 -0500</created>
                <updated>Fri, 26 Oct 2012 01:01:00 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 01:01:00 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="29609" author="dnolen" created="Fri, 5 Oct 2012 18:49:44 -0500"  >&lt;p&gt;The following commit &lt;a href=&quot;http://github.com/clojure/core.logic/commit/03ad0a425c5b3b91a00142ff91e5fcd378daa682&quot;&gt;http://github.com/clojure/core.logic/commit/03ad0a425c5b3b91a00142ff91e5fcd378daa682&lt;/a&gt;, should give a very big performance boost. The table still ends up storing a lot of redundant information, we could probably get another large boost by figuring out some way to share information when goals are recursive.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11525" name="tabling.clj" size="2743" author="dnolen" created="Wed, 26 Sep 2012 15:19:31 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-52] Bug in finite domains (+fd, infd)</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-52</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;When running the code:&lt;/p&gt;

&lt;p&gt;(run* &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt;&lt;br/&gt;
  (fresh &lt;span class=&quot;error&quot;&gt;&amp;#91;a b c d&amp;#93;&lt;/span&gt;&lt;br/&gt;
    (infd a b c d (domain 1 3 4 5))&lt;br/&gt;
    (+fd b 1 a)&lt;br/&gt;
    (+fd c 1 b)&lt;br/&gt;
    (+fd d 1 c)&lt;br/&gt;
    (== q &lt;span class=&quot;error&quot;&gt;&amp;#91;a b c d&amp;#93;&lt;/span&gt;)))&lt;/p&gt;

&lt;p&gt;I get the ouput:&lt;/p&gt;

&lt;p&gt;(&lt;span class=&quot;error&quot;&gt;&amp;#91;5 4 3 1&amp;#93;&lt;/span&gt;)&lt;/p&gt;

&lt;p&gt;But I would expect:&lt;/p&gt;

&lt;p&gt;()&lt;/p&gt;

&lt;p&gt;Because &lt;span class=&quot;error&quot;&gt;&amp;#91;5 4 3 1&amp;#93;&lt;/span&gt; is no sequence where the next element is always one number higher than the one before.&lt;/p&gt;

&lt;p&gt;It seems to me like +fd behaves as it would take the next element in the domain, instead of taking the next higher number (I hope I didn&apos;t misunderstand +fd or infd).&lt;/p&gt;</description>
                <environment>Clojure 1.4, core.logic 0.8-alpha3</environment>
            <key id="15690">LOGIC-52</key>
            <summary>Bug in finite domains (+fd, infd)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="naeg">naeg</reporter>
                        <labels>
                        <label>+fd</label>
                        <label>bug</label>
                        <label>finite-domains</label>
                        <label>infd</label>
                    </labels>
                <created>Mon, 10 Sep 2012 16:50:28 -0500</created>
                <updated>Fri, 26 Oct 2012 01:03:46 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 01:03:46 -0500</resolved>
                                                                    <due></due>
                    <votes>1</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29425" author="naeg" created="Tue, 11 Sep 2012 16:48:06 -0500"  >&lt;p&gt;There is workaround using membero:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [a b c d]
    (everyg #(membero % [1 3 4 5]) [a b c d])
    (+fd b 1 a)
    (+fd c 1 b)
    (+fd d 1 c)
    (== q [a b c d])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;=&amp;gt; ()&lt;/p&gt;

&lt;p&gt;Note that this is quite a lot slower than it would be with infd.&lt;/p&gt;</comment>
                    <comment id="29807" author="dnolen" created="Fri, 26 Oct 2012 01:03:46 -0500"  >&lt;p&gt;This is fixed try the latest 0.8.0 beta&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-39] core.logic is inconsistent in how it handles nil and false</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-39</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Unification failure should always return nil. The fact that we sometimes return false and sometimes return nil creates problems when providing lower level data sources.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15450">LOGIC-39</key>
            <summary>core.logic is inconsistent in how it handles nil and false</summary>
                <type id="3" iconUrl="http://dev.clojure.org/jira/images/icons/task.gif">Task</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 17 May 2012 11:40:13 -0500</created>
                <updated>Fri, 26 Oct 2012 01:07:50 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 01:07:50 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29809" author="dnolen" created="Fri, 26 Oct 2012 01:07:50 -0500"  >&lt;p&gt;This was resolved on the way to 0.8.0 alphas/beta&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-63] Prep&apos;s use of metadata needs to be extended to other objects in ClojureScript</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-63</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The simple unifier and binding-map work great in the simple cases, but fail with more complicated unification.&lt;br/&gt;
The root cause is prep&apos;s use of metadata banging up against JS Objects.&lt;/p&gt;

&lt;p&gt;For the cases that fail, see the current failing tests:&lt;br/&gt;
&lt;a href=&quot;https://github.com/clojure/core.logic/blob/master/src/test/cljs/cljs/core/logic/tests.cljs#L871&quot;&gt;https://github.com/clojure/core.logic/blob/master/src/test/cljs/cljs/core/logic/tests.cljs#L871&lt;/a&gt;&lt;/p&gt;</description>
                <environment></environment>
            <key id="15785">LOGIC-63</key>
            <summary>Prep&apos;s use of metadata needs to be extended to other objects in ClojureScript</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ohpauleez">Paul deGrandis</reporter>
                        <labels>
                    </labels>
                <created>Fri, 26 Oct 2012 12:34:18 -0500</created>
                <updated>Fri, 26 Oct 2012 17:53:04 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 17:53:04 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29812" author="dnolen" created="Fri, 26 Oct 2012 12:42:31 -0500"  >&lt;p&gt;I still don&apos;t understand. Is it failing because it&apos;s trying to add metadata to objects which don&apos;t support that? That doesn&apos;t really make sense given the unifications that are failing that you&apos;ve highlighted.&lt;/p&gt;</comment>
                    <comment id="29813" author="ohpauleez" created="Fri, 26 Oct 2012 12:55:05 -0500"  >&lt;p&gt;That&apos;s correct - I couldn&apos;t determine what the Object was in the code.  Whatever it is, it just needs the IWithMeta protocol extended to it.&lt;/p&gt;

&lt;p&gt;I thought you might have more insight.&lt;/p&gt;</comment>
                    <comment id="29814" author="dnolen" created="Fri, 26 Oct 2012 12:58:09 -0500"  >&lt;p&gt;Ok will look into it.&lt;/p&gt;</comment>
                    <comment id="29819" author="dnolen" created="Fri, 26 Oct 2012 17:53:04 -0500"  >&lt;p&gt;fixed &lt;a href=&quot;http://github.com/clojure/core.logic/commit/371c0355f51ee35c6e71616ec2923a8242d6e4b3&quot;&gt;http://github.com/clojure/core.logic/commit/371c0355f51ee35c6e71616ec2923a8242d6e4b3&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-61] partial-map in ClojureScript does not correctly unify map members</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-61</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;In the most recent changes to the core.logic&apos;s CLJS support (&lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-60&quot; title=&quot;Simple unification and partial-map support for ClojureScript&quot;&gt;&lt;del&gt;LOGIC-60&lt;/del&gt;&lt;/a&gt;), partial-map does not correctly unify the members within the map:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(m/run* [q]
  (m/fresh [pm x]
    (m/== pm (partial-map {:a x}))
    (m/== pm {:a 1 :b 2})
    (m/== x q))))
=&amp;gt; (1)

but,

(m/run* [q]
  (m/fresh [pm x]
    (m/== pm (partial-map {:a x}))
    (m/== pm {:a 1 :b 2})
    (m/== pm q))))
=&amp;gt; (#PMap{:a &amp;lt;lvar:x_3&amp;gt;})
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The latter should unify to {:a 1}&lt;/p&gt;</description>
                <environment></environment>
            <key id="15782">LOGIC-61</key>
            <summary>partial-map in ClojureScript does not correctly unify map members</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ohpauleez">Paul deGrandis</reporter>
                        <labels>
                    </labels>
                <created>Thu, 25 Oct 2012 12:44:01 -0500</created>
                <updated>Fri, 26 Oct 2012 18:04:59 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 18:04:59 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29820" author="dnolen" created="Fri, 26 Oct 2012 18:04:59 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d39fd90ae096c1a940e79ea898a9f86d4b106362&quot;&gt;http://github.com/clojure/core.logic/commit/d39fd90ae096c1a940e79ea898a9f86d4b106362&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-67] match(e/a) in ClojureScript always creates free var</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-67</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The following code:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn map-geto* [m k v]
  (matche [m]
    ([[[k v] . _]])
    ([[_ . tail]] (map-geto* tail k v))))

(run* [q] (map-geto* (seq {:title &lt;span class=&quot;code-quote&quot;&gt;&quot;Blub&quot;&lt;/span&gt; }) :title q))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;works in Clojure as expected, returning (&quot;Blub&quot;). However in ClojureScript I get (_.0) instead. From what I can tell, this is because within the matche clause that matches &lt;span class=&quot;error&quot;&gt;&amp;#91;k v&amp;#93;&lt;/span&gt;, both k and v are not being matched against the upper k and v, but rather create fresh variables instead.&lt;br/&gt;
I can work around the issue by writing the following:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn map-geto* [m k v]
  (matche [m]
    ([[[k&apos; v&apos;] . _]] (== k k&apos;) (== v v&apos;))
    ([[_ . tail]] (map-geto* tail k v))))

(run* [q] (map-geto* (seq {:title &lt;span class=&quot;code-quote&quot;&gt;&quot;Blub&quot;&lt;/span&gt; }) :title q))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Is this intended behavior?&lt;/p&gt;</description>
                <environment>cljsbuild 0.2.8&lt;br/&gt;
core.logic 0.8.0-beta2</environment>
            <key id="15825">LOGIC-67</key>
            <summary>match(e/a) in ClojureScript always creates free var</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="mhooo">Thomas Karolski</reporter>
                        <labels>
                    </labels>
                <created>Wed, 14 Nov 2012 14:18:11 -0600</created>
                <updated>Wed, 14 Nov 2012 17:52:35 -0600</updated>
                    <resolved>Wed, 14 Nov 2012 17:52:35 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29948" author="dnolen" created="Wed, 14 Nov 2012 17:52:35 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/fff0033b288a2ff80ce3bc672e1daabfa16e555b&quot;&gt;http://github.com/clojure/core.logic/commit/fff0033b288a2ff80ce3bc672e1daabfa16e555b&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-69] prep does not properly recurse terms</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-69</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(prep {:a {:b ?c} :d ?d})&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;?c is not walked according to Kevin Lynagh. This should also handle complex map keys.&lt;/p&gt;
</description>
                <environment></environment>
            <key id="15835">LOGIC-69</key>
            <summary>prep does not properly recurse terms</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Mon, 19 Nov 2012 12:42:19 -0600</created>
                <updated>Wed, 21 Nov 2012 08:57:52 -0600</updated>
                    <resolved>Wed, 21 Nov 2012 08:57:52 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29989" author="lynaghk" created="Wed, 21 Nov 2012 00:09:04 -0600"  >&lt;p&gt;Also available here: &lt;a href=&quot;https://github.com/lynaghk/core.logic/tree/walk-recursive&quot;&gt;https://github.com/lynaghk/core.logic/tree/walk-recursive&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="29990" author="lynaghk" created="Wed, 21 Nov 2012 00:13:01 -0600"  >&lt;p&gt;This patch adds prewalk recursion to IWalkTerm for map/record keys and values, seqs, and vectors.&lt;br/&gt;
Note that logic vars within map keys isn&apos;t going to unify in the current implementation, and probably isn&apos;t a sensible thing to do anyway. Prewalk of map keys is just so that people can use core.logic&apos;s walk implementation over clojure.walk to use the IUninitialized protocol.&lt;/p&gt;</comment>
                    <comment id="29991" author="lynaghk" created="Wed, 21 Nov 2012 00:17:58 -0600"  >&lt;p&gt;(Patch updated to walk map keys. I couldn&apos;t figure out how to remove old patch in JIRA.)&lt;/p&gt;</comment>
                    <comment id="29992" author="dnolen" created="Wed, 21 Nov 2012 08:57:52 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/bd65104ec3fda79790655d4be8a9be436f2c0d54&quot;&gt;http://github.com/clojure/core.logic/commit/bd65104ec3fda79790655d4be8a9be436f2c0d54&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11692" name="logic69.patch" size="2809" author="lynaghk" created="Wed, 21 Nov 2012 00:16:38 -0600" />
                    <attachment id="11691" name="logic69.patch" size="2700" author="lynaghk" created="Wed, 21 Nov 2012 00:09:04 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-72] Unification with partial-map fails when a map contains a map value with extra keys</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-72</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Unification fails for partial-map when there is a partial match on a sub-map.&lt;/p&gt;

&lt;p&gt;A failing test case:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= &apos;[#clojure.core.logic.PMap{:a {:b 2}}]
         (run* [q]
           (fresh [pm x]
             (== (partial-map {:a {:b x}}) pm)
             (== {:a {:b 2 :c 3}} pm)
             (== q pm)))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
</description>
                <environment></environment>
            <key id="15847">LOGIC-72</key>
            <summary>Unification with partial-map fails when a map contains a map value with extra keys</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hugoduncan">Hugo Duncan</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Nov 2012 23:03:35 -0600</created>
                <updated>Fri, 23 Nov 2012 15:58:44 -0600</updated>
                    <resolved>Fri, 23 Nov 2012 15:58:44 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30021" author="hugoduncan" created="Fri, 23 Nov 2012 15:55:35 -0600"  >&lt;p&gt;As mentioned by Kevin Lynagh, this can be achieved using walk-term, and I agree the behaviour is better off being explicit.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn -&amp;gt;pmap [x]
  (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (map? x)
    (l/partial-map x)
    x))

(l/unifier target (-&amp;gt;pmap (l/walk-term my-map -&amp;gt;pmap)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30022" author="dnolen" created="Fri, 23 Nov 2012 15:58:44 -0600"  >&lt;p&gt;having partial-map implicitly recurse is undesirable. It&apos;s easy to achieve the desired behavior now that we have a reusable walk-term built into core.logic.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11700" name="recursive-partial-map.diff" size="2300" author="hugoduncan" created="Thu, 22 Nov 2012 23:03:36 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-73] Usage of c.c.l/prep can lead to a different result (compared to not using it)</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-73</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Below are two expressions that differ only in the use of &lt;tt&gt;c.c.l/prep&lt;/tt&gt;. When using &lt;tt&gt;prep&lt;/tt&gt; there is an extra term returned, that includes a free ?a, which seems wrong, considering the second pattern should unify on the :a key.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [rules
      [{:pattern (partial-map (prep {:a :clojure.core.logic/not-found :x 1}))
        :production (prep {:a 1})}
       {:pattern (partial-map (prep {:a &apos;?a :c :clojure.core.logic/not-found}))
        :production (prep {:c &apos;(* ?a 2)})}]]
  (run* [q]
    (fresh [pattern production guards rule rule-name]
      (membero {:pattern pattern :production production} rules)
      (== {:x 1}  pattern)
      (== q production))))
  =&amp;gt; ({:a 1} {:c (* _.0 2)})&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(let [rules
      [{:pattern (partial-map {:a :clojure.core.logic/not-found :x 1})
        :production {:a 1}}
       {:pattern (partial-map {:a &apos;?a :c :clojure.core.logic/not-found})
        :production {:c &apos;(* ?a 2)}}]]
  (run* [q]
    (fresh [pattern production guards rule rule-name]
      (membero {:pattern pattern :production production} rules)
      (== {:x 1}  pattern)
      (== q production))))
  =&amp;gt; ({:a 1})&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15850">LOGIC-73</key>
            <summary>Usage of c.c.l/prep can lead to a different result (compared to not using it)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hugoduncan">Hugo Duncan</reporter>
                        <labels>
                    </labels>
                <created>Fri, 23 Nov 2012 16:05:33 -0600</created>
                <updated>Fri, 23 Nov 2012 22:03:36 -0600</updated>
                    <resolved>Fri, 23 Nov 2012 16:34:58 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30023" author="dnolen" created="Fri, 23 Nov 2012 16:34:58 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/9a964d6c744433825332dd82370cb46eac7919da&quot;&gt;http://github.com/clojure/core.logic/commit/9a964d6c744433825332dd82370cb46eac7919da&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30025" author="hugoduncan" created="Fri, 23 Nov 2012 22:03:36 -0600"  >&lt;p&gt;The code in the prep case above contains a bug. Both the pattern and production should both be passed in a single call to prep, otherwise they end up with different logic vars. When corrected there is only one term returned when using prep.&lt;/p&gt;

&lt;p&gt;I&apos;m not sure what this means for the necessity or correctness of the fix.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-75] Combining maps and finite domains in core.logic returns only one result</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-75</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I&apos;m trying to combine maps with finite domains with some odd results.&lt;/p&gt;

&lt;p&gt;A simple query using finite domains correctly returns all values:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
	  (fresh [x]
	    (infd x (interval 1 3))
	    (== q x)))
	
	;=&amp;gt; (1 2 3)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But putting this result in a map returns only the first value:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
	  (fresh [x]
	    (infd x (interval 1 3))
	    (== q {:foo x})))
	
	;=&amp;gt; ({:foo 1})&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;FYI this works with vectors:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
	  (fresh [x]
	    (infd x (interval 1 3))
	    (== q [x])))
	
	;=&amp;gt; ([1] [2] [3])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But lcons seems to fail as well:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
	  (fresh [x]
	    (infd x (interval 1 3))
	    (== q (lcons x &apos;foo))))
	
	;=&amp;gt; ((1 . foo))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>Clojure 1.4.0, core.logic 0.8.0-beta2</environment>
            <key id="15881">LOGIC-75</key>
            <summary>Combining maps and finite domains in core.logic returns only one result</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="frederikdb">Frederik De Bleser</reporter>
                        <labels>
                        <label>bug</label>
                    </labels>
                <created>Tue, 11 Dec 2012 04:41:12 -0600</created>
                <updated>Wed, 12 Dec 2012 11:53:35 -0600</updated>
                    <resolved>Wed, 12 Dec 2012 11:53:35 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30218" author="dnolen" created="Wed, 12 Dec 2012 11:53:35 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/c96402f3e60b1118446b3e681d98e444e4ce417d&quot;&gt;http://github.com/clojure/core.logic/commit/c96402f3e60b1118446b3e681d98e444e4ce417d&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-58] make defrecord unification easier to adopt</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-58</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="15722">LOGIC-58</key>
            <summary>make defrecord unification easier to adopt</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 26 Sep 2012 15:36:25 -0500</created>
                <updated>Sat, 15 Dec 2012 19:19:25 -0600</updated>
                    <resolved>Sat, 15 Dec 2012 19:19:25 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29599" author="dnolen" created="Thu, 4 Oct 2012 19:29:13 -0500"  >&lt;p&gt;As pointed out on the mailing list calling empty on defrecord doesn&apos;t actually make sense. defrecords are never empty in the IPersistentCollection sense, they just have their keys initialized to nil. I&apos;m open to suggestions here.&lt;/p&gt;</comment>
                    <comment id="30235" author="dnolen" created="Sat, 15 Dec 2012 19:19:25 -0600"  >&lt;p&gt;This was resolved a while back with the addition of the IUninitialized protocol&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-45] add everyo (?) when we want to apply a goal to every element of a sequence.</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-45</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;It&apos;s a common pattern to do the following&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn everyo [g xs]
  (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (seq xs)
    (all
      (g (first xs))
      (everyo g (next xs)))
    succeed))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We should add this to the standard library.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15607">LOGIC-45</key>
            <summary>add everyo (?) when we want to apply a goal to every element of a sequence.</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Tue, 31 Jul 2012 09:34:15 -0500</created>
                <updated>Sat, 15 Dec 2012 19:21:32 -0600</updated>
                    <resolved>Sat, 15 Dec 2012 19:21:32 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30236" author="dnolen" created="Sat, 15 Dec 2012 19:21:32 -0600"  >&lt;p&gt;We have everyg now - the naming and behavior should probably go through some more consideration.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-81] predc constraint is not enforced when it could be</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-81</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The predc number constraint fails to be enforced here.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
           (fresh [x]
             (== q x)
             (predc q number? `number?)
             (== x &lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;)))
        ())) ;; &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt; -- actual is ((_0 :- number?))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Inverting the first two goals gives the expected result.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
           (fresh [x]
             (predc q number? `number?)
             (== q x)
             (== x &lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;)))
        ())) ;; OK&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15908">LOGIC-81</key>
            <summary>predc constraint is not enforced when it could be</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Wed, 19 Dec 2012 07:27:15 -0600</created>
                <updated>Thu, 20 Dec 2012 09:43:08 -0600</updated>
                    <resolved>Thu, 20 Dec 2012 09:43:08 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30267" author="namin" created="Wed, 19 Dec 2012 09:12:18 -0600"  >&lt;p&gt;Actually, the problem is not specific to predc. It&apos;s an issue that addcg can overwrite a precious binding. Here is another example without predc:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
           (fresh [x y z]
             (== q x)
             (distinctfd [q y])
             (== y x)
             (infd q x y (interval 1 3))))
        ()) ;; &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt; -- actual is [1 2 3]&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I have a fix that I&apos;ll submit shortly.&lt;/p&gt;</comment>
                    <comment id="30268" author="namin" created="Wed, 19 Dec 2012 09:20:43 -0600"  >&lt;p&gt;Let&apos;s discuss on GitHub first: &lt;a href=&quot;https://github.com/namin/core.logic/compare/logic-81&quot;&gt;https://github.com/namin/core.logic/compare/logic-81&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30270" author="namin" created="Thu, 20 Dec 2012 09:25:37 -0600"  >&lt;p&gt;logic-81.diff include fix and tests. Since the interface for the constraint store has been modified, some tests needed to be udpated.&lt;/p&gt;

&lt;p&gt;discussion: &lt;a href=&quot;https://github.com/clojure/core.logic/pull/14&quot;&gt;https://github.com/clojure/core.logic/pull/14&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;rebase:&lt;br/&gt;
&lt;a href=&quot;https://github.com/namin/core.logic/compare/logic-81-base&quot;&gt;https://github.com/namin/core.logic/compare/logic-81-base&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30271" author="dnolen" created="Thu, 20 Dec 2012 09:43:08 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/0f7de6ed7125df65f4450d5507341a98b151001a&quot;&gt;http://github.com/clojure/core.logic/commit/0f7de6ed7125df65f4450d5507341a98b151001a&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11770" name="logic-81.diff" size="8615" author="namin" created="Thu, 20 Dec 2012 09:25:37 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-82] conso and seq, when unifying tail later</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-82</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;These two snippets should both succeed, but the second one fails.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run 1 [q]
  (fresh [a c]
    (conso a nil c)
    (== `(~a) c))) ;; &apos;(_0)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run 1 [q]
  (fresh [a b c]
    (conso a b c)
    (== b nil)
    (== `(~a) c))) ;; expected: &apos;(_0), actual: &apos;()&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15912">LOGIC-82</key>
            <summary>conso and seq, when unifying tail later</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Thu, 20 Dec 2012 20:34:44 -0600</created>
                <updated>Thu, 20 Dec 2012 23:50:14 -0600</updated>
                    <resolved>Thu, 20 Dec 2012 23:50:14 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30273" author="dnolen" created="Thu, 20 Dec 2012 23:50:14 -0600"  >&lt;p&gt;It boggles the mind how this is just being discovered &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/0c985df0236037907852f9b19c7df3ba6a607875&quot;&gt;http://github.com/clojure/core.logic/commit/0c985df0236037907852f9b19c7df3ba6a607875&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-79] Setting finite domain on more than two lvars using domain fn throws UnsupportedOperationException</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-79</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;When specifying domains on more than two lvars core.logic 0.8.0-beta3 throws an UnsupportedOperationException. Here&apos;s an example:&lt;/p&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
    (fresh [x y z]
        (infd x y z (domain 1 2 3))
  	    (&amp;lt;fd x y)
  	    (&amp;lt;fd y z)
        (== q [x y z])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;0.8.0-beta2: nil.&lt;/li&gt;
	&lt;li&gt;0.8.0-beta3: UnsupportedOperationException count not supported on this type: FiniteDomain  clojure.lang.RT.countFrom (RT.java:545)&lt;/li&gt;
	&lt;li&gt;0.8.0-beta4-SNAPSHOT (739ec7e): (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 2 3&amp;#93;&lt;/span&gt;) (correct result)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I&apos;ve checked and commit 07f2f6a introduced the fix, so this is possibly related to &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-77&quot; title=&quot;Finite-domain vars inside a vector crash when constrained.&quot;&gt;&lt;del&gt;LOGIC-77&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When trying to isolate the bug I found that:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Using `(interval 1 3)` instead of `(domain 1 2 3)` works.&lt;/li&gt;
	&lt;li&gt;Using two fresh variables instead of three works:&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
      (fresh [x y]
	      (infd x y (domain 1 2))
  	    (&amp;lt;fd x y)
        (== q [x y])))
;=&amp;gt; ([1 2])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here&apos;s a test that checks the behavior. The test works in the latest version but fails in all commits before 07f2f6a.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(deftest test-domfd-three-lvars []
  (is (= (run* [q]
           (fresh [x y z]
           (infd x y z (domain 1 2 3))
           (&amp;lt;fd x y)
           (&amp;lt;fd y z)
           (== q [x y z])))
         &apos;([1 2 3]))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

</description>
                <environment>Clojure 1.4.0 , core.logic 0.8.0-beta3</environment>
            <key id="15900">LOGIC-79</key>
            <summary>Setting finite domain on more than two lvars using domain fn throws UnsupportedOperationException</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="frederikdb">Frederik De Bleser</reporter>
                        <labels>
                    </labels>
                <created>Tue, 18 Dec 2012 08:37:25 -0600</created>
                <updated>Thu, 20 Dec 2012 23:51:55 -0600</updated>
                    <resolved>Thu, 20 Dec 2012 23:51:55 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30250" author="dnolen" created="Tue, 18 Dec 2012 09:29:11 -0600"  >&lt;p&gt;So is there a bug in master or not? To keep tracking issues simpler, if the bug does not exist in master please don&apos;t open a ticket.&lt;/p&gt;</comment>
                    <comment id="30251" author="frederikdb" created="Tue, 18 Dec 2012 09:34:36 -0600"  >&lt;p&gt;The issue is fixed in master.&lt;/p&gt;

&lt;p&gt;I still wanted to report it since it seems to somehow relate to &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-77&quot; title=&quot;Finite-domain vars inside a vector crash when constrained.&quot;&gt;&lt;del&gt;LOGIC-77&lt;/del&gt;&lt;/a&gt; &#8211; maybe I should just have added a comment there.&lt;/p&gt;

&lt;p&gt;Sorry for the confusion.&lt;/p&gt;</comment>
                    <comment id="30274" author="dnolen" created="Thu, 20 Dec 2012 23:51:55 -0600"  >&lt;p&gt;Not relevant to master.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-85] another issue with predc constraint is not enforced when it could be</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-85</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This returns (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 1&amp;#93;&lt;/span&gt;) instead of ().&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x y]
    (predc y even? `even?)
    (predc x odd? `odd)
    (== x y)
    (== x 1)
    (== q [x y]))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15922">LOGIC-85</key>
            <summary>another issue with predc constraint is not enforced when it could be</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 24 Dec 2012 12:25:33 -0600</created>
                <updated>Mon, 24 Dec 2012 18:14:21 -0600</updated>
                    <resolved>Mon, 24 Dec 2012 18:14:21 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30316" author="dnolen" created="Mon, 24 Dec 2012 13:31:23 -0600"  >&lt;p&gt;This is actually related to the deeper problem also demonstrated by &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-77&quot; title=&quot;Finite-domain vars inside a vector crash when constrained.&quot;&gt;&lt;del&gt;LOGIC-77&lt;/del&gt;&lt;/a&gt;. The problem is that cKanren checks constraints via &quot;update-prefix&quot; which calls &quot;update&quot; which calls &quot;run-constraints*&quot;. &quot;update&quot; is called on the Substitution &lt;b&gt;prior&lt;/b&gt; to unification. This creates all kinds of issues as it&apos;s during unification that we &quot;migrate&quot; constraints from one logic var to another.&lt;/p&gt;

&lt;p&gt;I&apos;m pondering eliminating &quot;update&quot; and moving &quot;run-constraints*&quot; lower into the system - perhaps at the level of &quot;ext-no-check&quot;. A related change would be putting SubstValue smarts into &quot;ext-no-check&quot;. For example a &quot;ext-no-check&quot; on a unbound constrained logic var would simply update its SubstValue. This is critical as SubstValue might contain constraint information that must be preserved.&lt;/p&gt;</comment>
                    <comment id="30317" author="dnolen" created="Mon, 24 Dec 2012 18:14:21 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d4d4cd53edfd76c2f416bd699f4b4d914f880985&quot;&gt;http://github.com/clojure/core.logic/commit/d4d4cd53edfd76c2f416bd699f4b4d914f880985&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-77] Finite-domain vars inside a vector crash when constrained.</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-77</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I don&apos;t know a lot about the finite domain code, but it surprised me that this crashes:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(run 1 [r a b x]
  (== r [a b])
  (infd a b x (domain 1 2))
  (&amp;lt;fd a b)
  (firsto r x))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This was the most minimal example I could come up with.&lt;/p&gt;</description>
                <environment>clojure 1.5.0-beta1 with core.logic 0.8.0-beta3</environment>
            <key id="15893">LOGIC-77</key>
            <summary>Finite-domain vars inside a vector crash when constrained.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="gfredericks">Gary Fredericks</reporter>
                        <labels>
                    </labels>
                <created>Sat, 15 Dec 2012 16:12:52 -0600</created>
                <updated>Mon, 24 Dec 2012 18:14:34 -0600</updated>
                    <resolved>Mon, 24 Dec 2012 18:14:34 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30237" author="dnolen" created="Sat, 15 Dec 2012 19:43:52 -0600"  >&lt;p&gt;This commit &lt;a href=&quot;http://github.com/clojure/core.logic/commit/07f2f6ac42ad13ed7476f70669b98e76a84f2455&quot;&gt;http://github.com/clojure/core.logic/commit/07f2f6ac42ad13ed7476f70669b98e76a84f2455&lt;/a&gt; fixes the exception. However I&apos;m still not seeing the expected result which I believe is:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;([[1 2] 1 2 1])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30238" author="dnolen" created="Sat, 15 Dec 2012 21:17:18 -0600"  >&lt;p&gt;This is bug results from the trickiness of aliasing of logic vars in the presence of constraints. Currently when two constrained vars are unified, we point one var to the other var and migrate the constraints. However this is not enough we also need to merge their domains - this is not currently being done.&lt;/p&gt;</comment>
                    <comment id="30318" author="dnolen" created="Mon, 24 Dec 2012 18:14:34 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d4d4cd53edfd76c2f416bd699f4b4d914f880985&quot;&gt;http://github.com/clojure/core.logic/commit/d4d4cd53edfd76c2f416bd699f4b4d914f880985&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-76] partial-maps break the transitivity of unification</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-76</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;partial-map should never unify with fresh vars - this should be a hard error. This means partial-map functionality needs to be accessible by some other means - probably a constraint - `featurec` might be a good name for it. This way partial-maps never leak into an actual program, and users don&apos;t try to make the concrete data structure participate in unification. At the same time this does allow extracting features of interest via unification once the term (map) being checked actually becomes ground.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15892">LOGIC-76</key>
            <summary>partial-maps break the transitivity of unification</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 14 Dec 2012 18:49:28 -0600</created>
                <updated>Fri, 28 Dec 2012 00:42:54 -0600</updated>
                    <resolved>Fri, 28 Dec 2012 00:42:54 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30333" author="dnolen" created="Fri, 28 Dec 2012 00:42:54 -0600"  >&lt;p&gt;resolved in master, functionality now available via `featurec`&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-59] tabled goals should have tables local to a particular run</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-59</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Currently tabled goals cannot be used across multiple runs which is simply awful.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15757">LOGIC-59</key>
            <summary>tabled goals should have tables local to a particular run</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 17 Oct 2012 12:29:27 -0500</created>
                <updated>Fri, 28 Dec 2012 20:35:26 -0600</updated>
                    <resolved>Fri, 28 Dec 2012 20:35:26 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30336" author="dnolen" created="Fri, 28 Dec 2012 20:35:26 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/ef437d676e72dd9a30e60b31d8ee4a1dccbfdcef&quot;&gt;http://github.com/clojure/core.logic/commit/ef437d676e72dd9a30e60b31d8ee4a1dccbfdcef&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-78] nominal unification inspired by alphaKanren</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-78</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The new core.logic.nominal namespace implements the alphaKanren primitive fresh, tie and hash.&lt;br/&gt;
The tests also run the examples from the alphaKaren paper.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://github.com/clojure/core.logic/pull/12&quot;&gt;https://github.com/clojure/core.logic/pull/12&lt;/a&gt; for the patch in progress.&lt;/p&gt;

&lt;p&gt;(Meta: Should I add the patch-in-progress now or wait until we finalize the review on GitHub?)&lt;/p&gt;</description>
                <environment></environment>
            <key id="15894">LOGIC-78</key>
            <summary>nominal unification inspired by alphaKanren</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Sun, 16 Dec 2012 04:59:42 -0600</created>
                <updated>Mon, 31 Dec 2012 10:14:50 -0600</updated>
                    <resolved>Mon, 31 Dec 2012 10:14:50 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30241" author="dnolen" created="Sun, 16 Dec 2012 10:43:03 -0600"  >&lt;p&gt;We can continue discussing it on GitHub for now. Once we&apos;re both happy with it there, we can attach the patch here. Thanks.&lt;/p&gt;</comment>
                    <comment id="30338" author="namin" created="Mon, 31 Dec 2012 09:37:32 -0600"  >&lt;p&gt;nominal.diff patch with implementation + tests in own core.logic.nominal namespace.&lt;/p&gt;</comment>
                    <comment id="30339" author="dnolen" created="Mon, 31 Dec 2012 10:14:50 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/b46b8c077360095c72eaa00a6a4aa843dc9136ff&quot;&gt;http://github.com/clojure/core.logic/commit/b46b8c077360095c72eaa00a6a4aa843dc9136ff&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11784" name="nominal.diff" size="27830" author="namin" created="Mon, 31 Dec 2012 09:37:32 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-84] make occurs-check a field</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-84</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This way we can control occurs-check without worrying about laziness.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15920">LOGIC-84</key>
            <summary>make occurs-check a field</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Mon, 24 Dec 2012 00:58:10 -0600</created>
                <updated>Tue, 1 Jan 2013 12:38:35 -0600</updated>
                    <resolved>Tue, 1 Jan 2013 12:38:35 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30344" author="dnolen" created="Tue, 1 Jan 2013 12:38:35 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/3be00503588772c5ababd35f037a967fb00036e2&quot;&gt;http://github.com/clojure/core.logic/commit/3be00503588772c5ababd35f037a967fb00036e2&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-92] nominal is missing a few constraints-related tweaks</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-92</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;These tests fail. We get only the first result.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
           (fresh [x]
             (nom/fresh [a]
               (infd x (interval 1 3))
               (== q (nom/tie a x)))))
        [(nom/tie &apos;a_0 1) (nom/tie &apos;a_0 2) (nom/tie &apos;a_0 3)]))
  (is (= (run* [q]
           (nom/fresh [a b c]
             (fresh [x]
               (infd x (interval 1 3))
               (== (nom/tie b (nom/tie a x)) (nom/tie c q)))))
        [(nom/tie &apos;a_0 1) (nom/tie &apos;a_0 2) (nom/tie &apos;a_0 3)]))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15938">LOGIC-92</key>
            <summary>nominal is missing a few constraints-related tweaks</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Wed, 2 Jan 2013 09:06:01 -0600</created>
                <updated>Wed, 2 Jan 2013 09:17:25 -0600</updated>
                    <resolved>Wed, 2 Jan 2013 09:17:25 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30355" author="namin" created="Wed, 2 Jan 2013 09:09:09 -0600"  >&lt;p&gt;nominal-infd.diff contains fix and tests.&lt;/p&gt;</comment>
                    <comment id="30356" author="dnolen" created="Wed, 2 Jan 2013 09:17:25 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/f973b36cb02b3b797852859f2cc2a09356157cc4&quot;&gt;http://github.com/clojure/core.logic/commit/f973b36cb02b3b797852859f2cc2a09356157cc4&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11788" name="nominal-infd.diff" size="2246" author="namin" created="Wed, 2 Jan 2013 09:09:09 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-94] nominal, spurious nil</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-94</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(nth
    (run 2 [q]
      (nom/fresh [a0 a1]
        (redo* q `((~&apos;fn ~(nom/tie a0 a0)) (~&apos;fn ~(nom/tie a1 a1))))))
    1) ; =&amp;gt; ((fn  [a_0] (quote ((fn  [a_1] a_1) (fn  [a_2] a_2)))) nil)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15940">LOGIC-94</key>
            <summary>nominal, spurious nil</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="namin">Nada Amin</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 3 Jan 2013 18:47:35 -0600</created>
                <updated>Thu, 3 Jan 2013 18:51:49 -0600</updated>
                    <resolved>Thu, 3 Jan 2013 18:51:49 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30360" author="namin" created="Thu, 3 Jan 2013 18:51:08 -0600"  >&lt;p&gt;Oh, this is actually correct. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;br/&gt;
nil is a value in our mini-language, so this applies the first function to nil, but then doesn&apos;t use it, and just returns the requested result quoted.&lt;/p&gt;</comment>
                    <comment id="30361" author="namin" created="Thu, 3 Jan 2013 18:51:49 -0600"  >&lt;p&gt;Not a bug &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-97] disequality pruning</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-97</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Why we need disequality pruning in updatec:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
           (fresh [x y z]
             (!= x [y])
             (== x [z])
             (== y &apos;foo)
             (== z &apos;bar)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Instead of returning just &apos;(_0), this snippet returns &apos;((_0 :- (!= (&lt;span class=&quot;error&quot;&gt;&amp;#91;bar&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;foo&amp;#93;&lt;/span&gt;)))).&lt;/p&gt;</description>
                <environment></environment>
            <key id="15943">LOGIC-97</key>
            <summary>disequality pruning</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Fri, 4 Jan 2013 12:19:15 -0600</created>
                <updated>Fri, 4 Jan 2013 13:13:54 -0600</updated>
                    <resolved>Fri, 4 Jan 2013 13:13:54 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30367" author="namin" created="Fri, 4 Jan 2013 13:02:28 -0600"  >&lt;p&gt;Patch diseq-pruning.diff gives up on using updatec in favor of correctness. Test case incuded.&lt;/p&gt;</comment>
                    <comment id="30368" author="dnolen" created="Fri, 4 Jan 2013 13:13:54 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/0beb770dc0a072f0dcb888f0df2978a5632d92bf&quot;&gt;http://github.com/clojure/core.logic/commit/0beb770dc0a072f0dcb888f0df2978a5632d92bf&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11791" name="diseq-pruning.diff" size="1947" author="namin" created="Fri, 4 Jan 2013 13:02:28 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-101] nom/hash and variable noms</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-101</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;It would be nice if nom/hash handled variable noms:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (nom/fresh [x]
    (fresh [y]
      (nomo y)
      (nom/hash y x)
      (== x y)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This returns &apos;(_0) instead of (). Fortunately, a work-around is to use != instead of nom/hash when comparing two noms. However, it&apos;s bad that this silently does something unexpected.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15950">LOGIC-101</key>
            <summary>nom/hash and variable noms</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 7 Jan 2013 06:56:21 -0600</created>
                <updated>Mon, 7 Jan 2013 08:34:21 -0600</updated>
                    <resolved>Mon, 7 Jan 2013 08:34:21 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30385" author="namin" created="Mon, 7 Jan 2013 08:05:27 -0600"  >&lt;p&gt;logic-101.diff has workaround + test.&lt;/p&gt;</comment>
                    <comment id="30386" author="dnolen" created="Mon, 7 Jan 2013 08:34:21 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/770e027858bde711121abb9267854966a4dd92ed&quot;&gt;http://github.com/clojure/core.logic/commit/770e027858bde711121abb9267854966a4dd92ed&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11795" name="logic-101.diff" size="2579" author="namin" created="Mon, 7 Jan 2013 08:05:27 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-103] another non-termination case with CLP(FD)</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-103</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run 2 [q]
  (fresh [a b s p]
    (infd a b (interval 2 99))
    (&amp;lt;=fd b a)
    (+fd a b s)
    (*fd a b p)
    (== q [a b s p])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It&apos;s strange that we don&apos;t get the next possibility.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15955">LOGIC-103</key>
            <summary>another non-termination case with CLP(FD)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 10 Jan 2013 17:15:01 -0600</created>
                <updated>Thu, 10 Jan 2013 17:37:50 -0600</updated>
                    <resolved>Thu, 10 Jan 2013 17:37:50 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30417" author="dnolen" created="Thu, 10 Jan 2013 17:37:50 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/e882be8dce190873431d61aefe89a025ab9c0cb6&quot;&gt;http://github.com/clojure/core.logic/commit/e882be8dce190873431d61aefe89a025ab9c0cb6&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-104] -merge-doms for ::nom is not closed under composition</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-104</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (nom/fresh [a b c d]
    (fresh [x y z]
      (== (nom/tie a (nom/tie b y)) (nom/tie b (nom/tie a x)))
      (== (nom/tie c (nom/tie d x)) (nom/tie d (nom/tie c z)))
      (== x y)
      (== z x))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The snippet above fails with a no implementation of method -merge-doms for LazySeq, because -merge-doms for ::nom is implemented for vectors but returns a lazy seq, not a vector.&lt;/p&gt;

&lt;p&gt;The simplest fix is to change `concat` to `into` in the -merge-doms implementation of nominal.clj. However, while I am at it, I will replace the vector with a set, which makes more sense given how it&apos;s used anyways.&lt;/p&gt;

&lt;p&gt;Patch will be attached shortly.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15956">LOGIC-104</key>
            <summary>-merge-doms for ::nom is not closed under composition</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Fri, 11 Jan 2013 07:55:02 -0600</created>
                <updated>Fri, 11 Jan 2013 08:35:03 -0600</updated>
                    <resolved>Fri, 11 Jan 2013 08:35:03 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30418" author="namin" created="Fri, 11 Jan 2013 07:59:34 -0600"  >&lt;p&gt;Patch logic-104.diff contains improved ::nom dom representation and test for this bug.&lt;/p&gt;</comment>
                    <comment id="30419" author="dnolen" created="Fri, 11 Jan 2013 08:35:03 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/9f0f0c70b9d02cabe7ac1dd0d10106d84e7c3870&quot;&gt;http://github.com/clojure/core.logic/commit/9f0f0c70b9d02cabe7ac1dd0d10106d84e7c3870&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11801" name="logic-104.diff" size="2867" author="namin" created="Fri, 11 Jan 2013 07:59:34 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-98] nominal unification misses after-the-fact fd constraints</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-98</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Related to &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-92&quot;&gt;http://dev.clojure.org/jira/browse/LOGIC-92&lt;/a&gt;, these two snippets both return (nom/tie &apos;a_0 1) instead of three results for 1, 2, 3.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (nom/fresh [a b c]
    (fresh [x y]
      (== (nom/tie b (nom/tie a x)) (nom/tie c q))
      (infd x (interval 1 3)))))

(run* [q]
  (nom/fresh [a b c]
    (fresh [x y]
      (infd y (interval 1 3))
      (== (nom/tie b (nom/tie a x)) (nom/tie c q))
      (== x y))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15946">LOGIC-98</key>
            <summary>nominal unification misses after-the-fact fd constraints</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Sat, 5 Jan 2013 10:35:59 -0600</created>
                <updated>Fri, 11 Jan 2013 10:49:38 -0600</updated>
                    <resolved>Fri, 11 Jan 2013 10:49:38 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30406" author="namin" created="Tue, 8 Jan 2013 04:24:11 -0600"  >&lt;p&gt;logic-98.diff fixes this by forcing all nom-related vars at once.&lt;/p&gt;

&lt;p&gt;Do you have any ideas for separating the concern, so that force-ans doesn&apos;t need to know about ::nom?&lt;/p&gt;</comment>
                    <comment id="30407" author="dnolen" created="Tue, 8 Jan 2013 06:32:50 -0600"  >&lt;p&gt;Will need to think about this some more.&lt;/p&gt;</comment>
                    <comment id="30410" author="namin" created="Tue, 8 Jan 2013 14:33:10 -0600"  >&lt;p&gt;Ouch! Here is a snippet that doesn&apos;t do the right thing, even with the patch:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (nom/fresh [a b c d]
    (fresh [x y z]
      (== (nom/tie b (nom/tie a x)) (nom/tie c z))
      (infd x (interval 1 3))
      (== (nom/tie d q) z))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It returns only (1) instead of (1 2 3).&lt;/p&gt;</comment>
                    <comment id="30420" author="namin" created="Fri, 11 Jan 2013 10:07:06 -0600"  >&lt;p&gt;logic-98-nominal.diff is a solution that works for all three test cases above by simply making core.logic.nominal aware of ::fd and updating the doms when appropriate.&lt;/p&gt;</comment>
                    <comment id="30421" author="dnolen" created="Fri, 11 Jan 2013 10:49:38 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/ef27fa3ed2381f3ad4685d4bc59a298646a4febb&quot;&gt;http://github.com/clojure/core.logic/commit/ef27fa3ed2381f3ad4685d4bc59a298646a4febb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It would be nice if nominal didn&apos;t need to know about fd, as there will be other &quot;enumerable&quot; domains in the future. But this works great for now.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11798" name="logic-98.diff" size="3624" author="namin" created="Tue, 8 Jan 2013 04:24:11 -0600" />
                    <attachment id="11802" name="logic-98-nominal.diff" size="3643" author="namin" created="Fri, 11 Jan 2013 10:07:06 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-105] java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-105</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;When compiling this project &lt;a href=&quot;https://github.com/timowest/symbol&quot;&gt;https://github.com/timowest/symbol&lt;/a&gt; with the master version of core.logic I run into the following stacktrace&lt;/p&gt;

&lt;p&gt;Exception in thread &quot;main&quot; java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId, compiling:(clojure/core/logic.clj:177:5)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6566)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6321)&lt;br/&gt;
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2668)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6321)&lt;br/&gt;
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707)&lt;br/&gt;
	at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5138)&lt;br/&gt;
	at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3750)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6557)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6547)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.access$100(Compiler.java:37)&lt;br/&gt;
	at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:528)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6321)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6622)&lt;br/&gt;
	at clojure.lang.Compiler.load(Compiler.java:7062)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:361)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:352)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:431)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
	at clojure.core$load$fn__5039.invoke(core.clj:5520)&lt;br/&gt;
	at clojure.core$load.doInvoke(core.clj:5519)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at clojure.core$load_one.invoke(core.clj:5326)&lt;br/&gt;
	at clojure.core$load_lib$fn__4988.invoke(core.clj:5365)&lt;br/&gt;
	at clojure.core$load_lib.doInvoke(core.clj:5364)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:142)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$load_libs.doInvoke(core.clj:5403)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:621)&lt;br/&gt;
	at clojure.core$use.doInvoke(core.clj:5497)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:421)&lt;br/&gt;
	at symbol.types$eval75$loading_&lt;em&gt;4931&lt;/em&gt;&lt;em&gt;auto&lt;/em&gt;___76.invoke(types.clj:9)&lt;br/&gt;
	at symbol.types$eval75.invoke(types.clj:9)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6618)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6607)&lt;br/&gt;
	at clojure.lang.Compiler.load(Compiler.java:7062)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:361)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:352)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:431)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
	at clojure.core$load$fn__5039.invoke(core.clj:5520)&lt;br/&gt;
	at clojure.core$load.doInvoke(core.clj:5519)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at clojure.core$load_one.invoke(core.clj:5326)&lt;br/&gt;
	at clojure.core$load_lib$fn__4988.invoke(core.clj:5365)&lt;br/&gt;
	at clojure.core$load_lib.doInvoke(core.clj:5364)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:142)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$load_libs.doInvoke(core.clj:5403)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$require.doInvoke(core.clj:5486)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at symbol.includes_test$eval69$loading_&lt;em&gt;4931&lt;/em&gt;&lt;em&gt;auto&lt;/em&gt;___70.invoke(includes_test.clj:9)&lt;br/&gt;
	at symbol.includes_test$eval69.invoke(includes_test.clj:9)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6618)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6607)&lt;br/&gt;
	at clojure.lang.Compiler.load(Compiler.java:7062)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:361)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:352)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:431)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
	at clojure.core$load$fn__5039.invoke(core.clj:5520)&lt;br/&gt;
	at clojure.core$load.doInvoke(core.clj:5519)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at clojure.core$load_one.invoke(core.clj:5326)&lt;br/&gt;
	at clojure.core$load_lib$fn__4988.invoke(core.clj:5365)&lt;br/&gt;
	at clojure.core$load_lib.doInvoke(core.clj:5364)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:142)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$load_libs.doInvoke(core.clj:5403)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$require.doInvoke(core.clj:5486)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at user$eval29$fn__50.doInvoke(NO_SOURCE_FILE:1)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:617)&lt;br/&gt;
	at user$eval29.invoke(NO_SOURCE_FILE:1)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6618)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6608)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6581)&lt;br/&gt;
	at clojure.core$eval.invoke(core.clj:2852)&lt;br/&gt;
	at clojure.main$eval_opt.invoke(main.clj:300)&lt;br/&gt;
	at clojure.main$initialize.invoke(main.clj:319)&lt;br/&gt;
	at clojure.main$null_opt.invoke(main.clj:354)&lt;br/&gt;
	at clojure.main$main$fn__6676.invoke(main.clj:432)&lt;br/&gt;
	at clojure.main$main.doInvoke(main.clj:429)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:421)&lt;br/&gt;
	at clojure.lang.Var.invoke(Var.java:419)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:163)&lt;br/&gt;
	at clojure.lang.Var.applyTo(Var.java:532)&lt;br/&gt;
	at clojure.main.main(main.java:37)&lt;br/&gt;
Caused by: java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId&lt;br/&gt;
	at clojure.lang.Compiler$InvokeExpr.&amp;lt;init&amp;gt;(Compiler.java:3422)&lt;br/&gt;
	at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3629)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6561)&lt;br/&gt;
	... 99 more&lt;br/&gt;
Subprocess failed&lt;/p&gt;</description>
                <environment>java version &amp;quot;1.6.0_26&amp;quot;&lt;br/&gt;
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)&lt;br/&gt;
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)&lt;br/&gt;
&lt;br/&gt;
Ubtunu 12.04 - 32 bit</environment>
            <key id="15965">LOGIC-105</key>
            <summary>java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="timowest">Timo Westk&#228;mper</reporter>
                        <labels>
                    </labels>
                <created>Thu, 17 Jan 2013 15:15:50 -0600</created>
                <updated>Fri, 18 Jan 2013 09:53:51 -0600</updated>
                    <resolved>Fri, 18 Jan 2013 09:53:51 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30442" author="dnolen" created="Thu, 17 Jan 2013 15:20:43 -0600"  >&lt;p&gt;Can you try again with master? What do you mean by &quot;compiling&quot; the project? Are you AOT&apos;ing your project?&lt;/p&gt;</comment>
                    <comment id="30443" author="timowest" created="Thu, 17 Jan 2013 15:23:31 -0600"  >&lt;p&gt;Still the same issue. I am running &apos;lein midje&apos;.&lt;/p&gt;</comment>
                    <comment id="30444" author="dnolen" created="Thu, 17 Jan 2013 15:30:35 -0600"  >&lt;p&gt;So you are testing with Midje? Is there anyway to confirm that this issue exists if you take Midje out of the picture? Can you run the tests manually via the REPL?&lt;/p&gt;

&lt;p&gt;The error is very puzzling since I&apos;ve tested the inclusion of core.logic 0.8.0-rc2 with some other projects.&lt;/p&gt;</comment>
                    <comment id="30445" author="timowest" created="Thu, 17 Jan 2013 15:31:15 -0600"  >&lt;p&gt;Here is the new stacktrace &lt;/p&gt;

&lt;p&gt;Exception in thread &quot;main&quot; java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId, compiling:(clojure/core/logic.clj:169:5)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6566)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6321)&lt;br/&gt;
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2668)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6321)&lt;br/&gt;
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707)&lt;br/&gt;
	at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5138)&lt;br/&gt;
	at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3750)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6557)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6547)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.access$100(Compiler.java:37)&lt;br/&gt;
	at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:528)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6360)&lt;br/&gt;
	at clojure.lang.Compiler.analyze(Compiler.java:6321)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6622)&lt;br/&gt;
	at clojure.lang.Compiler.load(Compiler.java:7062)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:361)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:352)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:431)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
	at clojure.core$load$fn__5039.invoke(core.clj:5520)&lt;br/&gt;
	at clojure.core$load.doInvoke(core.clj:5519)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at clojure.core$load_one.invoke(core.clj:5326)&lt;br/&gt;
	at clojure.core$load_lib$fn__4988.invoke(core.clj:5365)&lt;br/&gt;
	at clojure.core$load_lib.doInvoke(core.clj:5364)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:142)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$load_libs.doInvoke(core.clj:5403)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:621)&lt;br/&gt;
	at clojure.core$use.doInvoke(core.clj:5497)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:421)&lt;br/&gt;
	at symbol.types$eval75$loading_&lt;em&gt;4931&lt;/em&gt;&lt;em&gt;auto&lt;/em&gt;___76.invoke(types.clj:9)&lt;br/&gt;
	at symbol.types$eval75.invoke(types.clj:9)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6618)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6607)&lt;br/&gt;
	at clojure.lang.Compiler.load(Compiler.java:7062)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:361)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:352)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:431)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
	at clojure.core$load$fn__5039.invoke(core.clj:5520)&lt;br/&gt;
	at clojure.core$load.doInvoke(core.clj:5519)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at clojure.core$load_one.invoke(core.clj:5326)&lt;br/&gt;
	at clojure.core$load_lib$fn__4988.invoke(core.clj:5365)&lt;br/&gt;
	at clojure.core$load_lib.doInvoke(core.clj:5364)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:142)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$load_libs.doInvoke(core.clj:5403)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$require.doInvoke(core.clj:5486)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at symbol.includes_test$eval69$loading_&lt;em&gt;4931&lt;/em&gt;&lt;em&gt;auto&lt;/em&gt;___70.invoke(includes_test.clj:9)&lt;br/&gt;
	at symbol.includes_test$eval69.invoke(includes_test.clj:9)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6618)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6607)&lt;br/&gt;
	at clojure.lang.Compiler.load(Compiler.java:7062)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:361)&lt;br/&gt;
	at clojure.lang.RT.loadResourceScript(RT.java:352)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:431)&lt;br/&gt;
	at clojure.lang.RT.load(RT.java:402)&lt;br/&gt;
	at clojure.core$load$fn__5039.invoke(core.clj:5520)&lt;br/&gt;
	at clojure.core$load.doInvoke(core.clj:5519)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at clojure.core$load_one.invoke(core.clj:5326)&lt;br/&gt;
	at clojure.core$load_lib$fn__4988.invoke(core.clj:5365)&lt;br/&gt;
	at clojure.core$load_lib.doInvoke(core.clj:5364)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:142)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$load_libs.doInvoke(core.clj:5403)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:619)&lt;br/&gt;
	at clojure.core$require.doInvoke(core.clj:5486)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:408)&lt;br/&gt;
	at user$eval29$fn__50.doInvoke(NO_SOURCE_FILE:1)&lt;br/&gt;
	at clojure.lang.RestFn.applyTo(RestFn.java:137)&lt;br/&gt;
	at clojure.core$apply.invoke(core.clj:617)&lt;br/&gt;
	at user$eval29.invoke(NO_SOURCE_FILE:1)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6618)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6608)&lt;br/&gt;
	at clojure.lang.Compiler.eval(Compiler.java:6581)&lt;br/&gt;
	at clojure.core$eval.invoke(core.clj:2852)&lt;br/&gt;
	at clojure.main$eval_opt.invoke(main.clj:300)&lt;br/&gt;
	at clojure.main$initialize.invoke(main.clj:319)&lt;br/&gt;
	at clojure.main$null_opt.invoke(main.clj:354)&lt;br/&gt;
	at clojure.main$main$fn__6676.invoke(main.clj:432)&lt;br/&gt;
	at clojure.main$main.doInvoke(main.clj:429)&lt;br/&gt;
	at clojure.lang.RestFn.invoke(RestFn.java:421)&lt;br/&gt;
	at clojure.lang.Var.invoke(Var.java:419)&lt;br/&gt;
	at clojure.lang.AFn.applyToHelper(AFn.java:163)&lt;br/&gt;
	at clojure.lang.Var.applyTo(Var.java:532)&lt;br/&gt;
	at clojure.main.main(main.java:37)&lt;br/&gt;
Caused by: java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId&lt;br/&gt;
	at clojure.lang.Compiler$InvokeExpr.&amp;lt;init&amp;gt;(Compiler.java:3422)&lt;br/&gt;
	at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3629)&lt;br/&gt;
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6561)&lt;br/&gt;
	... 99 more&lt;br/&gt;
Subprocess failed&lt;/p&gt;</comment>
                    <comment id="30446" author="timowest" created="Thu, 17 Jan 2013 15:32:12 -0600"  >&lt;p&gt;Yes, same via repl&lt;/p&gt;

&lt;p&gt;tiwe@tiwe:~/work/workspace/symbol$ lein repl&lt;br/&gt;
nREPL server started on port 55271&lt;br/&gt;
REPL-y 0.1.0-beta10&lt;br/&gt;
Clojure 1.5.0-RC2&lt;br/&gt;
    Exit: Control+D or (exit) or (quit)&lt;br/&gt;
Commands: (user/help)&lt;br/&gt;
    Docs: (doc function-name-here)&lt;br/&gt;
          (find-doc &quot;part-of-name-here&quot;)&lt;br/&gt;
  Source: (source function-name-here)&lt;br/&gt;
          (user/sourcery function-name-here)&lt;br/&gt;
 Javadoc: (javadoc java-object-or-class-here)&lt;br/&gt;
Examples from clojuredocs.org: &lt;span class=&quot;error&quot;&gt;&amp;#91;clojuredocs or cdoc&amp;#93;&lt;/span&gt;&lt;br/&gt;
          (user/clojuredocs name-here)&lt;br/&gt;
          (user/clojuredocs &quot;ns-here&quot; &quot;name-here&quot;)&lt;br/&gt;
CompilerException java.lang.IllegalArgumentException: No single method: _id of interface: clojure.core.logic.IConstraintId found for function: -id of protocol: IConstraintId, compiling:(clojure/core/logic.clj:169:5) &lt;br/&gt;
reply.eval-modes.nrepl=&amp;gt; &lt;/p&gt;</comment>
                    <comment id="30447" author="dnolen" created="Thu, 17 Jan 2013 15:41:28 -0600"  >&lt;p&gt;OK, I just cloned your repo and switched the dependencies to Clojure 1.5.0-RC2 and core.logic 0.8.0-rc2. I can run lein repl without a hitch. While it&apos;s a bit obnoxious have you tried blowing away your maven cache and trying again? Perhaps there are other changes that aren&apos;t in your master branch on GitHub?&lt;/p&gt;</comment>
                    <comment id="30448" author="timowest" created="Thu, 17 Jan 2013 15:51:15 -0600"  >&lt;p&gt;Yes, sorry, I forgot to push some changes. Could you pull and try again?&lt;/p&gt;</comment>
                    <comment id="30449" author="dnolen" created="Thu, 17 Jan 2013 15:55:36 -0600"  >&lt;p&gt;I still cannot reproduce after pulling from master. I note that your repl prompt looks a bit different from mine however - &quot;reply.eval-modes.nrepl=&amp;gt;&quot;, whereas I have &quot;symbol.main=&amp;gt;&quot;&lt;/p&gt;</comment>
                    <comment id="30450" author="timowest" created="Fri, 18 Jan 2013 02:41:25 -0600"  >&lt;p&gt;It looks like this was caused by a too old version of clojure on my machine. I didn&apos;t realize lein uses the clojure version I have installed on Ubuntu for compilation instead of the version mentioned in project.clj.&lt;/p&gt;</comment>
                    <comment id="30453" author="dnolen" created="Fri, 18 Jan 2013 09:53:51 -0600"  >&lt;p&gt;Thanks for the update, closing this one!&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-106] cannot use fresh/conde in the invoke of a constraint</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-106</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This means that we cannot really emulate modes with constraints. The problem is related to -inc.&lt;/p&gt;

&lt;p&gt;An easy way to try it out is to have a dummy fresh goal in predc and see the failing tests.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;@@ -2932,7 +2932,7 @@
        (invoke [this a]
          (let [x (walk a x)]
            (when (p x)
-             ((remcg this) a))))
+             (bind* a (fresh [y] (== x x)) (remcg this)))))
        IConstraintOp
        (rator [_] (if (seq? pform)
                     `(predc ~pform)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15970">LOGIC-106</key>
            <summary>cannot use fresh/conde in the invoke of a constraint</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Sun, 20 Jan 2013 19:42:57 -0600</created>
                <updated>Mon, 21 Jan 2013 11:56:41 -0600</updated>
                    <resolved>Mon, 21 Jan 2013 11:56:41 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30464" author="dnolen" created="Sun, 20 Jan 2013 19:55:31 -0600"  >&lt;p&gt;Sorry I didn&apos;t mean to suggest this approach. In general you cannot put search related operators into a constraint. In fact I think we should replace any instances of bind* and bind in constraint logic as they really are a part of the search infrastructure and I&apos;d like them to become implementation details of a particular search approach.&lt;/p&gt;

&lt;p&gt;Instead I meant to suggest that the disjunction expressed by your example&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run 1 [re]
  (forall [s o]
    (conde
      [(== s &apos;(foo bar bar bar))
       (== o regex-BLANK)]
      [(!= s &apos;(foo bar bar bar))
       (== o regex-NULL)])
    (regex-matcho re s o)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Is perhaps best described as an explicit constraint something more like:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn regexc [s o]
  (reify
    IFn
    (invoke [c a]
      (let [s (walk* a)[
        (&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (= s &apos;(foo bar bar bar))
          ((== o regex-BLANK) a)
          ((== o regex-NULL) a)))))
    ...
    IRunnable
    (runnable? [c a]
      (ground-terms? x))
    ...))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Of course someone might want to write constraint like this quite often, then I think it&apos;s question of what the best way to support that might be.&lt;/p&gt;</comment>
                    <comment id="30468" author="dnolen" created="Mon, 21 Jan 2013 11:56:41 -0600"  >&lt;p&gt;No plans to add support for search operators in constraints in the near future.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-109] custom defc constraint does not run</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-109</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I have a custom constrain defined using defc, it looks like &lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defc string-containsc [x y]
  (and (string? x)
       (.contains x y)))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I have a little core.logic program&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defn t []
  (logic/run* [q]
    (c/string-containsc q &quot;foo&quot;)
    (logic/== q 1)))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;the result of calling t is (1)&lt;/p&gt;

&lt;p&gt;if I change the order of the goals:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defn t []
  (logic/run* [q]
    (logic/== q 1)
    (c/string-containsc q &quot;foo&quot;)))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;the result of (t) is ()&lt;/p&gt;
</description>
                <environment></environment>
            <key id="15980">LOGIC-109</key>
            <summary>custom defc constraint does not run</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Mon, 28 Jan 2013 20:09:54 -0600</created>
                <updated>Tue, 29 Jan 2013 11:26:59 -0600</updated>
                    <resolved>Tue, 29 Jan 2013 11:26:59 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30504" author="dnolen" created="Mon, 28 Jan 2013 22:50:24 -0600"  >&lt;p&gt;Possible fix in master, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/c0a5ea982624c9e9af869be0b653bf83f60de062&quot;&gt;http://github.com/clojure/core.logic/commit/c0a5ea982624c9e9af869be0b653bf83f60de062&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Does this work for you?&lt;/p&gt;</comment>
                    <comment id="30505" author="hiredman" created="Tue, 29 Jan 2013 11:07:32 -0600"  >&lt;p&gt;yep, thanks&lt;/p&gt;</comment>
                    <comment id="30506" author="dnolen" created="Tue, 29 Jan 2013 11:26:59 -0600"  >&lt;p&gt;fixed&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-111] conda expression that no longer works in rc2</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-111</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [x]
  (conda 
    [succeed
      (project [x] succeed)
      (project [x] succeed)]))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is issue was reported by the damp.ekeko developers.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15989">LOGIC-111</key>
            <summary>conda expression that no longer works in rc2</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Mon, 4 Feb 2013 13:07:38 -0600</created>
                <updated>Wed, 13 Feb 2013 14:56:48 -0600</updated>
                    <resolved>Wed, 13 Feb 2013 14:56:48 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30590" author="dnolen" created="Wed, 13 Feb 2013 14:56:48 -0600"  >&lt;p&gt;I&apos;m surprised this one has gone unnoticed for so long, both conda and condu implementation were incorrect for the unit case. Fixed in master: &lt;a href=&quot;http://github.com/clojure/core.logic/commit/1d1724bc66b344551619c32331393a811fe7714a&quot;&gt;http://github.com/clojure/core.logic/commit/1d1724bc66b344551619c32331393a811fe7714a&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-113] A conde clause that beings with a fresh expression will initially fail</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-113</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(ns test                                                                                                                                                                          
  (:refer-clojure :exclude [==])                                                                                                                                                  
  (:require                                                                                                                                                                       
   [clojure.core.logic :refer :all]))                                                                                                                                             

;; This expression should evaluate to &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;, but it does not, 
;; because the second run* returns (2 1) instead of (1 2).
                                                                                                                                                                                  
(= (run* [q]                                                                                                                                                                      
     (conde                                                                                                                                                                       
       [(== q 1)]                                                                                                                                                                 
       [(== q 2)]))                                                                                                                                                               
   (run* [q]                                                                                                                                                                      
     (conde                                                                                                                                                                       
       [(fresh [a] (== q 1))]                                                                                                                                                     
       [(== q 2)])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>tested against HEAD (0.8.0-rc3-SNAPSHOT) and CLJ 1.5.0-RC15</environment>
            <key id="16009">LOGIC-113</key>
            <summary>A conde clause that beings with a fresh expression will initially fail</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="austinhaas">Austin Haas</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Feb 2013 23:49:43 -0600</created>
                <updated>Fri, 15 Feb 2013 12:49:03 -0600</updated>
                    <resolved>Fri, 15 Feb 2013 12:49:03 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30592" author="dnolen" created="Thu, 14 Feb 2013 00:13:16 -0600"  >&lt;p&gt;This is not an error. No promises are made about the order of results. If you want need to verify that two runs are the same it&apos;s best to put the results into a set - we actually do this in the tests now.&lt;/p&gt;</comment>
                    <comment id="30593" author="austinhaas" created="Thu, 14 Feb 2013 01:14:19 -0600"  >
&lt;p&gt;Shouldn&apos;t the programmer be able to reason about the order that the clauses will be tried? That&apos;s one way to direct the search and I know at least one example in TRS highlights that aspect--in Ch. 5, unwrapo is re-written to push the recursive call down, otherwise it diverges. How could you know that goal will terminate if you can&apos;t reason about the order of the clauses? I assume it is much more difficult to write exclusively non-overlapping clauses.&lt;/p&gt;

&lt;p&gt;Likewise, shouldn&apos;t the programmer be able to design a logic program so that it produces a predictable first result?&lt;/p&gt;

&lt;p&gt;This is all very new to me, so please forgive me if I&apos;m way off.&lt;/p&gt;</comment>
                    <comment id="30596" author="dnolen" created="Thu, 14 Feb 2013 08:57:45 -0600"  >&lt;p&gt;miniKanren makes no promises about order anymore, Will actually talks about this in his dissertation. It&apos;s part of the design and leaves the door wide open for concurrent search when we get there.&lt;/p&gt;

&lt;p&gt;Even so, I do understand there are cases where the programmer might want more control than is provided by the default behavior. Customizable search is on the roadmap.&lt;/p&gt;

&lt;p&gt;But the current default behavior is expected and unlikely to change.&lt;/p&gt;</comment>
                    <comment id="30609" author="dnolen" created="Fri, 15 Feb 2013 12:49:03 -0600"  >&lt;p&gt;Not a bug.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-115] fd/interval with (== lb ub) fails</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-115</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Test case:&lt;/p&gt;

&lt;p&gt;(run* &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt; (fd/in q (fd/interval 3 3)))&lt;/p&gt;</description>
                <environment></environment>
            <key id="16018">LOGIC-115</key>
            <summary>fd/interval with (== lb ub) fails</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="bendlas">Herwig Hochleitner</reporter>
                        <labels>
                    </labels>
                <created>Tue, 19 Feb 2013 10:12:12 -0600</created>
                <updated>Tue, 19 Feb 2013 19:38:54 -0600</updated>
                    <resolved>Tue, 19 Feb 2013 19:38:54 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30622" author="dnolen" created="Tue, 19 Feb 2013 19:38:54 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/83e9cdb4247893ef0a8dbdefe61aebdca0163dbf&quot;&gt;http://github.com/clojure/core.logic/commit/83e9cdb4247893ef0a8dbdefe61aebdca0163dbf&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-102] generalize the notion of hash for robustness</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-102</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The second nom/hash throws an exception, because the nom/hash constraint is ran before the predc one.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(is (= (run* [q]
         (nom/fresh [x]
           (fresh [y]
             (predc y nom? `nom?)
             (nom/hash y x)
             (== y &apos;foo))))
      ()))

(is (= (run* [q]
         (nom/fresh [x]
           (fresh [y]
             (nom/hash y x)
             (predc y nom? `nom?)
             (== y &apos;foo))))
      ()))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Perhaps, we can generalize the notion of hash.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15951">LOGIC-102</key>
            <summary>generalize the notion of hash for robustness</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 7 Jan 2013 09:47:24 -0600</created>
                <updated>Mon, 11 Mar 2013 12:30:03 -0500</updated>
                    <resolved>Mon, 7 Jan 2013 19:06:02 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30391" author="dnolen" created="Mon, 7 Jan 2013 10:52:23 -0600"  >&lt;p&gt;Hmm but why throw in nom/hash like that instead of just failing?&lt;/p&gt;</comment>
                    <comment id="30393" author="dnolen" created="Mon, 7 Jan 2013 10:59:47 -0600"  >&lt;p&gt;Closed wrong ticket&lt;/p&gt;</comment>
                    <comment id="30395" author="namin" created="Mon, 7 Jan 2013 11:11:28 -0600"  >&lt;p&gt;ok, seems reasonable to fail.&lt;/p&gt;

&lt;p&gt;The fix to logic-101 is not entirely satisfactory, because we can now get constraints like _1#&lt;span class=&quot;error&quot;&gt;&amp;#91;_1&amp;#93;&lt;/span&gt;. so i think i also want to not use predc (but still use fixc), but have a custom constraint instead of the predc that takes the two rands into account.&lt;/p&gt;

&lt;p&gt;implementing this now.&lt;/p&gt;</comment>
                    <comment id="30397" author="namin" created="Mon, 7 Jan 2013 12:39:08 -0600"  >&lt;p&gt;The patch logic-102.diff gives up on predc and fixc, and instead does a lot of ugly special-casing to cover the new TDD test cases.&lt;/p&gt;

&lt;p&gt;Not too happy about this change...&lt;/p&gt;</comment>
                    <comment id="30398" author="dnolen" created="Mon, 7 Jan 2013 13:23:55 -0600"  >&lt;p&gt;Is there something we could do to make it easier to rely on `fixc` and `predc`? Or is there some lacking feature of constraints?&lt;/p&gt;</comment>
                    <comment id="30399" author="dnolen" created="Mon, 7 Jan 2013 13:52:23 -0600"  >&lt;p&gt;Also if you&apos;re OK w/ this patch, more than happy to move forward w/ this for now and it can be improved later.&lt;/p&gt;</comment>
                    <comment id="30400" author="namin" created="Mon, 7 Jan 2013 14:38:24 -0600"  >&lt;p&gt;OK, as discussed, please go ahead with the patch, and I&apos;ll think of some alternatives / refactoring soon.&lt;/p&gt;</comment>
                    <comment id="30405" author="dnolen" created="Mon, 7 Jan 2013 19:06:02 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/417246ad0d854f9f82ae3b5aeb566ea00249eb2c&quot;&gt;http://github.com/clojure/core.logic/commit/417246ad0d854f9f82ae3b5aeb566ea00249eb2c&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30408" author="namin" created="Tue, 8 Jan 2013 07:04:05 -0600"  >&lt;p&gt;refactoring.diff refactors the logic a bit. Hopefully it&apos;s more readable.&lt;/p&gt;

&lt;p&gt;For now, it seems too much trouble for the gain to generalize hash or try to write it using more primitive constraints.&lt;/p&gt;</comment>
                    <comment id="30409" author="dnolen" created="Tue, 8 Jan 2013 07:12:15 -0600"  >&lt;p&gt;Makes sense will apply later today.&lt;/p&gt;</comment>
                    <comment id="30730" author="namin" created="Mon, 11 Mar 2013 12:27:10 -0500"  >&lt;p&gt;I am going to apply the refactoring to master. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                    <comment id="30731" author="namin" created="Mon, 11 Mar 2013 12:30:03 -0500"  >&lt;p&gt;Applied in &lt;a href=&quot;https://github.com/clojure/core.logic/commit/43d325bd8e3770f3483cc8be7d332adfae3a6a96&quot;&gt;https://github.com/clojure/core.logic/commit/43d325bd8e3770f3483cc8be7d332adfae3a6a96&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11797" name="logic-102.diff" size="5320" author="namin" created="Mon, 7 Jan 2013 12:39:08 -0600" />
                    <attachment id="11799" name="refactoring.diff" size="2171" author="namin" created="Tue, 8 Jan 2013 07:04:05 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-112] Incorrect results with tabled resolution</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-112</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;We (authors of damp.qwal and damp.ekeko) are trying to track the cause of some indeterminism with respect to the solutions to a path query over a control flow graph.  To this end, we wrote a small test case that mimics the qwal part of the query. This test case works under core.logic 0.7.5, but exhibits incorrect behavior in the latest release.&lt;/p&gt;

&lt;p&gt;The test case illustrates two problems:&lt;br/&gt;
First, the solutions to two logically equivalent path queries return differ. The query that uses predicate test-2 returns the correct amount of solutions (4 nodes encountered on the single path through a graph).&lt;br/&gt;
The query that uses predicate test-1 returns just 2 nodes.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;damp.tabling-test&amp;gt; (test-1)
(:baz :quux)
damp.tabling-test&amp;gt; (test-2)
(:foo :bar :baz :quux)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Both queries skip an arbitrary number of nodes (using patho), capture a node to obtain a solution (through unification), and skip an arbitrary number of nodes.&lt;br/&gt;
The predicates only differ in the last step: either this is achieved by including &apos;patho&apos; as the last element in the last that is passed to solve-goals, or by calling &apos;patho&apos; separately after the call to solve-goals. Logic-wise, both queries should be equivalent. Note that omitting &apos;tabled&apos; from the definition of &apos;patho&apos; causes the tests to behave as expected.&lt;/p&gt;

&lt;p&gt;Second, we encountered a minor issue concerning the number of results returned by the faulty query. This &lt;em&gt;sometimes&lt;/em&gt; changes when the file is recompiled.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;damp.tabling-test&amp;gt; (test-1)
(:quux)
;;recompile
damp.tabling-test&amp;gt; (test-1)
(:baz :quux)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;More comments can be found in the code for the test case that is attached.&lt;/p&gt;</description>
                <environment>org.clojure/clojure &amp;quot;1.3.0&amp;quot;&lt;br/&gt;
org.clojure/core.logic &amp;quot;0.8.0-rc2&amp;quot;</environment>
            <key id="15991">LOGIC-112</key>
            <summary>Incorrect results with tabled resolution</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="resteven">Reinout Stevens</reporter>
                        <labels>
                    </labels>
                <created>Tue, 5 Feb 2013 09:30:04 -0600</created>
                <updated>Wed, 13 Mar 2013 08:51:19 -0500</updated>
                    <resolved>Wed, 13 Mar 2013 08:51:19 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="30591" author="dnolen" created="Wed, 13 Feb 2013 15:10:23 -0600"  >&lt;p&gt;Ok, I&apos;ve confirmed the issue. Will look into it.&lt;/p&gt;</comment>
                    <comment id="30725" author="dnolen" created="Mon, 11 Mar 2013 08:37:54 -0500"  >&lt;p&gt;I believe I have found the issue as well as the source of the nondeterminism. When we switched to sets away from lists for the cache I didn&apos;t fully think through the implications. The nondeterminism arises from the use of sets. We actually want a hybrid cache datatype that works like a list but can efficiently check for the existence of a cached answer w/o scanning the list.&lt;/p&gt;</comment>
                    <comment id="30756" author="dnolen" created="Wed, 13 Mar 2013 08:51:19 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/53cbfca4b7062e09d7c7ff43fccec70e46d36ea1&quot;&gt;http://github.com/clojure/core.logic/commit/53cbfca4b7062e09d7c7ff43fccec70e46d36ea1&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11836" name="tabling-test.clj" size="3988" author="resteven" created="Tue, 5 Feb 2013 09:30:04 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10000">None</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-122] Subpattern {?x (?y ?y)} fails to unify</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-122</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This expression should unify but doesn&apos;t:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(unify {:as &apos;{?x (?y ?y)}} &apos;[[?y ?x] [1 (1 1)]])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="16091">LOGIC-122</key>
            <summary>Subpattern {?x (?y ?y)} fails to unify</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jonase">Jonas Enlund</reporter>
                        <labels>
                    </labels>
                <created>Fri, 15 Mar 2013 15:33:58 -0500</created>
                <updated>Sun, 17 Mar 2013 11:39:25 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 11:39:25 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30769" author="jonase" created="Sat, 16 Mar 2013 02:35:50 -0500"  >&lt;p&gt;The patch &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-122&quot; title=&quot;Subpattern {?x (?y ?y)} fails to unify&quot;&gt;&lt;del&gt;LOGIC-122&lt;/del&gt;&lt;/a&gt;.diff includes patches for &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-120&quot; title=&quot;(unify &amp;#39;[?x 1]) throws IllegalArgumentException&quot;&gt;&lt;del&gt;LOGIC-120&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-121&quot; title=&quot;Unifier fails on some nested forms&quot;&gt;&lt;del&gt;LOGIC-121&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="30770" author="dnolen" created="Sat, 16 Mar 2013 09:18:21 -0500"  >&lt;p&gt;So unless I&apos;m mistaken I only need to apply this patch to address the three tickets correct?&lt;/p&gt;</comment>
                    <comment id="30771" author="jonase" created="Sat, 16 Mar 2013 09:56:40 -0500"  >&lt;p&gt;Correct. This patch fixes &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-120&quot; title=&quot;(unify &amp;#39;[?x 1]) throws IllegalArgumentException&quot;&gt;&lt;del&gt;LOGIC-120&lt;/del&gt;&lt;/a&gt; 121 and 122. The patch for &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-118&quot; title=&quot;prep does not make lvar of ?x if ?x is in a vector&quot;&gt;LOGIC-118&lt;/a&gt; is not included in these commits. Do you want tests in a seperate ticket/patch?&lt;/p&gt;</comment>
                    <comment id="30772" author="dnolen" created="Sat, 16 Mar 2013 10:50:43 -0500"  >&lt;p&gt;I would actually prefer a squashed patch that includes the tests. Thanks. It makes sense to deal with &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-118&quot; title=&quot;prep does not make lvar of ?x if ?x is in a vector&quot;&gt;LOGIC-118&lt;/a&gt; separately, can we make sure we have tests there as well? Thanks!&lt;/p&gt;</comment>
                    <comment id="30773" author="jonase" created="Sat, 16 Mar 2013 11:07:53 -0500"  >&lt;p&gt;Use &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-120&quot; title=&quot;(unify &amp;#39;[?x 1]) throws IllegalArgumentException&quot;&gt;&lt;del&gt;LOGIC-120&lt;/del&gt;&lt;/a&gt;-121-122-squashed.diff. It includes the tests.&lt;/p&gt;</comment>
                    <comment id="30776" author="dnolen" created="Sun, 17 Mar 2013 11:39:25 -0500"  >&lt;p&gt;fixed &lt;a href=&quot;http://github.com/clojure/core.logic/commit/2bf23fd1ea64966bae094c9f634dfb21ddd386d1&quot;&gt;http://github.com/clojure/core.logic/commit/2bf23fd1ea64966bae094c9f634dfb21ddd386d1&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11919" name="LOGIC-120-121-122-squashed.diff" size="3936" author="jonase" created="Sat, 16 Mar 2013 11:07:53 -0500" />
                    <attachment id="11918" name="LOGIC-122.diff" size="3688" author="jonase" created="Sat, 16 Mar 2013 02:35:50 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-121] Unifier fails on some nested forms</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-121</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The expression&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(unifier &apos;[((?x ?y)) ((1 2))])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;returns the (invalid) result {?x 1}. Note that unify works as expected:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(unify &apos;[((?x ?y)) ((1 2))])
=&amp;gt; ((1 2))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="16087">LOGIC-121</key>
            <summary>Unifier fails on some nested forms</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jonase">Jonas Enlund</reporter>
                        <labels>
                    </labels>
                <created>Thu, 14 Mar 2013 11:56:30 -0500</created>
                <updated>Sun, 17 Mar 2013 11:39:47 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 11:39:47 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30777" author="dnolen" created="Sun, 17 Mar 2013 11:39:47 -0500"  >&lt;p&gt;patch applied from &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-122&quot; title=&quot;Subpattern {?x (?y ?y)} fails to unify&quot;&gt;&lt;del&gt;LOGIC-122&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/2bf23fd1ea64966bae094c9f634dfb21ddd386d1&quot;&gt;http://github.com/clojure/core.logic/commit/2bf23fd1ea64966bae094c9f634dfb21ddd386d1&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11916" name="LOGIC-121.diff" size="883" author="jonase" created="Sat, 16 Mar 2013 01:31:02 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-120] (unify &apos;[?x 1]) throws IllegalArgumentException</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-120</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The following two expressions throws IllegalArgumentException Don&apos;t know how to create ISeq from: java.lang.Long:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(unify &apos;[?x 1])

(unifier &apos;[?x 1])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The same thing happens for any non-sequential form. &lt;/p&gt;</description>
                <environment></environment>
            <key id="16086">LOGIC-120</key>
            <summary>(unify &apos;[?x 1]) throws IllegalArgumentException</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jonase">Jonas Enlund</reporter>
                        <labels>
                    </labels>
                <created>Thu, 14 Mar 2013 11:53:10 -0500</created>
                <updated>Sun, 17 Mar 2013 11:40:06 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 11:40:06 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30768" author="jonase" created="Sat, 16 Mar 2013 02:06:19 -0500"  >&lt;p&gt;The patch &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-120&quot; title=&quot;(unify &amp;#39;[?x 1]) throws IllegalArgumentException&quot;&gt;&lt;del&gt;LOGIC-120&lt;/del&gt;&lt;/a&gt;.diff also incorporates the patch I submitted for &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-121&quot; title=&quot;Unifier fails on some nested forms&quot;&gt;&lt;del&gt;LOGIC-121&lt;/del&gt;&lt;/a&gt; as the approach taken doesn&apos;t work without that issue fixed.&lt;/p&gt;</comment>
                    <comment id="30778" author="dnolen" created="Sun, 17 Mar 2013 11:40:06 -0500"  >&lt;p&gt;Patch applied from &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-122&quot; title=&quot;Subpattern {?x (?y ?y)} fails to unify&quot;&gt;&lt;del&gt;LOGIC-122&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;fixed,&lt;br/&gt;
&lt;a href=&quot;http://github.com/clojure/core.logic/commit/2bf23fd1ea64966bae094c9f634dfb21ddd386d1&quot;&gt;http://github.com/clojure/core.logic/commit/2bf23fd1ea64966bae094c9f634dfb21ddd386d1&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11917" name="LOGIC-120.diff" size="2196" author="jonase" created="Sat, 16 Mar 2013 02:06:19 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-116] ClassCastException in core.logic depending on ordering</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-116</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I have two files:&lt;br/&gt;
1 -&lt;a href=&quot;https://github.com/m0smith/LogicPuzzles/blob/master/src/logicpuzzles/coresucceed.clj&quot;&gt;https://github.com/m0smith/LogicPuzzles/blob/master/src/logicpuzzles/coresucceed.clj&lt;/a&gt;&lt;br/&gt;
2 -&lt;a href=&quot;https://github.com/m0smith/LogicPuzzles/blob/master/src/logicpuzzles/corefail.clj&quot;&gt;https://github.com/m0smith/LogicPuzzles/blob/master/src/logicpuzzles/corefail.clj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first one compiles and runs fine.  The second throws a ClassCastException.  The only difference is that rule-0 is moved in the second file.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16067">LOGIC-116</key>
            <summary>ClassCastException in core.logic depending on ordering</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="m0smith">Matthew O. Smith</reporter>
                        <labels>
                        <label>0.8.0</label>
                        <label>bug</label>
                    </labels>
                <created>Fri, 8 Mar 2013 13:47:44 -0600</created>
                <updated>Sun, 17 Mar 2013 18:29:49 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 18:29:49 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30724" author="dnolen" created="Mon, 11 Mar 2013 07:40:03 -0500"  >&lt;p&gt;There&apos;s far too much context here. Do you have a minimal case? Thanks much!&lt;/p&gt;</comment>
                    <comment id="30726" author="m0smith" created="Mon, 11 Mar 2013 09:15:57 -0500"  >&lt;p&gt;Here is the stack trace.  I will try to narrow it down further.&lt;/p&gt;

&lt;p&gt;java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to clojure.lang.IPersistentSet&lt;br/&gt;
 at clojure.core$disj.invoke (core.clj:1420)&lt;br/&gt;
    clojure.core.logic.ConstraintStore/fn (logic.clj:339)&lt;br/&gt;
    clojure.lang.ArrayChunk.reduce (ArrayChunk.java:58)&lt;br/&gt;
    clojure.core.protocols/fn (protocols.clj:94)&lt;br/&gt;
    clojure.core.protocols$fn_&lt;em&gt;5854$G&lt;/em&gt;&lt;em&gt;5849&lt;/em&gt;_5863.invoke (protocols.clj:19)&lt;br/&gt;
    clojure.core.protocols$seq_reduce.invoke (protocols.clj:31)&lt;br/&gt;
    clojure.core.protocols/fn (protocols.clj:60)&lt;br/&gt;
    clojure.core.protocols$fn_&lt;em&gt;5828$G&lt;/em&gt;&lt;em&gt;5823&lt;/em&gt;_5841.invoke (protocols.clj:13)&lt;br/&gt;
    clojure.core$reduce.invoke (core.clj:6030)&lt;br/&gt;
    clojure.core.logic.ConstraintStore.remc (logic.clj:338)&lt;br/&gt;
    clojure.core.logic$remcg$fn__3272.invoke (logic.clj:2374)&lt;br/&gt;
    clojure.core.logic$&lt;em&gt;BANG$reify&lt;/em&gt;_3422.invoke (logic.clj:2719)&lt;br/&gt;
    clojure.core.logic$composeg$fn__2569.invoke (logic.clj:1141)&lt;br/&gt;
    clojure.core.logic$composeg$fn__2569.invoke (logic.clj:1142)&lt;br/&gt;
    clojure.core.logic$run_constraint$fn__3285.invoke (logic.clj:2397)&lt;br/&gt;
    clojure.core.logic$fix_constraints.invoke (logic.clj:2424)&lt;br/&gt;
    clojure.core.logic$run_constraints$fn__3290.invoke (logic.clj:2434)&lt;br/&gt;
    clojure.core.logic.Substitutions.bind (logic.clj:612)&lt;br/&gt;
    clojure.core.logic$run_constraints_STAR_$fn__3296.invoke (logic.clj:2444)&lt;br/&gt;
    clojure.core.logic.Substitutions.bind (logic.clj:612)&lt;br/&gt;
    clojure.core.logic$run_constraints_STAR_$fn__3296.invoke (logic.clj:2446)&lt;br/&gt;
    clojure.core.logic$&lt;em&gt;EQ&lt;/em&gt;&lt;em&gt;EQ&lt;/em&gt;$fn__2647.invoke (logic.clj:1255)&lt;br/&gt;
    clojure.core.logic.Substitutions.bind (logic.clj:612)&lt;br/&gt;
    clojure.core.logic$rembero$fn_&lt;em&gt;3465$_inc&lt;/em&gt;&lt;em&gt;3466$fn&lt;/em&gt;&lt;em&gt;3475$fn&lt;/em&gt;&lt;em&gt;3476$_inc&lt;/em&gt;&lt;em&gt;3477$fn&lt;/em&gt;&lt;em&gt;3478$_inc&lt;/em&gt;_3479.invoke (logic.clj:2790)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2633$_inc&lt;/em&gt;_2634.invoke (logic.clj:1223)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2633$_inc&lt;/em&gt;_2634.invoke (logic.clj:1223)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2637$_inc&lt;/em&gt;_2638.invoke (logic.clj:1220)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2633$_inc&lt;/em&gt;_2634.invoke (logic.clj:1223)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2633$_inc&lt;/em&gt;_2634.invoke (logic.clj:1223)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2633$_inc&lt;/em&gt;_2634.invoke (logic.clj:1223)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2637$_inc&lt;/em&gt;_2638.invoke (logic.clj:1220)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2633$_inc&lt;/em&gt;_2634.invoke (logic.clj:1223)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2637$_inc&lt;/em&gt;_2638.invoke (logic.clj:1220)&lt;br/&gt;
    clojure.core.logic$eval2628$fn_&lt;em&gt;2629$fn&lt;/em&gt;_2630.invoke (logic.clj:1225)&lt;br/&gt;
    clojure.lang.LazySeq.sval (LazySeq.java:42)&lt;br/&gt;
    clojure.lang.LazySeq.seq (LazySeq.java:67)&lt;br/&gt;
    clojure.lang.RT.seq (RT.java:473)&lt;br/&gt;
    clojure.core$seq.invoke (core.clj:133)&lt;br/&gt;
    clojure.core$take$fn__4112.invoke (core.clj:2501)&lt;br/&gt;
    clojure.lang.LazySeq.sval (LazySeq.java:42)&lt;br/&gt;
    clojure.lang.LazySeq.seq (LazySeq.java:60)&lt;br/&gt;
    clojure.lang.LazySeq.first (LazySeq.java:82)&lt;br/&gt;
    clojure.lang.RT.first (RT.java:566)&lt;br/&gt;
    clojure.core$first.invoke (core.clj:55)&lt;br/&gt;
    clojure.pprint$pprint_reader_macro.invoke (dispatch.clj:50)&lt;br/&gt;
    clojure.pprint$pprint_list.invoke (dispatch.clj:77)&lt;br/&gt;
    clojure.lang.MultiFn.invoke (MultiFn.java:163)&lt;br/&gt;
    clojure.pprint$write_out.invoke (pprint_base.clj:194)&lt;br/&gt;
    clojure.pprint$pprint_vector$fn__7949.invoke (dispatch.clj:83)&lt;br/&gt;
    clojure.pprint$pprint_vector.invoke (dispatch.clj:82)&lt;br/&gt;
    clojure.lang.MultiFn.invoke (MultiFn.java:163)&lt;br/&gt;
    clojure.pprint$write_out.invoke (pprint_base.clj:194)&lt;br/&gt;
    clojure.pprint$pprint$fn__7359.invoke (pprint_base.clj:250)&lt;br/&gt;
    clojure.pprint$pprint.invoke (pprint_base.clj:248)&lt;br/&gt;
    clojure.pprint$pprint.invoke (pprint_base.clj:245)&lt;br/&gt;
    logicpuzzles.corefail$show.invoke (corefail.clj:9)&lt;br/&gt;
    logicpuzzles.corefail$eval3796.invoke (corefail.clj:153)&lt;br/&gt;
    clojure.lang.Compiler.eval (Compiler.java:6511)&lt;br/&gt;
    clojure.lang.Compiler.load (Compiler.java:6952)&lt;br/&gt;
    user$eval971.invoke (NO_SOURCE_FILE:1)&lt;br/&gt;
    clojure.lang.Compiler.eval (Compiler.java:6511)&lt;br/&gt;
    clojure.lang.Compiler.eval (Compiler.java:6477)&lt;br/&gt;
    clojure.core$eval.invoke (core.clj:2797)&lt;br/&gt;
    clojure.main$repl$read_eval_print__6405.invoke (main.clj:245)&lt;br/&gt;
    clojure.main$repl$fn__6410.invoke (main.clj:266)&lt;br/&gt;
    clojure.main$repl.doInvoke (main.clj:266)&lt;br/&gt;
    clojure.lang.RestFn.invoke (RestFn.java:1096)&lt;br/&gt;
    clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__544.invoke (interruptible_eval.clj:56)&lt;br/&gt;
    clojure.lang.AFn.applyToHelper (AFn.java:159)&lt;br/&gt;
    clojure.lang.AFn.applyTo (AFn.java:151)&lt;br/&gt;
    clojure.core$apply.invoke (core.clj:601)&lt;br/&gt;
    clojure.core$with_bindings_STAR_.doInvoke (core.clj:1771)&lt;br/&gt;
    clojure.lang.RestFn.invoke (RestFn.java:425)&lt;br/&gt;
    clojure.tools.nrepl.middleware.interruptible_eval$evaluate.invoke (interruptible_eval.clj:41)&lt;br/&gt;
    clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn_&lt;em&gt;585$fn&lt;/em&gt;_587.invoke (interruptible_eval.clj:171)&lt;br/&gt;
    clojure.core$comp$fn__4034.invoke (core.clj:2278)&lt;br/&gt;
    clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__578.invoke (interruptible_eval.clj:138)&lt;br/&gt;
    clojure.lang.AFn.run (AFn.java:24)&lt;br/&gt;
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)&lt;br/&gt;
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)&lt;br/&gt;
    java.lang.Thread.run (Thread.java:722)&lt;/p&gt;</comment>
                    <comment id="30727" author="m0smith" created="Mon, 11 Mar 2013 09:24:33 -0500"  >&lt;p&gt;I tightened up the fail case &lt;a href=&quot;https://github.com/m0smith/LogicPuzzles/blob/master/src/logicpuzzles/corefail.clj&quot;&gt;https://github.com/m0smith/LogicPuzzles/blob/master/src/logicpuzzles/corefail.clj&lt;/a&gt; .  Is that enough?&lt;/p&gt;</comment>
                    <comment id="30728" author="dnolen" created="Mon, 11 Mar 2013 10:17:02 -0500"  >&lt;p&gt;Thanks can you add the failing code to the ticket as an attachment? Thanks.&lt;/p&gt;</comment>
                    <comment id="30735" author="m0smith" created="Mon, 11 Mar 2013 18:23:09 -0500"  >&lt;p&gt;corefail.clj exhibits the error&lt;/p&gt;</comment>
                    <comment id="30782" author="dnolen" created="Sun, 17 Mar 2013 18:29:49 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/7e4d0b6b71707e248fd4d0de3f6c090b50a18624&quot;&gt;http://github.com/clojure/core.logic/commit/7e4d0b6b71707e248fd4d0de3f6c090b50a18624&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11907" name="corefail.clj" size="2837" author="m0smith" created="Mon, 11 Mar 2013 18:23:09 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-71] set *reify-vars* to false for the user if the unifier is given more than 2 arguments</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-71</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(unifier &apos;(?x) &apos;(?x) &apos;(1))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This will fail which is surprising.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15840">LOGIC-71</key>
            <summary>set *reify-vars* to false for the user if the unifier is given more than 2 arguments</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Tue, 20 Nov 2012 13:19:44 -0600</created>
                <updated>Sun, 17 Mar 2013 18:47:52 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 18:47:52 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30783" author="dnolen" created="Sun, 17 Mar 2013 18:47:52 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/07292792bec2694dafd4bf62b1c96580d5d270d3&quot;&gt;http://github.com/clojure/core.logic/commit/07292792bec2694dafd4bf62b1c96580d5d270d3&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-36] Unification bug in binding-map</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-36</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I tried some tests of core.unify against core.logics binding-map function and found some inconsistencies:&lt;br/&gt;
(binding-map &apos;(?x ?y) &apos;(?y ?x)) ==&amp;gt; {?y _.0, ?x _.0}&lt;br/&gt;
while core.unify returns ==&amp;gt; {?x ?y}&lt;/p&gt;</description>
                <environment></environment>
            <key id="15322">LOGIC-36</key>
            <summary>Unification bug in binding-map</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ath">Andr&#233; Thieme</reporter>
                        <labels>
                        <label>unify</label>
                    </labels>
                <created>Mon, 9 Apr 2012 16:08:00 -0500</created>
                <updated>Sun, 17 Mar 2013 18:52:10 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 18:52:10 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30784" author="dnolen" created="Sun, 17 Mar 2013 18:52:10 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/c37212270688b1bdbbca7fb81c1fc52062b24139&quot;&gt;http://github.com/clojure/core.logic/commit/c37212270688b1bdbbca7fb81c1fc52062b24139&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-108] featurec or something similar to provide recursive partial partial map constraints</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-108</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="15977">LOGIC-108</key>
            <summary>featurec or something similar to provide recursive partial partial map constraints</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="hiredman">Kevin Downey</reporter>
                        <labels>
                    </labels>
                <created>Thu, 24 Jan 2013 15:57:02 -0600</created>
                <updated>Sun, 17 Mar 2013 19:50:16 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 19:50:16 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30479" author="dnolen" created="Thu, 24 Jan 2013 15:58:29 -0600"  >&lt;p&gt;Basically, it should be ok for the `fs` argument to a be a nested map.&lt;/p&gt;</comment>
                    <comment id="30489" author="hiredman" created="Sat, 26 Jan 2013 18:03:23 -0600"  >&lt;p&gt;the following seems to be pretty close:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;    (defn rfeaturec [m f]
      (let [new-f (reduce (fn [m [k v]]
                            (assoc m k (logic/lvar (name k)))) {} (seq f))]
        (logic/fresh []
          (logic/featurec m new-f)
          (fn [s]
            (logic/to-stream
              (for [[k lvar] new-f]
                ((let [v (get f k)]
                   (if (map? v)
                     (logic/fresh [x]
                       (logic/featurec m {k lvar})
                       (rfeaturec lvar v))
                     (logic/== lvar v))) s)))))))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30494" author="hiredman" created="Sun, 27 Jan 2013 00:13:06 -0600"  >&lt;p&gt;the above falls apart quickly under use, the below works well so far:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defn rfeaturec [m f]
  (let [new-f (reduce (fn [m [k v]] (assoc m k (logic/lvar (name k)))) {} (seq f))]
    (logic/fresh []
      (logic/featurec m new-f)
      (logic/everyg
       (fn [[k lvar]]
         (let [v (get f k)]
           (if (map? v)
             (logic/fresh []
               (logic/featurec m {k lvar})
               (rfeaturec lvar v))
             (logic/== lvar v))))
       new-f))))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30500" author="dnolen" created="Sun, 27 Jan 2013 18:43:32 -0600"  >&lt;p&gt;recursive featurec should work by recursively applying constraints like you&apos;ve done but by using the lower level apis - we don&apos;t want to put the search language into a constraint.&lt;/p&gt;</comment>
                    <comment id="30792" author="dnolen" created="Sun, 17 Mar 2013 19:50:16 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d5eda7d7f89443b449d7955a76e72828561082f6&quot;&gt;http://github.com/clojure/core.logic/commit/d5eda7d7f89443b449d7955a76e72828561082f6&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-124] Order of args to fd/!= changes results (gives incorrect answer)</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-124</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I have attached a failing test for the Arch Friends logic puzzle.  Swapping the args to fd&apos;s != fixes the problem.  So does moving the call to fd&apos;s != to after the fd&apos;s == or fd&apos;s + below it.&lt;/p&gt;

&lt;p&gt;Tried this on 0.8.0-rc2, 0.8.0 and 0.8.1.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16105">LOGIC-124</key>
            <summary>Order of args to fd/!= changes results (gives incorrect answer)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ryansenior">Ryan Senior</reporter>
                        <labels>
                    </labels>
                <created>Sun, 24 Mar 2013 00:43:00 -0500</created>
                <updated>Sun, 24 Mar 2013 14:47:55 -0500</updated>
                    <resolved>Sun, 24 Mar 2013 14:47:55 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30810" author="dnolen" created="Sun, 24 Mar 2013 14:47:55 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/ce323c9bb85e080211eddfb7203a34104c62dee3&quot;&gt;http://github.com/clojure/core.logic/commit/ce323c9bb85e080211eddfb7203a34104c62dee3&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11927" name="arch-friends.patch" size="2238" author="ryansenior" created="Sun, 24 Mar 2013 00:43:00 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-125] Using membero with a vector as an element</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-125</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Running this code gives an unexpected result of only one of the 2 members being present:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn solve1 [q]
  (symbol-macrolet   [_ (lvar)]
          (membero [_ _ &apos;blue-cheese &apos;Fortune] q) ;; 2
          (membero [:5:00 _ &apos;mozzarella _] q) ;; 11
          ))

(run 1 [q] (solve1 q))
=&amp;gt; (([:5:00 _0 mozzarella _1] . _2))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;While adding an empty fresh seems to resolve the problem:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn solve2 [q]
  (symbol-macrolet   [_ (lvar)]
   (fresh []
          (membero [_ _ &apos;blue-cheese &apos;Fortune] q) ;; 2
          (membero [:5:00 _ &apos;mozzarella _] q) ;; 11
        )))

(run 1 [q] (solve2 q))
=&amp;gt; (([_0 _1 blue-cheese Fortune] [:5:00 _2 mozzarella _3] . _4))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
</description>
                <environment></environment>
            <key id="16110">LOGIC-125</key>
            <summary>Using membero with a vector as an element</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="m0smith">Matthew O. Smith</reporter>
                        <labels>
                    </labels>
                <created>Mon, 25 Mar 2013 09:55:57 -0500</created>
                <updated>Mon, 25 Mar 2013 11:31:39 -0500</updated>
                    <resolved>Mon, 25 Mar 2013 10:52:19 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30818" author="dnolen" created="Mon, 25 Mar 2013 10:52:19 -0500"  >&lt;p&gt;This is not a bug. You must always wrap a conjunction of goals in a run, fresh or an all or some other compound goal construct built from these primitives.&lt;/p&gt;</comment>
                    <comment id="30819" author="m0smith" created="Mon, 25 Mar 2013 11:31:39 -0500"  >&lt;p&gt;Thanks, that is good to know.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-126] fd/* and fd/+ interaction bug</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-126</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Via this StackOverflow question &lt;a href=&quot;http://stackoverflow.com/questions/15671823/unexpected-results-with-clojure-core-logic-using-clp-fd&quot;&gt;http://stackoverflow.com/questions/15671823/unexpected-results-with-clojure-core-logic-using-clp-fd&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn product-pluso [factor1 factor2 number sum]
  (fd/eq (= sum (+ number (* factor1 factor2)))))

(run* [x y]
  (fd/in x y (fd/interval 1 38))
  (product-pluso x y 2 40))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Returns too many answers. Even if we desugar into:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x y p]
    (fd/in x y (fd/interval 1 38))
    (fd/* x y p)
    (fd/+ p 2 40)
    (== q [x y p])))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We see results which clearly violate the fd/+ constraint.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16115">LOGIC-126</key>
            <summary>fd/* and fd/+ interaction bug</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 28 Mar 2013 12:11:22 -0500</created>
                <updated>Thu, 28 Mar 2013 22:40:58 -0500</updated>
                    <resolved>Thu, 28 Mar 2013 22:40:58 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30830" author="dnolen" created="Thu, 28 Mar 2013 12:58:51 -0500"  >&lt;p&gt;It seems like we should be able to fix this at the level of update-var-dom by checking that the var doesn&apos;t already have a value in the substitution, but oddly by doing this we run into some strange non-termination behavior. I&apos;ve experienced this before when trying to flip the order of checks in let-dom, but at the time I was too busy with bigger problems to look at the issue more closely.&lt;/p&gt;</comment>
                    <comment id="30831" author="dnolen" created="Thu, 28 Mar 2013 13:01:49 -0500"  >&lt;p&gt;After digging into this some it looks like we have a fairly nice opportunity to refactor and make things considerably faster. In the Scheme version get-dom / walk are necessarily separate operations because of the implementation. This is not necessary in core.logic because of SubstValue. get-dom should always do the right thing - return the value in the substitution if present or domain otherwise. The constraint writers need not bother with walk at all.&lt;/p&gt;</comment>
                    <comment id="30832" author="dnolen" created="Thu, 28 Mar 2013 13:27:02 -0500"  >&lt;p&gt;To be clear get-dom has different contract than walk - get-dom will return a not found value instead of a logic var. It would be nice to be able to return nil but we could image CLP(Set) and other cases where the possible values includes nil.&lt;/p&gt;</comment>
                    <comment id="30833" author="dnolen" created="Thu, 28 Mar 2013 22:40:58 -0500"  >&lt;p&gt;fixed &lt;a href=&quot;http://github.com/clojure/core.logic/commit/52eec3b04c2b785c84bed81671db80c2163c4967&quot;&gt;http://github.com/clojure/core.logic/commit/52eec3b04c2b785c84bed81671db80c2163c4967&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-127] Swapping noms turns maps (and other collections) into seqs</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-127</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;When I unify two binders, the swapping procedure turns all the maps inside the body into seqs of key/value pairs, which do not unify with maps, leading to the following trickiness:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(require &apos;[clojure.core.logic :as l])
(require &apos;[clojure.core.logic.nominal :as n])
(l/run* [q]
  (l/fresh [body]
    (n/fresh [a b]
      (l/== (n/tie a {:k a}) (n/tie b body))
      (l/== {:k q} body))))
;=&amp;gt; ()
; Expected (a_0)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For my purposes, fixing this by adding two new implementations of INomSwap for vectors and maps works well.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16121">LOGIC-127</key>
            <summary>Swapping noms turns maps (and other collections) into seqs</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="namin">Nada Amin</assignee>
                                <reporter username="jirkamarsik">Ji&#345;&#237; Mar&#353;&#237;k</reporter>
                        <labels>
                        <label>bug</label>
                        <label>nominal</label>
                    </labels>
                <created>Tue, 2 Apr 2013 11:11:52 -0500</created>
                <updated>Wed, 10 Apr 2013 03:33:00 -0500</updated>
                    <resolved>Wed, 10 Apr 2013 03:33:00 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30854" author="jirkamarsik" created="Tue, 2 Apr 2013 11:14:44 -0500"  >&lt;p&gt;Oops, sorry for the malformatted code snippet. Here it is inside a code tag.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(require &apos;[clojure.core.logic :as l])
(require &apos;[clojure.core.logic.nominal :as n])
(l/run* [q]
        (l/fresh [body]
                 (n/fresh [a b]
                          (l/== (n/tie a {:k a}) (n/tie b body))
                          (l/== {:k q} body))))
;=&amp;gt; ()
; Expected (a_0)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="30855" author="dnolen" created="Tue, 2 Apr 2013 11:22:17 -0500"  >&lt;p&gt;This seems like a easy one to fix, perhaps Nada can see quicker than I can. If not I can take a look.&lt;/p&gt;

&lt;p&gt;Also your patch may very well solve the issue best, feel free to attach it to the ticket. We won&apos;t be able to apply it until you&apos;ve submitted your Contributor Agreement - if you have a free moment please send it in. Thanks!&lt;/p&gt;</comment>
                    <comment id="30857" author="jirkamarsik" created="Tue, 2 Apr 2013 11:48:19 -0500"  >&lt;p&gt;The patch that I use to fix the issue. I haven&apos;t signed the CA, but I would definitely like to. Might take a while to arrive though, since I&apos;m in Europe and I&apos;m lazy.&lt;/p&gt;</comment>
                    <comment id="30862" author="namin" created="Wed, 3 Apr 2013 02:36:53 -0500"  >&lt;p&gt;The patch LGTM. I would also add a test from the ticket example.&lt;/p&gt;

&lt;p&gt;I guess we have to wait until the CA arrives, now.&lt;/p&gt;</comment>
                    <comment id="30863" author="jirkamarsik" created="Wed, 3 Apr 2013 04:28:06 -0500"  >&lt;p&gt;I have also added the test case, the new patch INomSwap-vectors-maps-with-test.patch contains both the fix and the test case. I have just signed the CA and I plan to post it today.&lt;/p&gt;</comment>
                    <comment id="30918" author="jirkamarsik" created="Tue, 9 Apr 2013 10:55:17 -0500"  >&lt;p&gt;OK, the CA has arrived and been processed.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://clojure.org/contributing&quot;&gt;http://clojure.org/contributing&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Jiri Marsik (jirkamarsik)&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    <comment id="30920" author="namin" created="Wed, 10 Apr 2013 03:32:38 -0500"  >&lt;p&gt;Applied as &lt;a href=&quot;https://github.com/clojure/core.logic/commit/d73c836c0d4bab2af12b4bdedb31daad4a661fb6&quot;&gt;https://github.com/clojure/core.logic/commit/d73c836c0d4bab2af12b4bdedb31daad4a661fb6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11936" name="INomSwap-vectors-maps.patch" size="807" author="jirkamarsik" created="Tue, 2 Apr 2013 11:48:19 -0500" />
                    <attachment id="11938" name="INomSwap-vectors-maps-with-test.patch" size="1885" author="jirkamarsik" created="Wed, 3 Apr 2013 04:28:06 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10005">Accepted</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-132] &quot;PMap is non-storable&quot; exception when using featurec with nested feature map.</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-132</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;This works as expected:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [x y]
  (featurec x {:a {:b 1}})
  (== y {:b 1})
  (== x {:a y}))

;; =&amp;gt; ([{:a {:b 1}} {:b 1}])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;But with the last two goals swapped an exception is thrown:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [x y]
  (featurec x {:a {:b 1}})
  (== x {:a y})
  (== y {:b 1}))

;; =&amp;gt;
Exception clojure.core.logic.PMap@3c6f0bed is non-storable
    clojure.core.logic.LVar (logic.clj:647)
    clojure.core.logic/unify (logic.clj:231)
    clojure.core.logic/unify-with-pmap* (logic.clj:2601)
    clojure.core.logic.PMap (logic.clj:2614)
    clojure.core.logic/unify (logic.clj:232)
    clojure.core.logic/==/fn--2819 (logic.clj:1135)
    clojure.core.logic/composeg/fn--2745 (logic.clj:1029)
    clojure.core.logic/-featurec/reify--3655 (logic.clj:2646)
    clojure.core.logic/composeg/fn--2745 (logic.clj:1029)
    clojure.core.logic/composeg/fn--2745 (logic.clj:1030)
    clojure.core.logic/run-constraint/fn--3431 (logic.clj:2184)
    clojure.core.logic/fix-constraints (logic.clj:2211)&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The same exception is thrown when (== y {:b 1}) is left out:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [x y]
  (featurec x {:a {:b 1}})
  (== x {:a y}))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>core.locic 0.8.3</environment>
            <key id="16163">LOGIC-132</key>
            <summary>&quot;PMap is non-storable&quot; exception when using featurec with nested feature map.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="mforsgren">Martin Forsgren</reporter>
                        <labels>
                    </labels>
                <created>Fri, 26 Apr 2013 03:55:41 -0500</created>
                <updated>Sun, 5 May 2013 19:34:42 -0500</updated>
                    <resolved>Sun, 5 May 2013 19:34:42 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>2</watches>
                        <comments>
                    <comment id="31055" author="dnolen" created="Sun, 5 May 2013 19:34:42 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/30fcd69dd4c9ca86b3a73c3f6b5866d6b943ddff&quot;&gt;http://github.com/clojure/core.logic/commit/30fcd69dd4c9ca86b3a73c3f6b5866d6b943ddff&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-135] membero should be updated to use disequality constraints</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-135</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;William Byrd considers the version of membero that appears in core.logic to be outdated and inferior to a version that uses disequality constraints. Full discussion here: &lt;a href=&quot;http://youtu.be/MTAhbsWUUxM?t=1h20m00s&quot;&gt;http://youtu.be/MTAhbsWUUxM?t=1h20m00s&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NEW version:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defne membero
  &lt;span class=&quot;code-quote&quot;&gt;&quot;A relation where l is a collection, such that l contains x&quot;&lt;/span&gt;
  [x l]
  ([_ [x . tail]])
  ([_ [head . tail]]
     (!= x head)       ;; The addition of &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; line is the only change.
     (membero x tail)))

(run* [q] (membero q [1 1 1])) 
;; =&amp;gt; (1)
;; The current version returns (1 1 1).&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Patch to follow.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16180">LOGIC-135</key>
            <summary>membero should be updated to use disequality constraints</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="austinhaas">Austin Haas</reporter>
                        <labels>
                    </labels>
                <created>Tue, 7 May 2013 17:26:45 -0500</created>
                <updated>Tue, 7 May 2013 22:24:25 -0500</updated>
                    <resolved>Tue, 7 May 2013 22:24:25 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="31063" author="austinhaas" created="Tue, 7 May 2013 17:33:23 -0500"  >&lt;p&gt;This patch improves membero by adding a disequality constraint. Fix for &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-135&quot; title=&quot;membero should be updated to use disequality constraints&quot;&gt;&lt;del&gt;LOGIC-135&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note that this patch removes two tests that depended on assumptions that have nothing to do with the correctness of membero.&lt;/p&gt;</comment>
                    <comment id="31064" author="austinhaas" created="Tue, 7 May 2013 17:41:19 -0500"  >&lt;p&gt;Regarding the tests, the first broke because it assumed reified fresh lvars wouldn&apos;t include disequality constraints.&lt;/p&gt;

&lt;p&gt;For the 2nd one, test-116-constraint-store-migrate, I have not looked into it thoroughly, but I got the impression that the test needs to be rewritten. I&apos;d argue that it is more important to fix membero before fixing that test (but I don&apos;t know what else that test is testing).&lt;/p&gt;</comment>
                    <comment id="31068" author="dnolen" created="Tue, 7 May 2013 22:24:25 -0500"  >&lt;p&gt;fixed &lt;a href=&quot;http://github.com/clojure/core.logic/commit/a35c8eebfff90515796ea734ba81e3f5db041b5c&quot;&gt;http://github.com/clojure/core.logic/commit/a35c8eebfff90515796ea734ba81e3f5db041b5c&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11988" name="LOGIC-135-membero-using-disequality.diff" size="2642" author="austinhaas" created="Tue, 7 May 2013 17:33:23 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-134] Historic artifacts in the implementation of Choice prevent take* from being generally usable. </title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-134</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The implementation of Choice is slightly broken, because in certain contexts it is assumed that the first value in the Choice stream will be wrapped in a list. I believe this is a historical artifact; maybe the list wrapper was used to differentiate two types of values, as in the case of distinguishing not-found from nil.&lt;/p&gt;

&lt;p&gt;This defect prevents take* from being used generally, since the current implementation of take* for Choice assumes the first value is wrapped in a list, which is not the case for Choice streams during the search.&lt;/p&gt;

&lt;p&gt;Patch to follow.&lt;/p&gt;</description>
                <environment></environment>
            <key id="16179">LOGIC-134</key>
            <summary>Historic artifacts in the implementation of Choice prevent take* from being generally usable. </summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="3" iconUrl="http://dev.clojure.org/jira/images/icons/priority_major.gif">Major</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="austinhaas">Austin Haas</reporter>
                        <labels>
                    </labels>
                <created>Tue, 7 May 2013 15:18:06 -0500</created>
                <updated>Tue, 7 May 2013 23:37:31 -0500</updated>
                    <resolved>Tue, 7 May 2013 23:37:31 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="31062" author="austinhaas" created="Tue, 7 May 2013 15:23:04 -0500"  >&lt;p&gt;Never wrap first item to Choice in a list. Fixes &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-134&quot; title=&quot;Historic artifacts in the implementation of Choice prevent take* from being generally usable. &quot;&gt;&lt;del&gt;LOGIC-134&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-134&quot;&gt;http://dev.clojure.org/jira/browse/LOGIC-134&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="31069" author="dnolen" created="Tue, 7 May 2013 22:27:11 -0500"  >&lt;p&gt;The attached patch does not work, many tests fail.&lt;/p&gt;</comment>
                    <comment id="31072" author="dnolen" created="Tue, 7 May 2013 23:37:31 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/0a8b619880c7cbea4cf8e9a280cbd5bdb413a12c&quot;&gt;http://github.com/clojure/core.logic/commit/0a8b619880c7cbea4cf8e9a280cbd5bdb413a12c&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11987" name="LOGIC-134-fix.diff" size="1767" author="austinhaas" created="Tue, 7 May 2013 15:23:04 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-13] defne and variants should support docstring</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-13</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="14591">LOGIC-13</key>
            <summary>defne and variants should support docstring</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Tue, 30 Aug 2011 12:36:50 -0500</created>
                <updated>Sun, 20 Nov 2011 15:17:51 -0600</updated>
                    <resolved>Sun, 20 Nov 2011 15:17:51 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="26744" author="ambrosebs" created="Wed, 31 Aug 2011 00:05:53 -0500"  >&lt;p&gt;I can do this if you want.&lt;/p&gt;</comment>
                    <comment id="26746" author="ambrosebs" created="Wed, 31 Aug 2011 23:28:27 -0500"  >&lt;p&gt;Attached patch with brief tests.&lt;/p&gt;

&lt;p&gt;I yanked a function from old clojure.contrib.def and put it in clojure.core.logic.match. IMO not worth an extra dependency, if it&apos;s compatible with Clojure 1.3 at all.&lt;/p&gt;</comment>
                    <comment id="26748" author="dnolen" created="Wed, 31 Aug 2011 23:54:11 -0500"  >&lt;p&gt;If it works with with 1.3 this is ok by me.&lt;/p&gt;</comment>
                    <comment id="26750" author="ambrosebs" created="Thu, 1 Sep 2011 21:23:43 -0500"  >&lt;p&gt;The tests pass under Clojure 1.3 beta2.&lt;/p&gt;</comment>
                    <comment id="27288" author="dnolen" created="Sun, 13 Nov 2011 22:19:16 -0600"  >&lt;p&gt;Sorry for taking so long to look at this. This looks cool, mind tweaking it for 0.6.5? This patch doesn&apos;t apply since I moved everything into the same namespace. Thanks.&lt;/p&gt;</comment>
                    <comment id="27312" author="ambrosebs" created="Sun, 20 Nov 2011 00:00:44 -0600"  >&lt;p&gt;Added new patch for 0.6.5&lt;/p&gt;</comment>
                    <comment id="27321" author="dnolen" created="Sun, 20 Nov 2011 15:17:51 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/b47c86029468bb76d0f3d3fdfa900c8f1516a31b&quot;&gt;https://github.com/clojure/core.logic/commit/b47c86029468bb76d0f3d3fdfa900c8f1516a31b&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10329" name="0001-Added-metadata-support-for-defne-and-friends-with-so.patch" size="4372" author="ambrosebs" created="Wed, 31 Aug 2011 23:28:27 -0500" />
                    <attachment id="10709" name="0001-PATCH-Added-metadata-support-for-defne-and-friends-w.patch" size="3793" author="ambrosebs" created="Sun, 20 Nov 2011 00:00:44 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-4] Don&apos;t use extend-type on Substitutions LVar or LCons</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-4</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;We shouldn&apos;t use extend-type to add methods to types we control, unnecessary perf hit.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14441">LOGIC-4</key>
            <summary>Don&apos;t use extend-type on Substitutions LVar or LCons</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Fri, 20 May 2011 18:51:47 -0500</created>
                <updated>Sat, 21 May 2011 13:30:12 -0500</updated>
                    <resolved>Sat, 21 May 2011 13:30:12 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26451" author="dnolen" created="Sat, 21 May 2011 13:30:12 -0500"  >&lt;p&gt;Fixed by &lt;a href=&quot;https://github.com/clojure/core.logic/commit/ade3cda90b7fb07218d311ed06583e34b29626b5&quot;&gt;https://github.com/clojure/core.logic/commit/ade3cda90b7fb07218d311ed06583e34b29626b5&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-2] Provide more convenient syntax for defining a series of facts</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-2</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description></description>
                <environment></environment>
            <key id="14438">LOGIC-2</key>
            <summary>Provide more convenient syntax for defining a series of facts</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Wed, 18 May 2011 12:35:48 -0500</created>
                <updated>Sun, 24 Jul 2011 13:18:42 -0500</updated>
                    <resolved>Sun, 24 Jul 2011 13:18:20 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26448" author="pepijndevos" created="Thu, 19 May 2011 06:46:21 -0500"  >&lt;p&gt;Not sure if this is a separate issue, but I&apos;d like various ways to create a relation from a seq. Possibly anonymous.&lt;/p&gt;

&lt;p&gt;(rel [&lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;monkey &amp;#39;banana&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;&amp;#39;foo &amp;#39;bar&amp;#93;&lt;/span&gt;])&lt;/p&gt;</comment>
                    <comment id="26459" author="pepijndevos" created="Fri, 27 May 2011 07:36:48 -0500"  >&lt;p&gt;Patch added for anonymous relations and extending existing relations. Removed superfluous macros in the process. API is slightly different now.&lt;/p&gt;</comment>
                    <comment id="26471" author="dnolen" created="Sat, 28 May 2011 10:35:52 -0500"  >&lt;p&gt;The patch mostly looks good. However defrel no longer takes args and it should (this breaks some tests). The args are like documentation and in the future I&apos;d like to support syntax like this:&lt;/p&gt;

&lt;p&gt;(defrel child ^:index p1 ^:index p2)&lt;/p&gt;

&lt;p&gt;For specifying which elements of the tuple to index.&lt;/p&gt;</comment>
                    <comment id="26642" author="dnolen" created="Sun, 24 Jul 2011 13:18:20 -0500"  >&lt;p&gt;not going to do the anonymous rel bit. fact/facts are now fns not macros.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10246" name="0001-rel-defrel-extend-rel.patch" size="3647" author="pepijndevos" created="Sat, 28 May 2011 15:07:58 -0500" />
                    <attachment id="10238" name="rel.patch" size="1875" author="pepijndevos" created="Fri, 27 May 2011 07:36:48 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-16] Add print goal</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-16</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Wrap print and println in a goal.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14615">LOGIC-16</key>
            <summary>Add print goal</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Wed, 7 Sep 2011 09:11:18 -0500</created>
                <updated>Mon, 14 Nov 2011 07:17:06 -0600</updated>
                    <resolved>Mon, 14 Nov 2011 07:17:06 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27287" author="dnolen" created="Sun, 13 Nov 2011 22:16:21 -0600"  >&lt;p&gt;We actually have a goal for this - log. Is something more required?&lt;/p&gt;</comment>
                    <comment id="27291" author="ambrosebs" created="Mon, 14 Nov 2011 06:13:57 -0600"  >&lt;p&gt;I was not aware of log, this can be resolved.&lt;/p&gt;</comment>
                    <comment id="27292" author="dnolen" created="Mon, 14 Nov 2011 07:17:06 -0600"  >&lt;p&gt;already exists.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-19] Make it possible to define facts on a relation defined in a different namespace.</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-19</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Currently there&apos;s no way of defining facts on a relation defined in a different namespace. It would be better to make this possible.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15005">LOGIC-19</key>
            <summary>Make it possible to define facts on a relation defined in a different namespace.</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="budu">Nicolas Buduroi</assignee>
                                <reporter username="budu">Nicolas Buduroi</reporter>
                        <labels>
                        <label>facts</label>
                        <label>namespace</label>
                        <label>relation</label>
                    </labels>
                <created>Sat, 12 Nov 2011 23:42:43 -0600</created>
                <updated>Sun, 13 Nov 2011 22:21:44 -0600</updated>
                    <resolved>Sun, 13 Nov 2011 22:21:44 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="27289" author="dnolen" created="Sun, 13 Nov 2011 22:21:44 -0600"  >&lt;p&gt;Done, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/eb6dfda6ecc3604a987f479cd42696d4d8ad685a&quot;&gt;https://github.com/clojure/core.logic/commit/eb6dfda6ecc3604a987f479cd42696d4d8ad685a&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10700" name="facts_ns_fix.diff" size="1878" author="budu" created="Sat, 12 Nov 2011 23:42:43 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-15] Improved docstrings for relations</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-15</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I have improved the docstrings of some relations in the prelude, inspired by The Art of Prolog.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14593">LOGIC-15</key>
            <summary>Improved docstrings for relations</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Wed, 31 Aug 2011 01:31:26 -0500</created>
                <updated>Thu, 24 Nov 2011 09:58:09 -0600</updated>
                    <resolved>Thu, 24 Nov 2011 09:58:09 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="26745" author="ambrosebs" created="Wed, 31 Aug 2011 02:28:02 -0500"  >&lt;p&gt;I&apos;ve revised the docstrings in light of considering sequences with improper tails.&lt;/p&gt;

&lt;p&gt;I&apos;ve adopted a convention where, if the relation doesn&apos;t care whether a collection is proper/improper, I just say it&apos;s &quot;a collection&quot;.&lt;/p&gt;

&lt;p&gt;If it does care, I say it &quot;is a proper collection&quot;.&lt;/p&gt;</comment>
                    <comment id="26747" author="ambrosebs" created="Wed, 31 Aug 2011 23:31:05 -0500"  >&lt;p&gt;Please don&apos;t merge this until we have docstring support for defne. I&apos;ll revise the patch accordingly.&lt;/p&gt;</comment>
                    <comment id="27322" author="dnolen" created="Sun, 20 Nov 2011 15:19:40 -0600"  >&lt;p&gt;We have docstring support now right?&lt;/p&gt;</comment>
                    <comment id="27324" author="ambrosebs" created="Sun, 20 Nov 2011 15:36:02 -0600"  >&lt;p&gt;Yep I&apos;ll fix revise the patch in the next day or so.&lt;/p&gt;</comment>
                    <comment id="27339" author="ambrosebs" created="Thu, 24 Nov 2011 07:41:04 -0600"  >&lt;p&gt;New patch, ignore other patches. Also a tiny change to &quot;log&quot; to make its arguments like println.&lt;/p&gt;</comment>
                    <comment id="27343" author="dnolen" created="Thu, 24 Nov 2011 09:58:09 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/cc9512e8f628be274a5aa4c9f31bb0c7464a8c4e&quot;&gt;https://github.com/clojure/core.logic/commit/cc9512e8f628be274a5aa4c9f31bb0c7464a8c4e&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10326" name="0001-Added-clearer-docstrings-to-relations.patch" size="2052" author="ambrosebs" created="Wed, 31 Aug 2011 01:31:26 -0500" />
                    <attachment id="10715" name="0001-Change-documentation-like-Art-of-Prolog.-Tiny-change.patch" size="2847" author="ambrosebs" created="Thu, 24 Nov 2011 07:41:04 -0600" />
                    <attachment id="10327" name="0002-Added-clearer-docstrings-to-relations.patch" size="2048" author="ambrosebs" created="Wed, 31 Aug 2011 02:28:02 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-42] Generalize run to accept multiple logic vars</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-42</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run 1 [x y z]
  ...goals...)

;; equivalent to

(run 1 [q]
  (fresh [x y z]
    (== q [x y z])
    ...goals...))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15533">LOGIC-42</key>
            <summary>Generalize run to accept multiple logic vars</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="gfredericks">Gary Fredericks</assignee>
                                <reporter username="gfredericks">Gary Fredericks</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Jun 2012 19:00:08 -0500</created>
                <updated>Thu, 14 Jun 2012 09:19:32 -0500</updated>
                    <resolved>Thu, 14 Jun 2012 09:19:32 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="28799" author="gfredericks" created="Wed, 13 Jun 2012 19:36:04 -0500"  >&lt;p&gt;test and impl&lt;/p&gt;</comment>
                    <comment id="28804" author="dnolen" created="Thu, 14 Jun 2012 09:19:32 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/7b6d8f3c34e4feca18bb645282adee7aeef68ac7&quot;&gt;http://github.com/clojure/core.logic/commit/7b6d8f3c34e4feca18bb645282adee7aeef68ac7&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11319" name="LOGIC-42.diff" size="2235" author="gfredericks" created="Wed, 13 Jun 2012 19:36:04 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-25] Allow retraction of previously stated facts in a relation</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-25</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;For long-running or interactive programs, it is useful to allow facts to become &quot;no longer&quot; true at a point in time.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15110">LOGIC-25</key>
            <summary>Allow retraction of previously stated facts in a relation</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="mtnygard">Michael Nygard</reporter>
                        <labels>
                        <label>new-feature</label>
                    </labels>
                <created>Wed, 11 Jan 2012 07:10:00 -0600</created>
                <updated>Wed, 18 Jan 2012 17:45:07 -0600</updated>
                    <resolved>Wed, 18 Jan 2012 17:45:07 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="27560" author="mtnygard" created="Fri, 13 Jan 2012 12:49:08 -0600"  >&lt;p&gt;I&apos;ve found a bug in this patch. It doesn&apos;t handle indexes correctly. New patch coming soon.&lt;/p&gt;</comment>
                    <comment id="27561" author="mtnygard" created="Fri, 13 Jan 2012 13:42:15 -0600"  >&lt;p&gt;New patch that correctly updates indexes when retracting facts.&lt;/p&gt;</comment>
                    <comment id="27571" author="dnolen" created="Sat, 14 Jan 2012 19:49:51 -0600"  >&lt;p&gt;This looks good but could we get a properly formatted patch w/ attribution information? Thanks!&lt;/p&gt;</comment>
                    <comment id="27572" author="mtnygard" created="Sun, 15 Jan 2012 11:24:51 -0600"  >&lt;p&gt;Happy to. What needs to be different for the patch to work? Also, what attribution are you looking for? Author info in the function?&lt;/p&gt;</comment>
                    <comment id="27577" author="dnolen" created="Mon, 16 Jan 2012 16:26:46 -0600"  >&lt;p&gt;Did you make the patch with git? Git should add that information.&lt;/p&gt;</comment>
                    <comment id="27580" author="mtnygard" created="Mon, 16 Jan 2012 20:14:16 -0600"  >&lt;p&gt;I did make the patch with git.&lt;/p&gt;</comment>
                    <comment id="27585" author="dnolen" created="Wed, 18 Jan 2012 11:26:26 -0600"  >&lt;p&gt;Normally git patches I&apos;ve applied have a header like the following:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;From 8a44aec861c91a9652f3d60093d3d556a490067e Mon Sep 17 00:00:00 2001
From: Bobby Calderwood &amp;lt;bobby_calderwood@mac.com&amp;gt;
Date: Fri, 13 Jan 2012 09:24:29 -0500
Subject: [PATCH] MultiFn &lt;span class=&quot;code-keyword&quot;&gt;implements&lt;/span&gt; IHash&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;How exactly are you creating the patch with git?&lt;/p&gt;</comment>
                    <comment id="27586" author="mtnygard" created="Wed, 18 Jan 2012 12:42:36 -0600"  >&lt;p&gt;I had been using git diff. New patch file attached using git format-patch. I think this is what you&apos;re looking for.&lt;/p&gt;</comment>
                    <comment id="27589" author="dnolen" created="Wed, 18 Jan 2012 17:45:07 -0600"  >&lt;p&gt;Fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/compare/2e4bd26201...89005b726f&quot;&gt;https://github.com/clojure/core.logic/compare/2e4bd26201...89005b726f&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10778" name="relational-retraction.patch" size="4686" author="mtnygard" created="Wed, 18 Jan 2012 12:42:55 -0600" />
                    <attachment id="10774" name="relational-retraction.patch" size="2978" author="mtnygard" created="Fri, 13 Jan 2012 13:42:15 -0600" />
                    <attachment id="10766" name="relational-retraction.patch" size="2135" author="mtnygard" created="Wed, 11 Jan 2012 07:10:00 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-40] Retractions with an empty collection produces a NullPointerException</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-40</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;(defrel load-factor src snk lf)&lt;br/&gt;
(retractions load-factor [])&lt;/p&gt;

&lt;p&gt;Results in NPE. Should do nothing without complaining.&lt;/p&gt;</description>
                <environment>All.</environment>
            <key id="15457">LOGIC-40</key>
            <summary>Retractions with an empty collection produces a NullPointerException</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="mtnygard">Michael Nygard</reporter>
                        <labels>
                    </labels>
                <created>Fri, 18 May 2012 18:49:05 -0500</created>
                <updated>Fri, 18 May 2012 19:24:28 -0500</updated>
                    <resolved>Fri, 18 May 2012 19:24:28 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="28527" author="dnolen" created="Fri, 18 May 2012 19:24:19 -0500"  >&lt;p&gt;Fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d613316bbce889906b4ad2172970258bf0f16916&quot;&gt;http://github.com/clojure/core.logic/commit/d613316bbce889906b4ad2172970258bf0f16916&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11231" name="allow_empty_collection_in_retraction.patch" size="1264" author="mtnygard" created="Fri, 18 May 2012 18:49:05 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-50] Rel relation PersistentHashSet becomes LazySeq after issuing a retraction</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-50</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The first retraction of facts from a relation transforms the internal PersistentHashSet -set var+atom, which guarantees uniqueness, into a LazySeq which allows duplicate facts to be added. Once the first retraction occurs, a LazySeq persists for the rest of the life of the relation. Only the value of the primary -set var+atom is affected, not the -index var+atom values.&lt;/p&gt;

&lt;p&gt;This issue is not an external correctness issue but does affect performance of subsequent duplicate fact additions which grow the size relation.&lt;/p&gt;

&lt;p&gt;Preparation:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; (defrel foo x y)
#&amp;lt;user$eval4287$fn__4288 user$eval4287$fn__4288@1a9d489b&amp;gt;
user=&amp;gt; (facts foo [[:joe :man][:jane :woman][:sue :boy]])
nil
user=&amp;gt; foo_2-set
#&amp;lt;Atom@52aaf223: #{[:joe :man] [:jane :woman] [:sue :boy]}&amp;gt;
user=&amp;gt; (class @foo_2-set)
clojure.lang.PersistentHashSet
user=&amp;gt; (retraction foo :jane :woman)
nil&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Without patch applied:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; foo_2-set
#&amp;lt;Atom@52aaf223: ([:joe :man] [:sue :boy])&amp;gt;
user=&amp;gt; (class @foo_2-set)
clojure.lang.LazySeq
user=&amp;gt; (facts foo [[:joe :man][:jane :woman][:sue :boy]])
nil
user=&amp;gt; foo_2-set
#&amp;lt;Atom@52aaf223: ([:sue :boy] [:jane :woman] [:joe :man] [:joe :man] [:sue :boy])&amp;gt;
user=&amp;gt; (class @foo_2-set)
clojure.lang.LazySeq&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With patch applied:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;user=&amp;gt; foo_2-set
#&amp;lt;Atom@31eb9b15: #{[:joe :man] [:sue :boy]}&amp;gt;
user=&amp;gt; (class @foo_2-set)
clojure.lang.PersistentHashSet
user=&amp;gt; (facts foo [[:joe :man][:jane :woman][:sue :boy]])
nil
user=&amp;gt; foo_2-set
#&amp;lt;Atom@31eb9b15: #{[:joe :man] [:jane :woman] [:sue :boy]}&amp;gt;
user=&amp;gt; (class @foo_2-set)
clojure.lang.PersistentHashSet&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I&apos;ve filed this as a Minor issue as it does not affect core.logic correctness and degraded performance can be avoided by not re-asserting duplicate facts.&lt;/p&gt;

&lt;p&gt;I will also issue a GitHub pull request which can be used or ignored at your convenience.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15666">LOGIC-50</key>
            <summary>Rel relation PersistentHashSet becomes LazySeq after issuing a retraction</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="abrooks">Aaron Brooks</reporter>
                        <labels>
                        <label>performance</label>
                    </labels>
                <created>Sat, 1 Sep 2012 20:15:44 -0500</created>
                <updated>Wed, 5 Sep 2012 11:32:52 -0500</updated>
                    <resolved>Wed, 5 Sep 2012 11:32:52 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29337" author="dnolen" created="Sun, 2 Sep 2012 17:45:26 -0500"  >&lt;p&gt;Thanks! Is this meant to be applied to master?&lt;/p&gt;</comment>
                    <comment id="29351" author="abrooks" created="Mon, 3 Sep 2012 18:56:08 -0500"  >&lt;p&gt;(cf. here and &lt;a href=&quot;https://github.com/clojure/core.logic/pull/9#issuecomment-8243216&quot;&gt;GitHub&lt;/a&gt; I&apos;ll keep this thread on JIRA.) Yes, this is targeted for master. I don&apos;t know if this warrants a release unto itself.&lt;/p&gt;</comment>
                    <comment id="29353" author="abrooks" created="Tue, 4 Sep 2012 09:17:05 -0500"  >&lt;p&gt;I forgot to mention that I needed to add &quot;src/test/clojure&quot; to the project.clj :source-paths vector to get lein1/2&apos;s test command to run the tests. Is that expected? Is there another way to run the tests that I&apos;m missing? I&apos;m happy to file a separate ticket/patch to address this if project.clj needs to be modified.&lt;/p&gt;</comment>
                    <comment id="29354" author="dnolen" created="Tue, 4 Sep 2012 09:25:18 -0500"  >&lt;p&gt;Thanks for the information. Will apply to master. I actually run tests with &quot;mvn test&quot;, I&apos;ve updated :source-paths so other people can run the tests with lein.&lt;/p&gt;</comment>
                    <comment id="29355" author="dnolen" created="Tue, 4 Sep 2012 09:26:48 -0500"  >&lt;p&gt;I tried to apply the patch but I&apos;m getting a &quot;Patch format detection failed&quot;.&lt;/p&gt;</comment>
                    <comment id="29359" author="abrooks" created="Tue, 4 Sep 2012 16:16:15 -0500"  >&lt;p&gt;The attached patch should work fine with git-apply (in either &quot;cat foo.patch |git apply&quot; or &quot;git apply foo.patch&quot; form). I made the GitHub pull request as I figured that would be the easiest path to pull the changes in.&lt;/p&gt;</comment>
                    <comment id="29360" author="dnolen" created="Tue, 4 Sep 2012 18:04:12 -0500"  >&lt;p&gt;Yes the patch is not properly formatted and we&apos;re not supposed to take pull requests. The patch is missing attribution info. I normally apply patches with &quot;git am foo.patch&quot;. I used the following guide for figuring out how to generate patches that can be applied with &quot;git am&quot;, &lt;a href=&quot;http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git&quot;&gt;http://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git&lt;/a&gt;.&lt;/p&gt;</comment>
                    <comment id="29377" author="abrooks" created="Wed, 5 Sep 2012 09:25:29 -0500"  >&lt;p&gt;My apologies for the extra run-around here. I&apos;ve attached an -002 version of the patch created with git-format-patch which should be amenable to git-am.&lt;/p&gt;</comment>
                    <comment id="29381" author="dnolen" created="Wed, 5 Sep 2012 11:32:52 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/9bc6eb42be28bfd2b493657344f6eea8f5ed657c&quot;&gt;http://github.com/clojure/core.logic/commit/9bc6eb42be28bfd2b493657344f6eea8f5ed657c&lt;/a&gt;. pushing out a 0.8.0-alpha3 release as well.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11470" name="core.logic-rel-001.patch" size="1113" author="abrooks" created="Sat, 1 Sep 2012 20:15:44 -0500" />
                    <attachment id="11479" name="core.logic-rel-002.patch" size="1157" author="abrooks" created="Wed, 5 Sep 2012 09:25:29 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-51] fd comparison relations behave strange when used with literals</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-51</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The fd comparison relations always succeed when used with strings or a string and an integer:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;user&amp;gt; (run* [q]
 (&amp;lt;=fd &quot;foo&quot; &quot;bar&quot;))
(_.0)
user&amp;gt; (run* [q]
 (&amp;lt;=fd &quot;foo&quot; 1))
(_.0)
user&amp;gt; (run* [q]
 (&amp;lt;=fd 1 &quot;bar&quot;))
(_.0)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;IMHO, they should always fail if one argument is not a integer.&lt;/p&gt;

&lt;p&gt;Furthermore, you get an exception when comparing integers and the larger integer is given first.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;user&amp;gt; (run* [q]
 (&amp;lt;=fd 1 2))
(_.0)  ;; That&apos;s correct, but...
user&amp;gt; (run* [q]
 (&amp;lt;=fd 2 1))
IllegalArgumentException No implementation of method: :member? of protocol: #&apos;clojure.core.logic/ISet found for class: nil  clojure.core/-cache-protocol-fn (core_deftype.clj:533)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I&apos;d expect that comparisons of two integers should always work.  You can circumvent this issue by unifying the numbers with some logic variables first, but is that really needed?&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;user&amp;gt; (run* [q]
 (fresh [a b]
  (== a 1)
  (== b 2)
  (&amp;lt;=fd a b)))
(_.0)
user&amp;gt; (run* [q]
 (fresh [a b]
  (== a 1)
  (== b 2)
  (&amp;lt;=fd b a)))
()
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The first issue cannot be circumvented using this approach, though.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;user&amp;gt; (run* [q]
 (fresh [a b]
  (== a &quot;foo&quot;)
  (== b 2)
  (&amp;lt;=fd b a)))
(_.0)
user&amp;gt; (run* [q]
 (fresh [a b]
  (== a &quot;foo&quot;)
  (== b 2)
  (&amp;lt;=fd a b)))
(_.0)
user&amp;gt; (run* [q]
 (fresh [a b]
  (== a &quot;foo&quot;)
  (== b &quot;bar&quot;)
  (&amp;lt;=fd a b)))
(_.0)
user&amp;gt; (run* [q]
 (fresh [a b]
  (== a &quot;foo&quot;)
  (== b &quot;bar&quot;)
  (&amp;lt;=fd b a)))
(_.0)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>java version &amp;quot;1.7.0_07&amp;quot;&lt;br/&gt;
OpenJDK Runtime Environment (IcedTea7 2.3.2) (Gentoo build 1.7.0_07-b30)&lt;br/&gt;
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)&lt;br/&gt;
&lt;br/&gt;
org.clojure/clojure &amp;quot;1.5.0-alpha4&amp;quot;&lt;br/&gt;
org.clojure/core.logic &amp;quot;0.8-alpha3&amp;quot;</environment>
            <key id="15681">LOGIC-51</key>
            <summary>fd comparison relations behave strange when used with literals</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="tsdh">Tassilo Horn</reporter>
                        <labels>
                    </labels>
                <created>Fri, 7 Sep 2012 04:46:23 -0500</created>
                <updated>Fri, 26 Oct 2012 07:04:24 -0500</updated>
                    <resolved>Fri, 26 Oct 2012 07:04:24 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29399" author="dnolen" created="Fri, 7 Sep 2012 11:14:00 -0500"  >&lt;p&gt;Thanks for the report will look into it.&lt;/p&gt;</comment>
                    <comment id="29808" author="dnolen" created="Fri, 26 Oct 2012 01:06:19 -0500"  >&lt;p&gt;I see no particular need to validate inputs. The other issues should be resolved in one of the latest betas.&lt;/p&gt;</comment>
                    <comment id="29810" author="tsdh" created="Fri, 26 Oct 2012 02:01:50 -0500"  >&lt;p&gt;&amp;gt; I see no particular need to validate inputs.&lt;/p&gt;

&lt;p&gt;Well, the reported behavior (&quot;every non-integer is both smaller and greater than anything&quot;) is likely to hide bugs in queries.  But hey, even if you don&apos;t see a particular need, something you did fixed that problem anyhow. &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/wink.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;This is with 0.8.0-beta1:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;user&amp;gt; (run* [q] (&amp;lt;=fd 23 &quot;1&quot;))
IllegalArgumentException No implementation of method: :ub of protocol: #&apos;clojure.core.logic/IInterval found for class: java.lang.String  clojure.core/-cache-protocol-fn (core_deftype.clj:562)
user&amp;gt; (run* [q] (&amp;lt;=fd &quot;1&quot; 23))
IllegalArgumentException No implementation of method: :lb of protocol: #&apos;clojure.core.logic/IInterval found for class: java.lang.String  clojure.core/-cache-protocol-fn (core_deftype.clj:562)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;IMO, both an exception and simply failing would be ok in those situations.  Exception like now is probably even better.&lt;/p&gt;

&lt;p&gt;&amp;gt; The other issues should be resolved in one of the latest betas.&lt;/p&gt;

&lt;p&gt;Yes, it is.  Thanks a lot, David! Feel free to close this issue.&lt;/p&gt;</comment>
                    <comment id="29811" author="dnolen" created="Fri, 26 Oct 2012 07:04:24 -0500"  >&lt;p&gt;Thanks for the update!&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-64] Support inequalities in finite domain sugar</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-64</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The attached patch enables the follow code:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [x]
  (infd x (interval 0 9))
  (eqfd (!= 6 (* 2 x))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can also substitute != with &amp;lt;, &amp;gt;, &amp;gt;=, or &amp;lt;=&lt;/p&gt;</description>
                <environment></environment>
            <key id="15786">LOGIC-64</key>
            <summary>Support inequalities in finite domain sugar</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="bbloom">Brandon Bloom</reporter>
                        <labels>
                        <label>patch</label>
                        <label>patch,</label>
                    </labels>
                <created>Fri, 26 Oct 2012 22:37:35 -0500</created>
                <updated>Sat, 27 Oct 2012 11:33:23 -0500</updated>
                    <resolved>Sat, 27 Oct 2012 11:33:23 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29827" author="dnolen" created="Sat, 27 Oct 2012 11:33:23 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/423639c62584c0100f295cc87c1cf2f721e986e3&quot;&gt;http://github.com/clojure/core.logic/commit/423639c62584c0100f295cc87c1cf2f721e986e3&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11623" name="LOGIC-64-v1.patch" size="1843" author="bbloom" created="Fri, 26 Oct 2012 22:39:09 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-65] fix for corrupted rel indexes if retracting duplicate tuples</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-65</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;If a duplicate tuple is retracted from a rel, the rel indexes get corrupted, resulting in a NullPointerException when the following query is run:&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;(defrel rel2 ^:index e ^:index a ^:index v)
(facts rel2 [[:e1 :a1 :v1]
             [:e1 :a2 :v2]])
(retractions rel2 [[:e1 :a1 :v1]
                   [:e1 :a1 :v1]
                   [:e1 :a2 :v2]])

(deftest rel2-dup-retractions
  (is (= (run* [out]
               (fresh [e a v]
                      (rel2 e :a1 :v1)
                      (rel2 e a v)
                      (== [e a v] out))))
      &apos;()))
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="15804">LOGIC-65</key>
            <summary>fix for corrupted rel indexes if retracting duplicate tuples</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jeffdik">Jeff Dik</reporter>
                        <labels>
                    </labels>
                <created>Tue, 30 Oct 2012 12:33:30 -0500</created>
                <updated>Tue, 30 Oct 2012 18:37:49 -0500</updated>
                    <resolved>Tue, 30 Oct 2012 18:37:49 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="29874" author="dnolen" created="Tue, 30 Oct 2012 18:37:49 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/715aebfbfc95f4332d98539583fd664b92e4810f&quot;&gt;http://github.com/clojure/core.logic/commit/715aebfbfc95f4332d98539583fd664b92e4810f&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11642" name="0001-fix-for-corrupted-rel-indexes-if-retracting-duplicat.patch" size="1949" author="jeffdik" created="Tue, 30 Oct 2012 12:33:30 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-100] pruning of unsatisfiable non-ground disequalities</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-100</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Not sure whether we actually want to do anything about this.&lt;/p&gt;

&lt;p&gt;When running this snippet,&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [a b]
    (== q [a b])
    (!= a q)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;we get the result:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(([_0 _1] :- (!= (_0 [_0 _1]))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The reified != constraint is arguably spurious, because of the occurs-check.&lt;/p&gt;

&lt;p&gt;Even if we instantiate the a:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [a b]
    (== q [a b])
    (!= a q)
    (== a 1)))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;we get the result:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(([1 _0] :- (!= (1 [1 _0]))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;while there is no way the != constraint can be satisfied.&lt;/p&gt;

&lt;p&gt;Thoughts?&lt;/p&gt;</description>
                <environment></environment>
            <key id="15949">LOGIC-100</key>
            <summary>pruning of unsatisfiable non-ground disequalities</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="namin">Nada Amin</reporter>
                        <labels>
                    </labels>
                <created>Mon, 7 Jan 2013 06:50:16 -0600</created>
                <updated>Mon, 7 Jan 2013 11:00:06 -0600</updated>
                    <resolved>Mon, 7 Jan 2013 11:00:06 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30384" author="namin" created="Mon, 7 Jan 2013 07:25:17 -0600"  >&lt;p&gt;logic-100.diff contains a hackish fix: use unify instead of not= to deal with non-ground terms. Also, don&apos;t add the constraint if you know that some pairs cannot be unified upfront (this is needed b/c disunify and unify are not consistent wrt occurs-check).&lt;/p&gt;</comment>
                    <comment id="30387" author="dnolen" created="Mon, 7 Jan 2013 08:37:14 -0600"  >&lt;p&gt;Well it is possible to disable occurs-check. Why can&apos;t we just use the existing occurs-check fn to do this work?&lt;/p&gt;</comment>
                    <comment id="30388" author="namin" created="Mon, 7 Jan 2013 09:35:22 -0600"  >&lt;p&gt;There are two issues. The first one is that it&apos;s too conservative to just prune != constraints by checking that ground term pairs are not=, because &lt;span class=&quot;error&quot;&gt;&amp;#91;1 w&amp;#93;&lt;/span&gt; and &lt;span class=&quot;error&quot;&gt;&amp;#91;2 z&amp;#93;&lt;/span&gt; should also be pruned. Here is an extra test case illustrating this:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(deftest test-logic-100-disequality-3
  (is (= (run* [q]
           (fresh [x y w z]
             (== x [1 w])
             (== y [2 z])
             (!= x y)))
        &apos;(_0)))
  (is (= (run* [q]
           (fresh [x y w z]
             (!= x y)
             (== x [1 w])
             (== y [2 z])))
        &apos;(_0))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;On master, the second one fails b/c it has the extra constraint&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(!= ([1 _1] [2 _2]))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;which we ought to prune.&lt;/p&gt;

&lt;p&gt;The second issue is that disunify does not take the occurs-check into account, so it can create a !=c that is not considered runnable, but if run, would be rightly pruned by the new unify clause (if the occurs-check is enabled).&lt;/p&gt;</comment>
                    <comment id="30389" author="dnolen" created="Mon, 7 Jan 2013 10:39:23 -0600"  >&lt;p&gt;Ok, makes sense. Can we get a new patch using master. This one doesn&apos;t apply anymore. Thanks!&lt;/p&gt;</comment>
                    <comment id="30390" author="namin" created="Mon, 7 Jan 2013 10:50:27 -0600"  >&lt;p&gt;logic-100-rebase.diff is a new patch against master. I also added the extra tests discussed above.&lt;/p&gt;</comment>
                    <comment id="30394" author="dnolen" created="Mon, 7 Jan 2013 11:00:06 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/770e027858bde711121abb9267854966a4dd92ed&quot;&gt;http://github.com/clojure/core.logic/commit/770e027858bde711121abb9267854966a4dd92ed&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11794" name="logic-100.diff" size="2390" author="namin" created="Mon, 7 Jan 2013 07:25:17 -0600" />
                    <attachment id="11796" name="logic-100-rebase.diff" size="2723" author="namin" created="Mon, 7 Jan 2013 10:50:27 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-107] Less dependencies for non-dev environments?</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-107</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I am considering using core.logic, but after looking into its dependencies I am hesitating. Should I really pull in datomic and google closure if I just want to use core.logic in a normal Clojure project?&lt;/p&gt;</description>
                <environment></environment>
            <key id="15974">LOGIC-107</key>
            <summary>Less dependencies for non-dev environments?</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jeroen">Jeroen van Dijk</reporter>
                        <labels>
                        <label>feedback</label>
                    </labels>
                <created>Tue, 22 Jan 2013 10:20:01 -0600</created>
                <updated>Tue, 22 Jan 2013 10:37:58 -0600</updated>
                    <resolved>Tue, 22 Jan 2013 10:37:58 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30470" author="jeroen" created="Tue, 22 Jan 2013 10:28:37 -0600"  >&lt;p&gt;Sorry I think I spoke to soon. When I include core.logic in my project it doesn&apos;t pull in other dependencies, I have been misled by the project.clj of core.logic which declares Google closure and datomic as dependencies. &lt;/p&gt;

&lt;p&gt;Apologies for the disturbance and thanks for a great library.&lt;/p&gt;</comment>
                    <comment id="30471" author="dnolen" created="Tue, 22 Jan 2013 10:37:58 -0600"  >&lt;p&gt;Yes the project.clj is for development purposes only. It&apos;s not used to resolve dependencies.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-110] Allow anonymous constraints</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-110</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Add `fnc` macro that defines anonymous constraints.&lt;br/&gt;
Rename `defc` to `defnc` for consistency.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15987">LOGIC-110</key>
            <summary>Allow anonymous constraints</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="lynaghk">Kevin Lynagh</reporter>
                        <labels>
                    </labels>
                <created>Mon, 4 Feb 2013 00:53:14 -0600</created>
                <updated>Mon, 4 Feb 2013 16:03:59 -0600</updated>
                    <resolved>Mon, 4 Feb 2013 16:03:59 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30543" author="dnolen" created="Mon, 4 Feb 2013 11:36:12 -0600"  >&lt;p&gt;Can we get a squashed patch please? Thanks!&lt;/p&gt;</comment>
                    <comment id="30544" author="lynaghk" created="Mon, 4 Feb 2013 11:57:59 -0600"  >&lt;p&gt;Update with squashed patch.&lt;/p&gt;</comment>
                    <comment id="30545" author="lynaghk" created="Mon, 4 Feb 2013 15:17:15 -0600"  >&lt;p&gt;Sorry about that---exported a bad squashed patch earlier. This latest one passes all tests.&lt;/p&gt;</comment>
                    <comment id="30546" author="dnolen" created="Mon, 4 Feb 2013 16:03:59 -0600"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/f015355c6cc375294c7b6a4b29565b62f0a68e27&quot;&gt;http://github.com/clojure/core.logic/commit/f015355c6cc375294c7b6a4b29565b62f0a68e27&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11833" name="7ef6256a0e36888e0539b56d489a75dcf6072d70.patch" size="5357" author="lynaghk" created="Mon, 4 Feb 2013 11:57:59 -0600" />
                    <attachment id="11834" name="anon-constraints.patch" size="5361" author="lynaghk" created="Mon, 4 Feb 2013 15:17:15 -0600" />
                    <attachment id="11831" name="anon-constraints.patch" size="8595" author="lynaghk" created="Mon, 4 Feb 2013 00:53:14 -0600" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-34] Unification should carry along metadata</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-34</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Unification should not swallow metadata:&lt;/p&gt;

&lt;p&gt;(run* &lt;span class=&quot;error&quot;&gt;&amp;#91;q&amp;#93;&lt;/span&gt;&lt;br/&gt;
       (== q (quote ^:haz-meta-daytuhs (form form form))))&lt;/p&gt;

&lt;p&gt;should yield&lt;/p&gt;

&lt;p&gt;(^:haz-meta-daytuhs (form form form))&lt;/p&gt;
</description>
                <environment></environment>
            <key id="15296">LOGIC-34</key>
            <summary>Unification should carry along metadata</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="lynaghk">Kevin Lynagh</reporter>
                        <labels>
                    </labels>
                <created>Mon, 26 Mar 2012 22:58:23 -0500</created>
                <updated>Wed, 28 Mar 2012 11:11:30 -0500</updated>
                    <resolved>Wed, 28 Mar 2012 10:48:22 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="28019" author="lynaghk" created="Mon, 26 Mar 2012 23:04:32 -0500"  >&lt;p&gt;Also available at&lt;/p&gt;

&lt;p&gt;    &lt;a href=&quot;https://github.com/lynaghk/core.logic/tree/34-unification-metadata&quot;&gt;https://github.com/lynaghk/core.logic/tree/34-unification-metadata&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="28020" author="dnolen" created="Mon, 26 Mar 2012 23:10:38 -0500"  >&lt;p&gt;That doesn&apos;t seem right. Metadata should be available on the form but not present in the result of the query.&lt;/p&gt;</comment>
                    <comment id="28021" author="lynaghk" created="Mon, 26 Mar 2012 23:36:15 -0500"  >&lt;p&gt;I&apos;m not sure what you mean; if you unify the query and a form with metadata, then the result should have that same form with the same metadata.&lt;/p&gt;

&lt;p&gt;In that example I have (set! &lt;b&gt;print-meta&lt;/b&gt; true); in the usual repl the result is just ((form form form)).&lt;/p&gt;</comment>
                    <comment id="28022" author="dnolen" created="Mon, 26 Mar 2012 23:41:19 -0500"  >&lt;p&gt;Oh gotcha, sorry I didn&apos;t realize you had set the compiler flag. Will take a look at the patch.&lt;/p&gt;</comment>
                    <comment id="28032" author="dnolen" created="Wed, 28 Mar 2012 10:48:22 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;https://github.com/clojure/core.logic/commit/7f4ad132af7a825839a12ff3c33e375610e6f315&quot;&gt;https://github.com/clojure/core.logic/commit/7f4ad132af7a825839a12ff3c33e375610e6f315&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="28034" author="lynaghk" created="Wed, 28 Mar 2012 11:11:30 -0500"  >&lt;p&gt;Rad, thanks David!&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11015" name="34-unification-metadata.txt" size="3618" author="lynaghk" created="Mon, 26 Mar 2012 23:04:32 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10002">Code and Test</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-74] Bug in conde (ClojureScript)</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-74</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;While working on a project I found a somewhat strange behaviour. I reworked the problem in some simple predicate. Let&apos;s take this predicate foobad.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn foobad 
  [?bar]
  (l/project [?bar]
    (l/fresh [?&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;]
      (l/conde 
        [(l/== &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; (instance? js/Array ?bar))
          (membero ?&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt; (seq ?bar))]))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When running (l/run* &lt;span class=&quot;error&quot;&gt;&amp;#91;?f&amp;#93;&lt;/span&gt; (foobad 0)) it produces this error:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;#&amp;lt;Error: No protocol method ISeqable.-seq defined for type number: 0&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Because 0 is not an instance of Array it should not be entering that conde clause where it tries (seq 0).&lt;/p&gt;

&lt;p&gt;With this workaround we get a normal behaviour:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(defn foo 
  [?bar]
  (l/project [?bar]
    (l/fresh [?&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt;]
      (l/conde 
        [(l/== &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt; (instance? js/Array ?bar)) 
         (fresh [?s]
          (l/== ?s (seq ?bar))
          (membero ?&lt;span class=&quot;code-keyword&quot;&gt;var&lt;/span&gt; ?s))]))))&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt; 

&lt;p&gt;Running (l/run* &lt;span class=&quot;error&quot;&gt;&amp;#91;?f&amp;#93;&lt;/span&gt; (foo 0)) gives us (), which is what we expect.&lt;br/&gt;
While 0 is clearly not an instance of Array that conde clause is still executed resulting in previous error.&lt;/p&gt;</description>
                <environment>[org.clojure/clojure &amp;quot;1.4.0&amp;quot;]&lt;br/&gt;
[org.clojure/core.logic &amp;quot;0.8.0-beta2&amp;quot;]</environment>
            <key id="15857">LOGIC-74</key>
            <summary>Bug in conde (ClojureScript)</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="kdevalck">Kevin De Valck</reporter>
                        <labels>
                        <label>bug</label>
                    </labels>
                <created>Mon, 26 Nov 2012 03:45:48 -0600</created>
                <updated>Sun, 17 Mar 2013 19:00:30 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 19:00:30 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30335" author="dnolen" created="Fri, 28 Dec 2012 00:49:59 -0600"  >&lt;p&gt;I&apos;m assuming this is referring the ClojureScript version of core.logic?&lt;/p&gt;</comment>
                    <comment id="30786" author="dnolen" created="Sun, 17 Mar 2013 19:00:30 -0500"  >&lt;p&gt;This is not a bug. Goals do not delay evaluation in this way.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-83] test rel2-dup-retractions may need a fix</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-83</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;src/test/clojure/clojure/core/logic/tests.clj&lt;/p&gt;

&lt;p&gt;function rel2-dup-retractions&lt;/p&gt;

&lt;p&gt;parentheses may need a fix -&amp;gt; (== ...)&lt;/p&gt;

&lt;p&gt;changing the expected expr from &apos;() to &apos;(:x) does&lt;br/&gt;
not make this test fail for me. &lt;/p&gt;

&lt;p&gt;i like core.logic ... thanks for making it happen&lt;/p&gt;</description>
                <environment>all</environment>
            <key id="15919">LOGIC-83</key>
            <summary>test rel2-dup-retractions may need a fix</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="faenvie">Fanny Aenvie</reporter>
                        <labels>
                    </labels>
                <created>Sun, 23 Dec 2012 06:48:30 -0600</created>
                <updated>Sun, 17 Mar 2013 19:08:31 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 19:08:31 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30788" author="dnolen" created="Sun, 17 Mar 2013 19:08:31 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/ae66b6fe7ff36b9fbb82edad7d227ecadd4e4af4&quot;&gt;http://github.com/clojure/core.logic/commit/ae66b6fe7ff36b9fbb82edad7d227ecadd4e4af4&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-131] Docstrings for lvaro and nonlvaro need improvement.</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-131</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Assuming the following definitions:&lt;/p&gt;

&lt;p&gt;1. A term is ground if it does not contain unassociated logic variables.&lt;br/&gt;
2. Otherwise, it is non-ground.&lt;/p&gt;

&lt;p&gt;My suggestions:&lt;/p&gt;

&lt;p&gt;lvaro: A non-relational goal that succeeds if the supplied logic variable is fresh.&lt;/p&gt;

&lt;p&gt;nonlvaro: A non-relational goal that succeeds if the supplied logic variable is not fresh.&lt;/p&gt;

&lt;p&gt;In the case nonlvaro, it&apos;s important to recognize that the implementation only tests whether the supplied lvar is not fresh, and &quot;not fresh&quot; != grounded; the result could be partially instantiated. For example, nonlvaro succeeds here when its argument is neither fresh nor grounded:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;(run* [q]
  (fresh [x]
    (== q [x])
    (nonlvaro q)))
;; =&amp;gt; ([_0])&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
            <key id="16153">LOGIC-131</key>
            <summary>Docstrings for lvaro and nonlvaro need improvement.</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="austinhaas">Austin Haas</reporter>
                        <labels>
                        <label>documentation</label>
                    </labels>
                <created>Mon, 22 Apr 2013 12:24:19 -0500</created>
                <updated>Tue, 7 May 2013 22:29:08 -0500</updated>
                    <resolved>Tue, 7 May 2013 22:29:08 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="30983" author="austinhaas" created="Mon, 22 Apr 2013 12:26:39 -0500"  >&lt;p&gt;I added those initial definitions when I thought &quot;groundedness&quot; was the operative word, so they aren&apos;t directly relevant.&lt;/p&gt;</comment>
                    <comment id="30984" author="dnolen" created="Mon, 22 Apr 2013 12:29:08 -0500"  >&lt;p&gt;Thanks, I&apos;ll happily accept docstring patches.&lt;/p&gt;</comment>
                    <comment id="31061" author="austinhaas" created="Tue, 7 May 2013 14:11:37 -0500"  >&lt;p&gt;This patch changes the docstrings for lvaro and nonlvaro to be more accurate. This is a fix for &lt;a href=&quot;http://dev.clojure.org/jira/browse/LOGIC-131&quot; title=&quot;Docstrings for lvaro and nonlvaro need improvement.&quot;&gt;&lt;del&gt;LOGIC-131&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                    <comment id="31070" author="dnolen" created="Tue, 7 May 2013 22:29:08 -0500"  >&lt;p&gt;fixed &lt;a href=&quot;http://github.com/clojure/core.logic/commit/cc30fcb4f5690e928fa7103e5091b9de8aba0013&quot;&gt;http://github.com/clojure/core.logic/commit/cc30fcb4f5690e928fa7103e5091b9de8aba0013&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11986" name="LOGIC-131-fix.diff" size="1108" author="austinhaas" created="Tue, 7 May 2013 14:11:37 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-93] eliminate FDConstraint, use a template instead of delegation</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-93</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Currently the all different goals will exhibit entailment issues since they have implementations of `IRelevant` that just return `true`.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15939">LOGIC-93</key>
            <summary>eliminate FDConstraint, use a template instead of delegation</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                <priority id="4" iconUrl="http://dev.clojure.org/jira/images/icons/priority_minor.gif">Minor</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="dnolen">David Nolen</reporter>
                        <labels>
                    </labels>
                <created>Thu, 3 Jan 2013 00:12:55 -0600</created>
                <updated>Fri, 17 May 2013 00:57:05 -0500</updated>
                    <resolved>Fri, 17 May 2013 00:57:05 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30403" author="dnolen" created="Mon, 7 Jan 2013 19:03:49 -0600"  >&lt;p&gt;FD constraints are always forced at the end so this is not a blocker.&lt;/p&gt;</comment>
                    <comment id="31096" author="dnolen" created="Fri, 17 May 2013 00:57:05 -0500"  >&lt;p&gt;fixed&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-12] Improved warnings/errors for pattern matching</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-12</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;I&apos;ve added some simple syntax checks for the pattern matching macros like matche.&lt;/p&gt;


&lt;p&gt;clojure.core.logic.prelude=&amp;gt; (let &lt;span class=&quot;error&quot;&gt;&amp;#91;x 1&amp;#93;&lt;/span&gt;&lt;br/&gt;
                               (matche &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;&lt;br/&gt;
                                       (1 &lt;span class=&quot;error&quot;&gt;&amp;#91;1 1&amp;#93;&lt;/span&gt; 1)))&lt;br/&gt;
#&amp;lt;CompilerException java.lang.RuntimeException: java.lang.Exception: Expecting vector of matches, instead 1, compiling:(REPL:53)&amp;gt;&lt;/p&gt;

&lt;p&gt;clojure.core.logic.prelude=&amp;gt; (let &lt;span class=&quot;error&quot;&gt;&amp;#91;x 1&amp;#93;&lt;/span&gt;&lt;br/&gt;
                               (matche &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;&lt;br/&gt;
                                       (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 1&amp;#93;&lt;/span&gt; 1)))&lt;br/&gt;
#&amp;lt;prelude$eval4469$fn_&lt;em&gt;4471 clojure.core.logic.prelude$eval4469$fn&lt;/em&gt;_4471@e9ebe1&amp;gt;&lt;br/&gt;
WARNING: Differing number of matches. Matching &lt;span class=&quot;error&quot;&gt;&amp;#91;1 1&amp;#93;&lt;/span&gt; against &lt;span class=&quot;error&quot;&gt;&amp;#91;x&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;clojure.core.logic.prelude=&amp;gt; (let &lt;span class=&quot;error&quot;&gt;&amp;#91;x 1&amp;#93;&lt;/span&gt;&lt;br/&gt;
                               (matche &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/error.gif&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;br/&gt;
                                       (&lt;span class=&quot;error&quot;&gt;&amp;#91;1 1&amp;#93;&lt;/span&gt; 1)))&lt;br/&gt;
#&amp;lt;CompilerException java.lang.Exception: Expecting vector of arguments, instead &lt;img class=&quot;emoticon&quot; src=&quot;http://dev.clojure.org/jira/images/icons/emoticons/error.gif&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;, compiling:(REPL:58)&amp;gt;&lt;/p&gt;

&lt;p&gt;Attached patch.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14590">LOGIC-12</key>
            <summary>Improved warnings/errors for pattern matching</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Tue, 30 Aug 2011 08:59:59 -0500</created>
                <updated>Thu, 1 Sep 2011 19:32:20 -0500</updated>
                    <resolved>Thu, 1 Sep 2011 19:32:20 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26742" author="ambrosebs" created="Tue, 30 Aug 2011 09:01:26 -0500"  >&lt;p&gt;Whoops, the patch is missing the definition for &quot;warn&quot;.&lt;/p&gt;</comment>
                    <comment id="26743" author="ambrosebs" created="Tue, 30 Aug 2011 09:09:10 -0500"  >&lt;p&gt;Added correct patch.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10324" name="syntax-check.patch" size="1387" author="ambrosebs" created="Tue, 30 Aug 2011 09:00:00 -0500" />
                    <attachment id="10325" name="syntax-check-with-warn.patch" size="1634" author="ambrosebs" created="Tue, 30 Aug 2011 09:09:10 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-14] Typo in docstring</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-14</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;The docstring in clojure.core.logic.arithmatic/&amp;lt;= has a typo in &quot;whether&quot;.&lt;/p&gt;</description>
                <environment></environment>
            <key id="14592">LOGIC-14</key>
            <summary>Typo in docstring</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Wed, 31 Aug 2011 00:03:26 -0500</created>
                <updated>Thu, 1 Sep 2011 19:33:31 -0500</updated>
                    <resolved>Thu, 1 Sep 2011 19:33:31 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26749" author="dnolen" created="Thu, 1 Sep 2011 19:33:20 -0500"  >&lt;p&gt;Fixed&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Approval</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10007">Ok</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                    <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>

<item>
            <title>[LOGIC-10] Add documentation strings to stable functions</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-10</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Candidates:&lt;/p&gt;

&lt;p&gt;clojure.core.logic.minikanren&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;==&lt;/li&gt;
	&lt;li&gt;conde&lt;/li&gt;
	&lt;li&gt;exist&lt;/li&gt;
	&lt;li&gt;run&lt;/li&gt;
	&lt;li&gt;run*&lt;/li&gt;
	&lt;li&gt;lvar, lvar?&lt;/li&gt;
	&lt;li&gt;lcons, lcons?&lt;/li&gt;
	&lt;li&gt;llist&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;clojure.core.logic.prelude:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;nilo, emptyo, conso, firsto, resto, membero&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;clojure.core.logic.nonrel:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;project&lt;/li&gt;
	&lt;li&gt;lvaro, nonlvaro&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
            <key id="14485">LOGIC-10</key>
            <summary>Add documentation strings to stable functions</summary>
                <type id="3" iconUrl="http://dev.clojure.org/jira/images/icons/task.gif">Task</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="ambrosebs">Ambrose Bonnaire-Sergeant</reporter>
                        <labels>
                    </labels>
                <created>Thu, 14 Jul 2011 05:17:15 -0500</created>
                <updated>Sun, 20 Nov 2011 15:38:28 -0600</updated>
                    <resolved>Sun, 20 Nov 2011 15:38:28 -0600</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="26584" author="ambrosebs" created="Mon, 18 Jul 2011 11:47:50 -0500"  >&lt;p&gt;Docstrings for relational functions.&lt;/p&gt;</comment>
                    <comment id="26585" author="dnolen" created="Wed, 20 Jul 2011 06:59:57 -0500"  >&lt;p&gt;I&apos;d rather not document lvar/lvar?. They are not really meant to be used directly. The docstring of lcons should be changed to say that it constructs a sequence a with an improper tail if d is a logic variable. llist should read similarly.&lt;/p&gt;

&lt;p&gt;unify should probably say &quot;a goal which attempts to unify u and v&quot;. Goals do not return &quot;successful&quot; or &quot;failed&quot; goals. They themselves either succeed or fail.&lt;/p&gt;

&lt;p&gt;For exist we should probably rename x-rest to lvars and g-rest to goals. In run rename rest to goals, ditto for run*.&lt;/p&gt;</comment>
                    <comment id="26586" author="ambrosebs" created="Wed, 20 Jul 2011 07:07:18 -0500"  >&lt;p&gt;I thought unify was a relation, not a goal?&lt;/p&gt;</comment>
                    <comment id="26587" author="dnolen" created="Wed, 20 Jul 2011 07:10:53 -0500"  >&lt;p&gt;There is no difference between &quot;relation&quot; and &quot;goal&quot;. conso is the relational counterpart to cons - it is most definitely a goal. It will either fail or succeed based on other elements in a particular miniKanren program.&lt;/p&gt;</comment>
                    <comment id="26588" author="ambrosebs" created="Wed, 20 Jul 2011 09:08:11 -0500"  >&lt;p&gt;Second iteration&lt;/p&gt;</comment>
                    <comment id="26589" author="ambrosebs" created="Wed, 20 Jul 2011 09:09:39 -0500"  >&lt;p&gt;Should we document succeed and fail?&lt;/p&gt;

&lt;p&gt;I&apos;m not pleased with my wording on llist.&lt;/p&gt;</comment>
                    <comment id="27323" author="dnolen" created="Sun, 20 Nov 2011 15:20:35 -0600"  >&lt;p&gt;I&apos;m assuming this ticket is no longer relevant?&lt;/p&gt;</comment>
                    <comment id="27325" author="ambrosebs" created="Sun, 20 Nov 2011 15:37:15 -0600"  >&lt;p&gt;Yes, can be closed&lt;/p&gt;</comment>
                    <comment id="27326" author="dnolen" created="Sun, 20 Nov 2011 15:38:28 -0600"  >&lt;p&gt;fixed&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10282" name="0001-Added-docstrings.patch" size="2874" author="ambrosebs" created="Wed, 20 Jul 2011 09:08:11 -0500" />
                    <attachment id="10280" name="0001-Added-docstrings.patch" size="2691" author="ambrosebs" created="Mon, 18 Jul 2011 11:47:50 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-66] Add test-paths to project.clj to be able to run tests with lein2</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-66</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;Add test-paths to project.clj to be able to run tests with lein2.  Also remove &quot;src/test/clojure&quot; from :source-paths.&lt;/p&gt;</description>
                <environment></environment>
            <key id="15805">LOGIC-66</key>
            <summary>Add test-paths to project.clj to be able to run tests with lein2</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="jeffdik">Jeff Dik</reporter>
                        <labels>
                    </labels>
                <created>Tue, 30 Oct 2012 12:37:20 -0500</created>
                <updated>Tue, 30 Oct 2012 18:39:58 -0500</updated>
                    <resolved>Tue, 30 Oct 2012 18:39:58 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="29875" author="dnolen" created="Tue, 30 Oct 2012 18:39:58 -0500"  >&lt;p&gt;fixed, &lt;a href=&quot;http://github.com/clojure/core.logic/commit/d36af9f47bf194f253ba84d68973d6b7e9a53774&quot;&gt;http://github.com/clojure/core.logic/commit/d36af9f47bf194f253ba84d68973d6b7e9a53774&lt;/a&gt;&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="11643" name="0002-project.clj-update-src-test-paths-to-run-tests-with-.patch" size="1042" author="jeffdik" created="Tue, 30 Oct 2012 12:37:20 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>

<item>
            <title>[LOGIC-33] Added usage section to readme.md</title>
                <link>http://dev.clojure.org/jira/browse/LOGIC-33</link>
                <project id="10020" key="LOGIC">core.logic</project>
                        <description>&lt;p&gt;added a short usage section in readme.md&lt;/p&gt;

&lt;p&gt;the latest working repo was 0.6.7 for me, so that&apos;s what in the patch. (i have signed CA)&lt;/p&gt;</description>
                <environment></environment>
            <key id="15282">LOGIC-33</key>
            <summary>Added usage section to readme.md</summary>
                <type id="4" iconUrl="http://dev.clojure.org/jira/images/icons/improvement.gif">Enhancement</type>
                                <priority id="5" iconUrl="http://dev.clojure.org/jira/images/icons/priority_trivial.gif">Trivial</priority>
                    <status id="5" iconUrl="http://dev.clojure.org/jira/images/icons/status_resolved.gif">Resolved</status>
                    <resolution id="2">Declined</resolution>
                                <assignee username="dnolen">David Nolen</assignee>
                                <reporter username="claj">Linus Ericsson</reporter>
                        <labels>
                        <label>documentation</label>
                    </labels>
                <created>Thu, 15 Mar 2012 22:21:01 -0500</created>
                <updated>Sun, 17 Mar 2013 19:11:55 -0500</updated>
                    <resolved>Sun, 17 Mar 2013 19:11:55 -0500</resolved>
                                                                    <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="30789" author="dnolen" created="Sun, 17 Mar 2013 19:11:55 -0500"  >&lt;p&gt;Basic usage has since been added to README.md&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10994" name="usage-added.patch" size="893" author="claj" created="Thu, 15 Mar 2012 22:21:01 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                            <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                <customfieldname>Patch</customfieldname>
                <customfieldvalues>
                        <customfieldvalue key="10001">Code</customfieldvalue>

                </customfieldvalues>
            </customfield>
                                                                                        </customfields>
    </item>
</channel>
</rss>