let rec zunion = function
    | [z] -> z
    | [] -> e_app M.empty []
    | z::zs -> e_app M.union [ z ; zunion zs ]