;;; Types

syn-struc := *top* &
[ CATEG cat,
  NUMAGR agr ].

cat := *top*.

s := cat.

np := cat.

vp := cat.

det := cat.

n := cat.

agr := *top*.

sg := agr.

pl := agr.

phrase := syn-struc &
[ ARGS *list* ].

word := syn-struc &
[ ORTH string ].

sg-word := word &
[ NUMAGR sg ].

pl-word := word &
[ NUMAGR pl ].

;;; standard types

string := *top*.

*list* := *top*.

*ne-list* := *list* &
 [ FIRST *top*,
   REST *list* ].

*null* := *list*.

;bar := *top*.

;noun-type := *null* & *null* & < >.