;;; $Id: arith-expr.def,v 1.5 1999/02/21 22:40:27 leavens Exp $

trustme!

(defrep arith-expr datum)

(deftype literal? (-> (arith-expr) boolean))
(deftype make-literal (-> (number) arith-expr))
(deftype literal->number (-> (arith-expr) number))
(deftype op-call? (-> (arith-expr) boolean))
(deftype make-op-call (-> (arith-expr symbol arith-expr) arith-expr))
(deftype op-call->left-arg (-> (arith-expr) arith-expr))
(deftype op-call->op (-> (arith-expr) symbol))
(deftype op-call->right-arg (-> (arith-expr) arith-expr))
(deftype unary-minus? (-> (arith-expr) boolean))
(deftype make-unary-minus (-> (arith-expr) arith-expr))
(deftype unary-minus->arg (-> (arith-expr) arith-expr))

(deftype arith-expr? (-> (datum) boolean))
(deftype parse-arith-expr (-> (datum) arith-expr))
(deftype unparse-arith-expr (-> (arith-expr) datum))
