type declarations are accounted for in Core-XML by adding expressions of the form: abstype(tz,..., tn)t -- C 1 ofTzl'" Ic m oft m with xz: Pl -- el,"', xk: Pk = e in e. Informally, the effect of an abstype declaration is to introduce a "private" concrete data type for use in the definition of the "public" operations in the with clause, but hiding this declaration from the "client" expression e, which has access only to these public operations. More precisely, the scope of the constructors Cl,..., c is limited to the definitions e,..., e of xz,..., x, even though the scope of the type constructor t includes not only the e,'s but also the body e. On the other hand, the scope of the variables xz,..., x naming the public operations is limited to e. (We omit, for simplicity, the possibility of mutually recursive definitions of the public operations.) ACM Transactions on Programmzng Languages and Systems, Vol. 15, No 2, April 1993. The representation of abstype expressions in XML is similar to the representation of datatype expressions, except that the recursive type is kept abstract by making the value constructors and case analysis forms available only in the definitions of the operations of the abstract type. Thus an abstype expression of the above form is represented by the expression abstypet: U U 1 withx: p is (fix(): U - Ul,p: p) in e where p is the expression of type p = p x--- Pk, and where the expressions 0, a,..., e%+, and dl,..., d,, + are as above.