;; $Id: type-check-env.def,v 1.7 1999/06/23 16:57:22 leavens Exp $
;; types for environments

trustme! ;; suppress warnings from the type checker for these declarations

(defrep (env V T) (list (pair V T)))

(deftype tc:env? (-> (datum) (env V T)))
(deftype tc:env-empty (-> () (env V T)))
(deftype tc:env-empty? (-> ((env V T)) boolean))
(deftype tc:env-update (-> (V T (env V T)) (env V T)))
(deftype tc:env-update* (-> ((list V) (list T) (env V T)) (env V T)))
(deftype tc:env-join (-> ((env V T) (env V T)) (env V T)))
(deftype tc:env-bound? (-> (V (env V T)) boolean))
(deftype tc:env-value (-> (V (env V T)) T))
(deftype tc:env-map (-> ((-> (pair V T) (pair U S)) (env V T)) (env U S)))
(deftype tc:env-first (-> ((env V T)) (pair V T)))
(deftype tc:env-rest (-> ((env V T)) (env V T)))
(deftype tc:assoc-list->env (-> ((list (pair V T))) (env V T)))
