  A \emph{data automaton} is a finite automaton equipped with variables
(counters or registers) ranging over infinite data domains. A trace of a data
automaton is an alternating sequence of alphabet symbols and values taken by
the counters during an execution of the automaton. The problem addressed in
this paper is the inclusion between the sets of traces (data languages)
recognized by such automata. Since the problem is undecidable in general, we
give a semi-algorithm based on abstraction refinement, which is proved to be
sound and complete, but whose termination is not guaranteed. We have
implemented our technique in a~prototype tool and show promising results on
several non-trivial examples.
