;;; $Id$

trustme!  ;; suppress type errors

(defrep parsed-exp datum)

(deftype varref? (-> (parsed-exp) boolean))
(deftype lit? (-> (parsed-exp) boolean))
(deftype app? (-> (parsed-exp) boolean))
(deftype square? (-> (parsed-exp) boolean))
(deftype multiply? (-> (parsed-exp) boolean))
(deftype varref->var (-> (parsed-exp) symbol))
(deftype lit->datum (-> (parsed-exp) number))
(deftype app->rator (-> (parsed-exp) parsed-exp))
(deftype app->rands (-> (parsed-exp) (list parsed-exp)))
(deftype square->arg-exp (-> (parsed-exp) parsed-exp))
(deftype multiply->left-exp (-> (parsed-exp) parsed-exp))
(deftype multiply->right-exp (-> (parsed-exp) parsed-exp))
(deftype make-varref (-> (symbol) parsed-exp))
(deftype make-lit (-> (number) parsed-exp))
(deftype make-square (-> (parsed-exp) parsed-exp))
(deftype make-multiply (-> (parsed-exp parsed-exp) parsed-exp))
(deftype make-app (-> (parsed-exp (list parsed-exp)) parsed-exp))
(deftype parse (-> (datum) parsed-exp))
(deftype unparse (-> (parsed-exp) datum))
