"A Declarative Debugger for a Logical-Functional Language" という論文を読みました。
NUE-Prolog という Prolog 処理系の説明から始まります。関数型の関数呼び出しを論理型のパターンマッチに統合して扱うことができるというもので、関数型の遅延評価もサポートしているとのことです。
本題としては、ステップ実行やトレースという手続き型向けの方法のかわりに、oracle を参照して proof tree を探索し誤りを見つけるという手法が説明されています。文中では oracle を得るためにデバグを行うプログラマに対話的に問い合わせるという形になっています。デバグの対象になるプログラムの例は "Algorithmic Program Debugging" からとられているようです。Declarative debugging について知らなくてもこれらの例のおかげで分かりすいです。ただし実装についてはほとんど触れられていません。
参考