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