@INPROCEEDINGS{Hanus18PPDP,
author = "Hanus, M.",
title = "Verifying Fail-Free Declarative Programs",
year = "2018",
pages = "12:1-12:13",
publisher = "ACM Press",
booktitle = "Proc.\ of the 20th International Symposium on
             Principle and Practice of Declarative Programming (PPDP 2018)"
abstract = {
Failed computations are a frequent problem in software system
development. Some failures have external reasons (e.g., missing
files) that can be caught by exception handlers. Many other
failures have internal reasons, such as calling a partially defined
operation with unintended arguments. In order to avoid the latter
kind of failures, one can try to analyze the program at compile time
for potential occurrences of these failures at run time. In this
paper we present an approach to verify the absence of such failures
in functional logic programs. Since programming with failures is a
typical technique in logic programming, we are not interested to
abandon partially defined operations at all. Instead, we want to
verify conditions which ensure that operations can be executed
without running into a failure. For this purpose, we propose to
annotate operations with non-fail conditions that are verified at
compile time with an SMT solver. For successfully verified
programs, it is ensured that computations never fail provided that
the non-fail condition of the main operation is satisfied.
}
}

