Backtracking logic-programming monad
