;;; $Id: lexical-addr-exp.def,v 1.4 1999/02/08 21:30:03 leavens Exp $

trustme!  ;; suppress type errors

(defrep lexical-addr-exp datum)

(deftype la:lexical-addr-exp? (-> (datum) boolean))
(deftype la:varref? (-> (lexical-addr-exp) boolean))
(deftype la:quote? (-> (lexical-addr-exp) boolean))
(deftype la:lambda? (-> (lexical-addr-exp) boolean))
(deftype la:if? (-> (lexical-addr-exp) boolean))
(deftype la:app? (-> (lexical-addr-exp) boolean))
(deftype la:varref->lexical-addr (-> (lexical-addr-exp) lexical-addr))
(deftype la:quote->symbol (-> (lexical-addr-exp) symbol))
(deftype la:lambda->formals (-> (lexical-addr-exp) (list symbol)))
(deftype la:lambda->body (-> (lexical-addr-exp) lexical-addr-exp))
(deftype la:app->rator (-> (lexical-addr-exp) lexical-addr-exp))
(deftype la:app->rands (-> (lexical-addr-exp) (list lexical-addr-exp)))
(deftype la:if->test-exp (-> (lexical-addr-exp) lexical-addr-exp))
(deftype la:if->then-exp (-> (lexical-addr-exp) lexical-addr-exp))
(deftype la:if->else-exp (-> (lexical-addr-exp) lexical-addr-exp))
(deftype la:make-varref (-> (lexical-addr) lexical-addr-exp))
(deftype la:make-quote (-> (symbol) lexical-addr-exp))
(deftype la:make-lambda (-> ((list symbol) lexical-addr-exp) lexical-addr-exp))
(deftype la:make-if
  (-> (lexical-addr-exp lexical-addr-exp lexical-addr-exp) lexical-addr-exp))
(deftype la:make-app
  (-> (lexical-addr-exp (list lexical-addr-exp)) lexical-addr-exp))
(deftype la:parse-lexical-addr-exp (-> (datum) lexical-addr-exp))
