序言中的命题逻辑困难
Difficulty with propositional logic in 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)
将是 true 或 false (即一个命题),这取决于 X 是否属于集合P
句子“牛仔裤只是休闲装,正装裤只是正式装,卡其裤只是半正式装,腰带不是休闲装,黑袜子什么时候都可以。”可以是表示为集合:
- 休闲 = {牛仔裤,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.
我需要将以下命题转换为序言代码,但我不了解运算符的工作原理。我一般用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)
将是 true 或 false (即一个命题),这取决于 X 是否属于集合P
句子“牛仔裤只是休闲装,正装裤只是正式装,卡其裤只是半正式装,腰带不是休闲装,黑袜子什么时候都可以。”可以是表示为集合:
- 休闲 = {牛仔裤,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.