  Unintended failures during a computation are painful but frequent during
software development. Failures due to external reasons (e.g., missing files, no
permissions) can be caught by exception handlers. Programming failures, such as
calling a partially defined operation with unintended arguments, are often not
caught due to the assumption that the software is correct. This paper presents
an approach to verify such assumptions. For this purpose, non-failure
conditions for operations are inferred and then checked in all uses of
partially defined operations. In the positive case, the absence of such
failures is ensured. In the negative case, the programmer could adapt the
program to handle possibly failing situations and check the program again. Our
method is fully automatic and can be applied to larger declarative programs.
The results of an implementation for functional logic Curry programs are
presented.
