我需要将以下命题转换为序言代码,我不理解操作符是如何工作的。我通常使用java。
"牛仔裤只适合休闲,西裤只适合正式,卡其裤只适合半正式,腰带不适合休闲,黑袜子可以随时接受。休闲= C,半正式= SF,正式= F,牛仔裤= J,西裤= DP, Kakis = K,腰带= B,黑袜= BS。J→C, DP ->F, K ->SF, B ->C, b>(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).
一个一元谓词p
可以看作是一个集合p因此,字面量p(X)
可以看作集合隶属度检验X∈P. 因此,目标p(X)
将为true错误或(即命题),取决于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.