prolog中命题逻辑的困难

prolog中命题逻辑的困难,prolog,propositional-calculus,Prolog,Propositional Calculus,我需要将以下命题转换为prolog代码,但我不理解操作符是如何工作的。我通常使用java “牛仔裤只穿休闲装,正装裤只穿正式装,卡基斯裤只穿半正式装,腰带不穿休闲装,黑袜子随时都可以接受。 休闲装=C,半正式装=SF,正式装=F,牛仔裤=J,正装裤=DP,卡基斯=K,腰带=B,黑袜子=BS。 J->C,DP->F,K->SF,B->!C,BS->(C v SF v F)” 以下是我已有的代码: casual(jeans). formal(dress_pants, belt, black_sock

我需要将以下命题转换为prolog代码,但我不理解操作符是如何工作的。我通常使用java

“牛仔裤只穿休闲装,正装裤只穿正式装,卡基斯裤只穿半正式装,腰带不穿休闲装,黑袜子随时都可以接受。 休闲装=C,半正式装=SF,正式装=F,牛仔裤=J,正装裤=DP,卡基斯=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).

非正式地说,一元谓词
p
可以被视为一个集合p,因此,字面
p(X)
可以被视为集合成员测试X∈P。因此,一个目标
p(X)
将是truefalse(即命题),这取决于X是否属于p集合

“牛仔裤只是休闲的,正装裤只是正式的,卡基斯只是半正式的,腰带不是休闲的,黑袜子随时都可以接受”这句话可以表示为:

  • 休闲装={牛仔裤黑袜子
  • 正式的={礼服裤腰带黑袜子
  • 半正式={卡其色腰带黑色短袜}
这些集合可以用事实在Prolog中表示:

casual(jeans).
casual(black_socks).

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

semi_formal(khakis).
semi_formal(belt).
semi_formal(black_socks).
以下是关于这些事实的一些序言查询:

?- 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.

这里的输入和输出是什么?非常感谢!如果我想创建一个函数,可以接受一个着装规范或一套服装,然后返回另一套呢。这就是我到目前为止所拥有的:穿(Dcode,of it):-衣服(Dcode,of it)。