;; $Id$

(defrep v-exp datum)

(deftype v-exp?  (-> (datum) boolean))
(deftype varref?        (-> (v-exp) boolean))
(deftype minus?         (-> (v-exp) boolean))
(deftype vector-length? (-> (v-exp) boolean))
(deftype vector-ref?    (-> (v-exp) boolean))
(deftype make-varref    (-> (symbol) v-exp))
(deftype make-number    (-> (number) v-exp))
(deftype make-minus     (-> (v-exp v-exp) v-exp))
(deftype make-vector-length (-> (v-exp) v-exp))
(deftype make-vector-ref (-> (v-exp v-exp) v-exp))
(deftype varref->symbol  (-> (v-exp) symbol))
(deftype number->value   (-> (v-exp) number))
(deftype minus->left     (-> (v-exp) v-exp))
(deftype minus->right    (-> (v-exp) v-exp))
(deftype vector-length->exp (-> (v-exp) v-exp))
(deftype vector-ref->vec (-> (v-exp) v-exp))
(deftype vector-ref->index (-> (v-exp) v-exp))
(deftype parse-v-exp (-> (datum) v-exp))
