Open issues

EQ conditions which match against a negative result fail to find any results.
LOGIC-188
*locals* is unbound in some calls to `p->term`
LOGIC-187
spurious disequality constraints
LOGIC-186
finite domain uncomplete results
LOGIC-185
The extension of IDisunifyTerms to LCons calls seq on lcons values. LCons doesn't implement ISeq
LOGIC-183
An lvar unified with a keyword behaves differently from a keyword
LOGIC-182
Running rembero returns :- (!= _0 _0)
LOGIC-181
spec detects error in -inc macro
LOGIC-180
Disequality might not eliminate when `(!= (_0 _0))`
LOGIC-175
LCons fails for inequality
LOGIC-174
StackOverflowError when logic variable is unified with a set
LOGIC-173
nafc doesn't work with more complex goals
LOGIC-172
The docstring of condu is incorrect or at least confusing
LOGIC-171
Allow partial matching of keys not existing in a map
LOGIC-168
Add non-interleaving version of conde
LOGIC-165
FD logic doesn't always return all solutions
LOGIC-162
Finite Domains - Two consecutive calls to run* return different results
LOGIC-156
walk* of an empty set overflows the stack
LOGIC-154
Extending cljs.core.logic with all of the functionality from clojure.core.logic
LOGIC-144
Unified map values are returned as LVar rather than the unified value in ClojureScript
LOGIC-142
compile time occurs check for pattern matching
LOGIC-140
Make benchmark suite as easy to run as `lein test`
LOGIC-136
Add label goal
LOGIC-133
matcha/matchu are not faithful to the semantics of conda/condu
LOGIC-129
tie disequality
LOGIC-119
one-shot constraints with multiple rands may run more than once
LOGIC-117
stack overflow with conda/u
LOGIC-114
StackOverflow for large `appendo`
LOGIC-99
The order of constraits matters?
LOGIC-189
binding to a deep nested vector takes too much time
LOGIC-177
Extending IUnifyTerms doesn't work anymore
LOGIC-176
Replacing Marker Interfaces
LOGIC-170
walk* exponential in depth of tree terms?
LOGIC-166
deftest test-34-unify-with-metadata appears incorrect
LOGIC-153
run macro should take * in addition to n
LOGIC-146
dcg: def--> ClassCastException
LOGIC-141
Allow tying multiple noms in one binder
LOGIC-138
StackOverFlowError when walking over set
LOGIC-130
add mod/rem/abs/min/max
LOGIC-128
Allow unification with sequential in both directions
LOGIC-123
Allow application again in pattern matches
LOGIC-89
Decomplect the narrowing of the constraint space from the search order
LOGIC-87
make `defc` more useful
LOGIC-86
support for defaults in the simple unifier
LOGIC-70
add Prolog meta-logical predicates bagof, setof, findall
LOGIC-68
fd/in should provide a default domain if none specified
LOGIC-48
is macro needs to be improved
LOGIC-47
ex* could expand macros in patterns
LOGIC-44
LVar should print readably
LOGIC-43
Logic Threading Macro
LOGIC-38
issue 1 of 59

EQ conditions which match against a negative result fail to find any results.

Description

I was trying to follow the example provided by [this blog post](https://mattsenior.com/2014/02/using-clojures-core-logic-to-solve-simple-number-puzzles) and found that it only worked if I removed the conditions that test for subtraction with a negative result. I removed a lot of different things and found that even this basic example does not find any matches:

```
(ns example.core
(:refer-clojure :exclude [==])
(:require [clojure.core.logic :refer :all])
(:require [clojure.core.logic.fd :as fd]))

(run* [q]
(fresh [a0 a1]
(== q [a0 a1])
(fd/in a0 a1 (fd/interval 1 9))
(fd/- a0 a1 -1)
;(fd/eq
; (= (- a0 a1) -1))
))
```

Dependencies (though I tried clojure 1.8 and 1.9 too):
```
:dependencies [[org.clojure/clojure "1.7.0"]
[org.clojure/core.logic "0.8.11"]]
```

Environment

OS: Mac OSX
JVM:
java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Status

Assignee

David Nolen

Reporter

Stephen Hopper

Labels

Approval

None

Patch

None

Priority

Major