; $Id: atomic-tree.def,v 1.8 1999/02/25 03:36:38 leavens Exp $

trustme!  ; this makes the type checker suppress errors

(defrep (tree T) (list (atomic-expression T)))

(deftype tree? (-> (datum) boolean))

(deftype tree (-> ((atomic-expression T)...) (tree T)))

(deftype tree-empty (-> () (tree T)))

(deftype tree-add (-> ((atomic-expression T) (tree T)) (tree T)))

(deftype tree-add-atom (-> (T (tree T)) (tree T)))

(deftype tree-add-tree (-> ((tree T) (tree T)) (tree T)))

(deftype tree-null? (-> ((tree T)) boolean))

(deftype tree-first-atomic? (-> ((tree T)) boolean))

(deftype tree-first-tree? (-> ((tree T)) boolean))

(deftype tree-first (-> ((tree T)) (atomic-expression T)))

(deftype tree-first-atom (-> ((tree T)) T))

(deftype tree-first-tree (-> ((tree T)) (tree T)))

(deftype tree-rest (-> ((tree T)) (tree T)))

(deftype parse-tree (-> (datum) (tree datum)))
