  The development of complex software requires tools promoting fail-fast
approaches, so that bugs and unexpected behavior can be quickly identified and
fixed. Tools for data validation may save the day of computer programmers. In
fact, processing invalid data is a waste of resources at best, and a drama at
worst if the problem remains unnoticed and wrong results are used for business.
Answer Set Programming (ASP) is not an exception, but the quest for better and
better performance resulted in systems that essentially do not validate data.
Even under the simplistic assumption that input/output data are eventually
validated by external tools, invalid data may appear in other portions of the
program, and go undetected until some other module of the designed software
suddenly breaks. This paper formalizes the problem of data validation for ASP
programs, introduces a language to specify data validation, and presents
\textsc{valasp}, a tool to inject data validation in ordinary programs. The
proposed approach promotes fail-fast techniques at coding time without imposing
any lag on the deployed system if data are pretended to be valid. Validation
can be specified in terms of statements using YAML, ASP and Python.
Additionally, the proposed approach opens the possibility to use ASP for
validating data of imperative programming languages. Under consideration for
acceptance in TPLP.
