-2

我需要将以下命题转换为序言代码,但我不明白运算符是如何工作的。我通常使用java。

“牛仔裤只是休闲,正装裤只是正式,kakis只是半正式,腰带不是休闲,黑色袜子随时都可以接受。休闲= C,半正式= SF,正式= F,牛仔裤= J,正装裤= DP, Kakis = K, 腰带 = B, 黑袜子 = BS.J -> C, DP -> F, K -> SF, B -> !C, BS -> (C v SF v F)"

这是我已经拥有的代码:

casual(jeans).
formal(dress_pants, belt, black_socks).
semiFormal(khakis).
formal(belt).
semiFormal(belt).
casual(black_socks).
formal(black_socks).
semiFormal(black_socks).
4

1 回答 1

0

非正式地,一元谓词p可以被视为集合P,因此,文字p(X)可以被视为集合成员资格测试X∈P。因此,目标的p(X)真假命题)取决于X是否属于集合P。

句子“牛仔裤只是休闲,正装裤只是正式,kakis只是半正式,腰带不是休闲,黑色袜子随时可以接受。 ”可以表示为集合:

  • 休闲= {牛仔裤, black_socks }。
  • 正式= { dress_pants腰带black_socks }
  • semi_formal = {卡其裤,腰带, black_socks }

这些集合可以在 Prolog 中通过以下事实来表示:

casual(jeans).
casual(black_socks).

formal(dress_pants).
formal(belt).
formal(black_socks).

semi_formal(khakis).
semi_formal(belt).
semi_formal(black_socks).

以下是关于这些事实的一些 Prolog 查询:

?- casual(jeans).
true.

?- casual(belt).
false.

?- casual(X).
X = jeans ;
X = black_socks.

?- formal(X).
X = dress_pants ;
X = belt ;
X = black_socks.

?- semi_formal(X).
X = khakis ;
X = belt ;
X = black_socks.
于 2021-02-28T13:14:04.390 回答