|
@@ -39,38 +39,45 @@
|
|
|
|
|
|
(defrule sub
|
|
|
(and "sub(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(- ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(- ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule mul
|
|
|
(and "mul(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(* ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(* ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule div
|
|
|
(and "div(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(/ ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(/ ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule modr
|
|
|
(and "mod(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(mod ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(mod ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule powr
|
|
|
(and "pow(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(expt ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(expt ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule minr
|
|
|
(and "min(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(min ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(min ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule maxr
|
|
|
(and "max(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(max ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(max ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule if-then (and "if(" bool-expr "," int-expr "," int-expr ")")
|
|
|
(:destructure (_ condition __ true-case ___ false-case ____)
|
|
@@ -100,38 +107,45 @@
|
|
|
|
|
|
(defrule iff-expr
|
|
|
(and "iff(" bool-expr "," bool-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(iff ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(iff ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule eq-expr
|
|
|
(and "eq(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(= ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(= ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule neq-expr
|
|
|
(and "ne(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(not (= ,expr-a ,expr-b))))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(not (= ,expr-a ,expr-b))))
|
|
|
|
|
|
(defrule ge-expr
|
|
|
(and "ge(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(>= ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(>= ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule gt-expr
|
|
|
(and "gt(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(> ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(> ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule le-expr
|
|
|
(and "le(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(<= ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(<= ,expr-a ,expr-b)))
|
|
|
|
|
|
(defrule lt-expr
|
|
|
(and "lt(" int-expr "," int-expr ")")
|
|
|
- (:destructure (_ expr-a __ expr-b ___) (declare (ignore _ __ ___))
|
|
|
- `(< ,expr-a ,expr-b)))
|
|
|
+ (:destructure (_ expr-a __ expr-b ___)
|
|
|
+ (declare (ignore _ __ ___))
|
|
|
+ `(< ,expr-a ,expr-b)))
|
|
|
|
|
|
(defun parse-xcsp-predicate (expression-string arguments-list &key (compile-p t))
|
|
|
(let* ((expression (parse 'bool-expr expression-string))
|