Forward checking works, but is imperfect