I know how to declare an ADT of course. The hard part is how to construct values of the AST or rather how to declare the AST in such a way that it will be easy to construct incrementally (reusing common code) and lazily from 2 different source data structures with non-local knowledge. Kastree is homomorphic to Psi and completely strict, that makes the whole thing much easier.