Take the 2-minute tour ×  Two related questions in one:  Can
Clojure's core.logic module perform arithmetic, logical
comparison, etc, like ordinary Prolog? I am envisioning
something like the following:  (defrel points person n)  (fact
:bob 2) (fact :charlie 3) (run* [q] (fresh [x y]     (points
:bob x)     (points :charlie y)     (< x y)     (== q (+ x y))))
=> (5)  In this example, neither the logical comparison (< x y)
nor the attempted binding of q to (+ x y) works. I suppose that
this is because I'm working with LVars, not integers at this
point, and I can't make these comparisons because the symbols
aren't yet bound. But it works in prolog:  points(bob, 2).
points(charlie, 3). ?- points(bob, X), points(charlie, Y),
Result is X + Y.  => Result = 5.  In a similar vein, can I
somehow use Clojure functions (which return booleans or other
"truthy" values) as logic predicates? In other words, to use
functions to tell Minikanren which terms unify or not. Something
along the lines of:  (defmagic startswithhi-o