Date: Feb 20, 2013 5:51 AM
Author: Graham Cooper
Subject: PROVE ALL NATURALS ARE NOT EVEN! ~ALL(X) p(X) <-> EXIST(X) ~p(X)
BLOCK PROLOG is really coming along!
This proof outline uses
~ALL(X) p(X) <-> EXIST(X) ~p(X)
Now I can (automatically) prove that not all numbers are even!
~ALL(n):N div(n,2,0)
-->
!(subset(nats,evens))
nat(0)
nat(s(X)) <- nats(X)
even(0)
even(s(s(X))) <- even(X)
odd(s(0))
odd(s(s(X))) <- odd(X)
!(odds) <- evens
!(evens) <- odds
**** DEFINE SETS AS PLURALS****
e(X,nats) <- nat(X)
e(X,evens) <- even(X)
e(X,odds) <- odd(X)
!(!(intersect(nats,!(evens))))
intersect(nats,odds)
e(X,nats) ^ e(X,odds)
nats(X) ^ odds(X)
nats(0) ^ odds(0) FAIL
nats(s(0)) ^ odds(s(0))
Basically it uses Set Reasoning instead of ALL(x) Logic
and finds the counterexample Number 1!
!(subset(S1,S2))
<->
intersect(S1,!(S2))
Herc
--
www.BLoCKPROLOG.com