X. X->Y. ------ Y.
Y. X->Y. ------ X.
W: | same_weight(woman,duck). | (according to the scale) |
F: | same_weight(X,Y) and floats(Y) -> floats(X). | (false premiss, possibly acceptable in middle ages) |
Df: | floats(duck). | (premiss - OK most ducks float) |
Wf: | is_wood(X)->floats(X). | (premiss - OK most woods float) |
Wob: | is_wood(X)->burns(X). | (premiss - OK most woods burn) |
Wib: | is_witch(X)->burns(X). | (premiss - questionable...) |
T1:is_wood(X)->is_witch(X). Proof: A1: is_wood(X). P1: burns(X). (A1 and Wob by Modus Ponens) witch(X). (P1 and Wib by Modus Bogus)
Prop1: floats(woman). Proof: F and Df and W using Modus Ponens Prop2: is_wood(woman). Proof: Prop1 and Wf using Modus Bogus Prop3: is_witch(woman). Proof: Prop2 and T1 using Modus PonensBurn!! Burn!!
Wb: | is_wood(X)->can_build_bridge_with(X). | (premiss - OK most wood can be used for bridges) |
Bw: | can_build_bridge_with(woman). | (presumably by attempting to do this) |
T1: True. T2: False -> TrueThese both hold, verify by checking truth tables. Very short truth tables.
T3: FalseThen, since we have False -> P for any proposition P, we get:
T4: False -> (is_witch(woman))T3, T4 and modus ponens give:
is_witch(woman)
%%would really like to put this here: %:- include('modusbogus.pl'). same_weight(woman,duck). is_wood(bridge). floats(duck). floats(X):-same_weight(X,Y),floats(Y). floats(X):-is_wood(X). burns(X):-is_wood(X). burns(X):-is_witch(X).