私たちは教室でプロローグを学び始めたばかりで、最初の演習は次のようになります。
問題:
注: a と b のようなアトムは無限にあるのではなく、2 つだけであると仮定します。
a) 命題論理式の帰納的定義を翻訳する (つまり、定義 1 を翻訳する) プロローグ プログラムを作成します。これには、次を使用する必要があります。
1.) 原子式を表す単項述語 "at" (つまり、"at(f)" は "F は原子式である" を意味します。ここで、f は定数です)。
2.) 式を示すための単項述語「fmla」(つまり、「fmla(F)」は「F は式である」を意味します)。
3.) 否定を表す単項演算「neg」(つまり、「neg(F)」は ¬F を表します)。
4.) 二項演算「or」は、2 つの式の論理和を表します (つまり、「or(F,G)」は (F∨G) を表します)。
試み:
at(a). % Our first atom.
at(b). % Our second atom.
fmla(F):-
at(F).
neg(F):-
fmla(F).
or(F,G):-
fmla(F), fmla(G).
fmla(F):-
or(F,G),
neg(F),
fmla(G).
有効な式の例: (~A v B) ---> or(neg(a), b)。
プログラムを構築した方法は正しいと思いますが、再帰部分は機能しません(シングルトンエラーも発生しています)。私はこれを何時間も理解しようとしましたが、役に立ちませんでした。どんな助けでも大歓迎です。