hw4

In [1]:
from utils import *
from logic import *
from notebook import psource
In [65]:
c = PropKB()
In [66]:
c.tell(expr('A & B'))
In [67]:
c.clauses
Out[67]:
[A, B]
In [69]:
c.ask_if_true(expr('A <=> B'))
Out[69]:
True
In [70]:
d=PropKB()
In [71]:
d.tell(expr('A <=> B'))
In [72]:
d.clauses
Out[72]:
[(A | ~B), (B | ~A)]
In [73]:
d.ask_if_true(expr('A | B'))
Out[73]:
False
In [74]:
e = PropKB()
In [75]:
e.tell(expr('A <=> B'))
In [76]:
e.clauses
Out[76]:
[(A | ~B), (B | ~A)]
In [77]:
e.ask_if_true(expr('~A | B'))
Out[77]:
True
In [78]:
f = PropKB()
In [79]:
f.tell(expr('(A | B) ==> C'))
In [80]:
f.clauses
Out[80]:
[(~A | C), (~B | C)]
In [81]:
f.ask_if_true(expr('(A ==> C) | (B ==> C)'))
Out[81]:
True
In [82]:
g = PropKB()
In [83]:
g.tell(expr('C | (~A & ~B)'))
In [84]:
g.clauses
Out[84]:
[(~A | C), (~B | C)]
In [48]:
kb3.clauses
Out[48]:
[(~A | A), (B | A), (~A | ~B), (B | ~B)]
In [85]:
g.ask_if_true(expr('(A ==> C) & (B ==> C)'))
Out[85]:
True
In [86]:
h = PropKB()
In [87]:
h.tell(expr('(A | B) & (~C | ~D | E)'))
In [88]:
h.clauses
Out[88]:
[(A | B), (~C | ~D | E)]
In [89]:
h.ask_if_true(expr('A | B'))
Out[89]:
True
In [90]:
i = PropKB()
In [91]:
i.tell(expr('(A | B) & (~C | ~D | E)'))
In [94]:
i.clauses
Out[94]:
[(A | B), (~C | ~D | E)]
In [93]:
i.ask_if_true(expr('(A | B) & (~D | E)'))
Out[93]:
False

Unicorn Problem

In [106]:
ukb = PropKB()
In [107]:
ukb.tell(expr('Mythical ==> Immortal'))
In [108]:
ukb.tell(expr('~Mythical ==> (~Immortal & Mammal)'))
In [109]:
ukb.tell(expr('(Immortal | Mammal) ==> Horned'))
In [110]:
ukb.tell(expr('Horned ==> Magical'))
In [111]:
ukb.clauses
Out[111]:
[(Immortal | ~Mythical),
 (~Immortal | Mythical),
 (Mammal | Mythical),
 (~Immortal | Horned),
 (~Mammal | Horned),
 (Magical | ~Horned)]
In [112]:
ukb.ask_if_true(expr('Mythical'))
Out[112]:
False
In [113]:
ukb.ask_if_true(expr('~Mythical'))
Out[113]:
False
In [114]:
ukb.ask_if_true(expr('Magical'))
Out[114]:
True
In [115]:
ukb.ask_if_true(expr('Horned'))
Out[115]:
True
In [ ]: