;;; $Id: lambda-cond-letrec-exp.def,v 1.3 1999/01/22 17:36:04 leavens Exp $

trustme! ;; suppress spurious type errors

(defrep lambda-cond-letrec-exp datum)

(deftype lambda-cond-letrec-exp? (-> (datum) boolean))
(deftype varref? (-> (lambda-cond-letrec-exp) boolean))
(deftype quote?   (-> (lambda-cond-letrec-exp) boolean))
(deftype lambda?  (-> (lambda-cond-letrec-exp) boolean))
(deftype if?  (-> (lambda-cond-letrec-exp) boolean))
(deftype lambda-cond-letrec-exp:last-item (-> ((list T)) T))
(deftype cond?  (-> (lambda-cond-letrec-exp) boolean))
(deftype let?  (-> (lambda-cond-letrec-exp) boolean))
(deftype letrec?  (-> (lambda-cond-letrec-exp) boolean))
(deftype app?  (-> (lambda-cond-letrec-exp) boolean))
(deftype varref->var (-> (lambda-cond-letrec-exp) symbol))
(deftype quote->symbol (-> (lambda-cond-letrec-exp) symbol))
(deftype lambda->formals (-> (lambda-cond-letrec-exp) (list symbol)))
(deftype lambda->body (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype app->rator (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype app->rands (-> (lambda-cond-letrec-exp) (list lambda-cond-letrec-exp)))
(deftype if->test-exp (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype if->then-exp (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype if->else-exp (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype lambda-cond-letrec-exp:but-last (-> ((list T)) (list T)))
(deftype cond->clauses (-> (lambda-cond-letrec-exp) (list (cond-clause lambda-cond-letrec-exp))))
(deftype cond->else-exp (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype let->decls (-> (lambda-cond-letrec-exp) (list (decl lambda-cond-letrec-exp))))
(deftype let->body (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype letrec->decls (-> (lambda-cond-letrec-exp) (list (decl lambda-cond-letrec-exp))))
(deftype letrec->body (-> (lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype make-varref (-> (symbol) lambda-cond-letrec-exp))
(deftype make-quote (-> (symbol) lambda-cond-letrec-exp))
(deftype make-lambda (-> ((list symbol) lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype make-if (-> (lambda-cond-letrec-exp lambda-cond-letrec-exp lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype make-cond (-> ((list (cond-clause lambda-cond-letrec-exp)) lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype make-let (-> ((list (decl lambda-cond-letrec-exp)) lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype make-letrec (-> ((list (decl lambda-cond-letrec-exp)) lambda-cond-letrec-exp) lambda-cond-letrec-exp))
(deftype make-app (-> (lambda-cond-letrec-exp (list lambda-cond-letrec-exp)) lambda-cond-letrec-exp))
(deftype parse-lambda-cond-letrec-exp (-> (datum) lambda-cond-letrec-exp))
