<!-- 
RSS generated by JIRA (4.4#649-r158309) at Mon May 20 22:21:14 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/si/jira.issueviews:issue-xml/LOGIC-95/LOGIC-95.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<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>
</channel>
</rss>