引言
上次写了16组等价公式定律,今天继续用Prolog写9组逻辑蕴涵公式。
感觉这些公式的名称与公式挺难一一对应来记忆的,只能多练习了.
1. 附加律 (Addition)
A ⇒ A∨B
当你拿到一个苹果(A),突然你知道,即使有了梨(B),你依然拥有苹果。这就是附加律的奇妙之处!如同魔术师,展示了这种简单却深刻的真理。
fun1(A,B,Z):-
member(A,[false,true]),
member(B,[false,true]),
((A->(A;B);true)->Z=true;Z=false),
format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
2. 化简律 (Simplification)
(A∧B)⇒A
有了一篮子水果(A 和 B),但你只想要一个苹果(A)。化简律就像是从繁到简的艺术,巧妙地帮你从复杂中找到简单。
fun2(A,B,Z):-
member(A,[false,true]),
member(B,[false,true]),
(((A,B)->A;true)->Z=true;Z=false),
format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
3. 假言推理 (Modus Ponens)
(A→B)∧A⇒B
如果吃苹果(A)能让你快乐(B),那么当你吃苹果时,快乐就会随之而来。就是这样一个快乐的制造者!
fun3(A,B,Z):-
member(A,[false,true]),
member(B,[false,true]),
((((A->B;true),A)->B;true)->Z=true;Z=false),
format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
4. 拒取式 (Modus Tollens)
(A→B)∧¬B⇒¬A
如果苹果能带来快乐,但你不快乐,那么你可能没有吃苹果。这就是其聪明之处,通过否定的结果找到原因。
fun4(A,B,Z):-
member(A,[false,true]),
member(B,[false,true]),
((((A->B;true),\+ B)-> \+ A;true)->Z=true;Z=false),
format('A = ~w,B = ~w, Z = ~w~n',[A,B,Z]),fail.
5. 析取三段论 (Disjunctive Syllogism)
(A∨B)∧¬B⇒A
苹果或梨(A 或 B),如果不是梨,那肯定是苹果。就像是逻辑世界的侦探,排除不可能,找到答案。
fun5(A,B,Z):-
member(A,[false,true]),
member(B,[false,true]),
((((A;B), \+ B ) -> A ; true)->Z=true;Z=false),
format('A = ~w,B = ~w, Z=~w~n',[A,B,Z]),fail.
6. 假言三段论 (Hypothetical Syllogism)
(A→B)∧(B→C)⇒(A→C)
苹果带来快乐,快乐带来舞蹈,那么苹果就能带来舞蹈!展示了这一系列逻辑链条的美妙。
fun6(A,B,C,Z):-
member(A,[false,true]),
member(B,[false,true]),
member(C,[false,true]),
((((A->B;true),(B->C;true))->(A->C;true);true)->Z=true;Z=false),
format('A = ~w,B = ~w,C = ~w, Z = ~w~n',[A,B,C,Z]),fail.
7. 等价三段论
(A↔B)∧(B↔C)⇒(A↔C)
如果苹果像梨,梨像桃子,那么苹果就像桃子。逻辑世界中的等价转换大师。
fun7(A,B,C,Z):-
member(A,[false,true]),
member(B,[false,true]),
member(C,[false,true]),
(((equal(A,B),equal(B,C)->equal(A,C));true)->Z=true;Z=false),
format('A = ~w,B = ~w,C = ~w, Z = ~w~n',[A,B,C,Z]),fail.
8. 构造性二难 (Constructive Dilemma)
(A→B)∧(C→D)∧(A∨C)⇒(B∨D)
如果苹果能让你快乐,梨能让你舞蹈,那么苹果或梨都能给你快乐或舞蹈。你得到很多选项时,也同样要面对开心选择的烦恼。
fun8(A,B,C,D,Z):-
member(A,[false,true]),
member(B,[false,true]),
member(C,[false,true]),
member(D,[false,true]),
(((contain(A,B),contain(C,D),(A;C)->(B;D));true)->Z=true;Z=false),
format('A = ~w,B = ~w,C = ~w,D = ~w,Z = ~w~n',[A,B,C,D,Z]),fail.
9. 破坏性二难 (Destructive Dilemma)
(A→B)∧(C→D)∧(¬B∨¬D)⇒(¬A∨¬C)
如果苹果不再快乐,梨不再跳舞,那么失去苹果或梨都将失去快乐或舞蹈。 揭示了逻辑中的另一个面,有时也需面对失去的选择障碍。
fun9(A,B,C,D,Z):-
member(A,[false,true]),
member(B,[false,true]),
member(C,[false,true]),
member(D,[false,true]),
(((contain(A,B),contain(C,D),(\+B;\+D)->(\+A;\+C));true)->Z=true;Z=false),
format('A = ~w,B = ~w,C = ~w,D = ~w,Z = ~w~n',[A,B,C,D,Z]),fail.
结语
希望通过这些生动的比喻和 Prolog 代码,让我们记住逻辑蕴涵推理的魅力。其实,逻辑不仅是理性的,还挺有乐趣和需要充分想象力的!