Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!hellgate.utah.edu!caen!math.lsa.umich.edu!zaphod.mps.ohio-state.edu!usc!apple!agate!ucbvax!pasteur!cory.Berkeley.EDU!achoi From: achoi@cory.Berkeley.EDU (Andrew Choi) Newsgroups: comp.lang.prolog Subject: Is Prolog Limited To Only Horn Clauses/ Message-ID: <8956@pasteur.Berkeley.EDU> Date: 16 Nov 90 06:38:33 GMT Sender: news@pasteur.Berkeley.EDU Reply-To: achoi@cory.Berkeley.EDU (Andrew Choi) Organization: University of California, Berkeley Lines: 29 Hi everyone. I was convinced that Prolog can handle only Horn's Clauses until a friend of mine brought me this example: Let's say we want to say: a ; b :- c. (c -> (a or b)) /* Illegal in Prolog */ According to rules of Boolean Algebra, we can re-express proposition as: c -> (a or b) (not c) or (a or b) ((not c) or b) or a (not (c and (not b))) or a (c and (not b)) -> a a :- c, not(b). /* Legal in Prolog */ It seems like one can apply this procedure to all non-Horn's clauses to make them Horn's Clauses. Is this right? Is there some mistakes I don't see here? Thanks for the help. Name: Andrew Choi Internet Address: achoi@cory.berkeley.edu Tel: (415)848-5658 #include