let union a b =
    rev (rev_append_uniq (rev_append_uniq [] a) b)