A: Dはうそつきです
B: AとDのどちらかは本当のことを言っています
C: Bの言っていることは本当です
D: 私はうそつきではありません

正直者は必ず本当のことを言っています。
うそつきは必ずうそをつきます。
うそつきはいったい誰?

↑この問題って高階述語になるから一階述語論理しか扱えないPrologでは解けないって理解でいいの?
そうだとしたら現代ではコンピューターでどうやって解くの?