let rec flatten xs = function
  | Tapp"zunion" , es ) -> List.fold_left flatten xs es
  | Tapp"zempty" , [] ) -> xs
  | t -> t::xs