Logic programming in Clojure