Adapting functional programs to higher order logic

Scott Owens, Konrad Slind
2008 Higher-Order and Symbolic Computation  
Higher-order logic proof systems combine functional programming with logic, providing functional programmers with a comfortable setting for the formalization of programs, specifications, and proofs. However, a possibly unfamiliar aspect of working in such an environment is that formally establishing program termination is necessary. In many cases, termination can be automatically proved, but there are useful programs that diverge and others that always terminate but have difficult termination
more » ... oofs. We discuss techniques that support the expression of such programs as logical functions. Three programs, a depth-first search, an unfold, and a regular expression matcher are used to demonstrate the techniques.
doi:10.1007/s10990-008-9038-0 fatcat:5dk4ydvakze7je3swx4eoi7yci