We address in this paper the question of how to verify program properties in modern functional logic languages, where it is allowed the presence of non-deterministic functions with call-time choice semantics. The main problem to face is that for such kind of programs equational reasoning is not valid. We develop some logical conceptual tools providing sound reasoning mechanisms for these programs, in particular for proving properties valid in the initial model of a program. We show how CRWL, a well known logical framework for functional logic programming, can be easily mapped into logic programming, and we use this mapping as a starting point of our work. We explore then how to prove properties of the resulting logic programming translation by means of different existing interactive proof assistants, and afterwards we give some proposals trying to overcome the limitations of the approach, specially with respect to its theoretical strength.
The use of proof assistants to verify functional logic programs has been pioneered in REF , where the call-time choice semantics has been formalized with different proof tools.
A logic programming approach to the verification of functional-logic programs
PPDP '04
Computer Science