From f22e0b24ef04f4657241714ad402c8f3d240e72a Mon Sep 17 00:00:00 2001 From: Brandon Bloom Date: Fri, 26 Oct 2012 20:38:16 -0700 Subject: [PATCH] LOGIC-64: Adds sugar syntax for inequalities in finite domains --- src/main/clojure/clojure/core/logic.clj | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/clojure/clojure/core/logic.clj b/src/main/clojure/clojure/core/logic.clj index a23ac8e..76e2c09 100644 --- a/src/main/clojure/clojure/core/logic.clj +++ b/src/main/clojure/clojure/core/logic.clj @@ -3223,6 +3223,18 @@ (<=fd u v) (!=fd u v))) +(defn >fd + "A finite domain constraint. u must be greater than v. u and v + must eventually be given domains if vars." + [u v] + (<=fd v u)) + +(defn >=fd + "A finite domain constraint. u must be greater than or equal to v. + u and v must eventually be given domains if vars." + [u v] + (fd - '{+ clojure.core.logic/+fd - - clojure.core.logic/-fd - * clojure.core.logic/*fd - / clojure.core.logic/quotfd - = clojure.core.logic/==}) + '{+ clojure.core.logic/+fd + - clojure.core.logic/-fd + * clojure.core.logic/*fd + / clojure.core.logic/quotfd + = clojure.core.logic/== + != clojure.core.logic/!=fd + <= clojure.core.logic/<=fd + < clojure.core.logic/= clojure.core.logic/>=fd + > clojure.core.logic/>fd}) + +(def binops (set (keys binops->fd))) (defn expand [form] (if (seq? form) -- 1.7.12