[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#610685: offlineimap: New msg sync from INBOX terminated with exception.



Package: offlineimap
Version: 6.2.0.2-2
Severity: important


I get the following logs when trying to upload from MailDir to Imap the email below.
Do not worry about email sensible parts. Thanks.

OfflineIMAP 6.0.0
Copyright (C) 2002 - 2008 John Goerzen <jgoerzen@complete.org>
This software comes with ABSOLUTELY NO WARRANTY; see the file
COPYING for details.  This is free software, and you are welcome
to distribute it under the conditions laid out in COPYING.
***** Processing account Acc-Trabajo
Copying folder structure from Gmail to Maildir
Establishing connection to imap.gmail.com:993.
Syncing Babel-Adm: Gmail -> Maildir
Syncing Babel-Group: Gmail -> Maildir
Syncing INBOX: Gmail -> Maildir
Copy message -1 Maildir[INBOX] -> Gmail[INBOX], LocalStatus[INBOX]
Copy message -1 Maildir[INBOX] -> LocalStatus[INBOX]
Syncing Sent: Gmail -> Maildir
Syncing [Gmail]/Sent Mail: Gmail -> Maildir
Thread 'New msg sync from INBOX' terminated with exception:
Traceback (most recent call last):
  File "/home/vpablos/seguridad/local/bin/offlineimap/threadutil.py", line 153, in run
    Thread.run(self)
  File "/usr/lib/python2.5/threading.py", line 446, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/vpablos/seguridad/local/bin/offlineimap/folder/Base.py", line 212, in syncmessagesto_neguid_msg
    successuid = tryappend.savemessage(uid, message, flags, rtime)
  File "/home/vpablos/seguridad/local/bin/offlineimap/folder/IMAP.py", line 297, in savemessage
    date, content)[0] == 'OK')
  File "/usr/lib/python2.5/imaplib.py", line 318, in append
    return self._simple_command(name, mailbox, flags, date_time)
  File "/usr/lib/python2.5/imaplib.py", line 1055, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/usr/lib/python2.5/imaplib.py", line 885, in _command_complete
    typ, data = self._get_tagged_response(tag)
  File "/usr/lib/python2.5/imaplib.py", line 986, in _get_tagged_response
    self._get_response()
  File "/usr/lib/python2.5/imaplib.py", line 903, in _get_response
    resp = self._get_line()
  File "/usr/lib/python2.5/imaplib.py", line 996, in _get_line
    line = self.readline()
  File "/home/vpablos/seguridad/local/bin/offlineimap/imaplibutil.py", line 112, in readline
    return self.sslobj.readline()
  File "/home/vpablos/seguridad/local/bin/offlineimap/imaplibutil.py", line 91, in readline
    linebuf = self.read(1024)
  File "/home/vpablos/seguridad/local/bin/offlineimap/imaplibutil.py", line 82, in read
    retval = self._read(n)
  File "/home/vpablos/seguridad/local/bin/offlineimap/imaplibutil.py", line 70, in _read
    return self.sslsock.read(n)
sslerror: (8, 'EOF occurred in violation of protocol')


Last 11 debug messages logged for New msg sync from INBOX prior to exception:
imap: savemessage: called
imap: savemessage: using date "15-Dec-2010 17:51:30 +0100"
imap: savemessage: initial content is: 'From vpablos@babel.ls.fi.upm.es Wed Dec 15 17:51:29 2010\r\nReturn-path: <vpablos@babel.ls.fi.upm.es>\r\nX-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on babel.ls.fi.upm.es\r\nEnvelope-to: vpablos@babel.ls.fi.upm.es\r\nDelivery-date: Wed, 15 Dec 2010 17:51:29 +0100\r\nReceived: from www-data by babel.ls.fi.upm.es with local (Exim 4.72)\r\n\t(envelope-from <vpablos@babel.ls.fi.upm.es>)\r\n\tid 1PSuZd-0001CE-6A\r\n\tfor vpablos@babel.ls.fi.upm.es; Wed, 15 Dec 2010 17:51:29 +0100\r\nMessage-Id: <E1PSuZd-0001CE-6A@babel.ls.fi.upm.es>\r\nDate: Wed, 15 Dec 2010 17:51:29 +0100\r\nTo: vpablos@babel.ls.fi.upm.es\r\nFrom: vpablos@babel.ls.fi.upm.es\r\nSubject: [neg&fl] commit r94 - in negation: . Ejemplos_Negacion cneg_ciao_Chan/Ejemplos_Negacion\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\nAuthor: vpablos\r\nDate: 2010-12-15 17:51:29 +0100 (Wed, 15 Dec 2010)\r\nNew Revision: 94\r\n\r\nAdded:\r\n 
   negation/Ejemplos_Negacion/\r\n   negation/Ejemplos_Negacion/Articuloparte1.rtf\r\n   negation/Ejemplos_Negacion/Articuloparte2.rtf\r\n   negation/Ejemplos_Negacion/Articuloparte3.rtf\r\nRemoved:\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\r\nLog:\r\nMoved unused examples.\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte1.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte1.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,120 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\
 \fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-220\\slmult0\\ul\\f0\\fs18 ---,- \\ulnone -\\par\r\n+\\pard\\fi504\\sb62\\sl-681\\slmult0\\fs64 /\\par\r\n+\\pard\\fi6048\\sb710\\sl-278\\slmult0\\b\\f1\\fs24 Examples\\par\r\n+\\pard\\fi-288\\li1944\\sb230\\sl-196\\slmult0\\b0\\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\\par\r\n+\\pard\\fi1944\\sb240\\sl-196\\slmult0\\f2\\fs20 p(a). % File delay.pnt in programs:zip\\par\r\n+\\pard\\fi1944\\sb43\\sl-196\\slmult0\\f1\\fs18 p(f(X)):- p(X).\\par\r\n+\\pard\\fi2016\\sb33\\sl-196\\slmult0 r (X) : -! s (X) .\\par\r\n+\\pard\\fi1944\\sb28\\sl-196\\slmult0\\f2\\fs20 s(g(X)) .\\par\r\n+\\pard\\li1944\\sb216\\sl-230\\slmult0\\f1\\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate 
 fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\\par\r\n+\\pard\\fi1584\\sb211\\sl-230\\slmult0 2. The following program is a typical example of recursion through negation:\\par\r\n+\\pard\\fi1944\\sb216\\sl-230\\slmult0\\f2\\fs20 even(O). % File even.pnt in programs.zip\\par\r\n+\\pard\\fi1944\\sl-211\\slmult0\\f1\\fs18 even(s(X) ).:- ! even(X).\\par\r\n+\\pard\\fi2808\\sb124\\sl-211\\slmult0\\fs12 .\'\\par\r\n+\\pard\\li1944\\sl-235\\slmult0\\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\\par\r\n+\\pard\\fi3168\\sb19\\sl-235\\slmult0\\f2\\fs20 .Z = s(O);\\par\r\n+\\pard\\fi3168\\sb124\\sl-235\\slmult0 .Z = s(s(s(O)));\\par\r\n+\\pard\\fi3168\\sb120\\sl-235\\slmult0 .Z = s(s(s(s(s(O)))));\\par\r\n+\\pard\\fi288\\sb100\\sl-235\\slmult0\\f1\\fs18 j and so on\\p
 ar\r\n+\\pard\\fi72\\li2088\\sb350\\sl-220\\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\\par\r\n+\\pard\\fi1584\\sb225\\sl-220\\slmult0 3. A similar behaviour is shown by the following definite program:\\par\r\n+\\pard\\fi1944\\sb216\\sl-220\\slmult0\\f2\\fs20 less(O,s(Y\\}). %File less.pnt in programJ.zip\\par\r\n+\\pard\\fi1944\\sb14\\sl-220\\slmult0\\f1\\fs18 less(s(X),s(Y)):- less(X,Y).\\par\r\n+\\pard\\fi1944\\sb211\\sl-220\\slmult0 The BCN-answers for the question ! less (X, Y) are:\\par\r\n+\\pard\\fi3168\\sb76\\sl-220\\slmult0 .X=O,Y=_A,_A~s(*B);\\par\r\n+\\pard\\li3168\\sl-283\\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\\par\r\n+\\pard\\fi3168\\sl-216\\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\\par\r\n+\\pard\\fi3168\\sb43\\sl-216\\s
 lmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\\par\r\n+\\pard\\fi3168\\sb28\\sl-216\\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\\par\r\n+\\pard\\fi3168\\sb38\\sl-216\\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\\par\r\n+\\pard\\fi3744\\sb19\\sl-216\\slmult0 and so on\\par\r\n+\\pard\\fi2088\\sb230\\sl-216\\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\\par\r\n+\\pard\\fi7560\\sb2112\\sl-216\\slmult0\\f3\\fs36 .\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-259\\slmult0\\ul\\f0\\fs22 -\\par\r\n+\\pard\\fi1440\\sb1632\\sl-220\\slmult0\\ulnone\\f1\\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\\par\r\n+\\pard\\li1800\\ri1008\\sb177\\sl-220\\slmult0\\qj\\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\\par\r\n+\\pard\\fi-1800\\li1800\\ri5976\\sb76\\sl-206\\slmult0\\qj\\f1 sum(s(X),Y,s(Z)):- sum(
 X,Y,Z). \\f2 even_by_sum(X):- \' sum(Y,Y,X).\\par\r\n+\\pard\\fi1800\\sb206\\sl-206\\slmult0\\f1 Thequestion !sum\\{Zl,Z2,Z3) gives:\\par\r\n+\\pard\\li3024\\sl-403\\slmult0\\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \\f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\\par\r\n+\\pard\\fi3024\\sl-336\\slmult0 .Zl = s\\{s(_A)), Z3 = s(_8), _B;!: s(*C);\\par\r\n+\\pard\\fi3024\\sb28\\sl-336\\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\\{_B), _B ;!: _A;\\par\r\n+\\pard\\fi504\\sb33\\sl-336\\slmult0 -.Zl = s\\{s\\{s\\{_A))), Z3 = s\\{s\\{_B)), _B ~ s(*C);\\par\r\n+\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Zl = s\\{s\\{O)), Z2 = _A, Z3 = s\\{s\\{_B)), _8;!: _A;\\par\r\n+\\pard\\fi3096\\sb38\\sl-336\\slmult0 .Zl";\' s\\{s(s\\{s\\{_A)))), Z3 = s(s\\{s(_B))), _B;!: s(*C);\\par\r\n+\\pard\\fi3024\\sb33\\sl-336\\slmult0 ..,. and so on\\par\r\n+\\pard\\fi1800\\sb235\\sl-336\\slmult0 and the question ! even_by _sum ( Z ) gives:\\par\r\n+\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalent
 to Z=s\\{O\\};)\\par\r\n+\\pard\\fi-576\\li3672\\sb4\\sl-364\\slmult0 .Z = s\\{s(_A)), _A;!: O, _A;!: s\\{s\\{*B)); (equivalentto Z=s\\{s\\{s(O)));) and so on\\par\r\n+\\pard\\fi1512\\sb196\\sl-364\\slmult0 5. The following program produces very big computation trees:\\par\r\n+\\pard\\fi-72\\li1872\\sb100\\sl-283\\slmult0\\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\\{X),\\par\r\n+\\pard\\fi4104\\sl-201\\slmult0 ! evennumf(Y).\\par\r\n+\\pard\\fi1872\\sb19\\sl-201\\slmult0 evennumf(f(X,Y)):- ! evennumf\\{X),\\par\r\n+\\pard\\fi4104\\sb9\\sl-201\\slmult0 evennumf(Y) .\\par\r\n+\\pard\\fi1872\\sb235\\sl-201\\slmult0\\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\\par\r\n+\\pard\\fi3096\\sb192\\sl-201\\slmult0\\f2\\fs20 .Z = f(a,a);\\par\r\n+\\pard\\fi3096\\sb153\\sl-201\\slmult0\\f1\\fs18 .Z = f(f(a,a),f(a,a));\\par\r\n+.Z = f(f(a,a),f(f(a,a),f\\{a,a)));\\par\r\n+\\pard\\fi3096\\sb158
 \\sl-201\\slmult0 .Z = f\\{f\\{a,f\\{a,a)),a);\\par\r\n+\\f2 .Z = f(f\\{f\\{a,a),a),a);\\par\r\n+\\f1 .Z = f(a,f\\{f\\{a,a),a));\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Z = f(a,f(a,f(a,a));\\par\r\n+.Z = f(f(f(a,a),f\\{a,a)),f\\{a,a));\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f(f\\{f\\{a,a),f\\{a,a)),f\\{f\\{a,a),f\\{a,a)));\\par\r\n+.Z = f(f(f\\{a,a),a),f(f(a,a),a));\\par\r\n+\\pard\\sb177\\sl-201\\slmult0 I and so on\\par\r\n+\\pard\\sb484\\sl-201\\slmult0\\f0\\fs34\\\'a1\\par\r\n+\\pard\\sb216\\sl-201\\slmult0\\fs22 j ~\\par\r\n+\\pard\\sb297\\sl-201\\slmult0\\fs14 I\\par\r\n+\\pard\\sb48\\sl-201\\slmult0\\f3\\fs20 I\\par\r\n+\\pard\\sl-115\\slmult0\\f1\\fs8\\\'a1\\par\r\n+\\pard\\sb9\\sl-86\\slmult0\\f0\\fs10 I\\par\r\n+\\pard\\sb297\\sl-86\\slmult0\\f3\\fs14 1-\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi1512\\sl-220\\slmult0\\fs18 6. The following program was introduced in\\par\r\n+\\pard\\fi2736\\sl-220\\slmul
 t0 W. Drabent., \\i What is,failure?An approach to constructive negation,\\par\r\n+\\i0 Acta lnformatica, 32:27-59,1995.\\par\r\n+\\pard\\fi1872\\sb206\\sl-220\\slmult0\\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0\\f0 p (X) : -p (X) .\\par\r\n+\\f2 p(a) ,\\par\r\n+\\f0 q (a) : -q(a).\\par\r\n+\\f1 q(X):- !s\\{X).\\par\r\n+\\pard\\fi1872\\sb9\\sl-240\\slmult0\\f2\\fs20 s (a),\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0\\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\\par\r\n+\\pard\\fi2952\\sl-220\\slmult0 % the BCN prototype infers the signature from the program and the goal,\\par\r\n+\\pard\\fi1872\\sb230\\sl-220\\slmult0\\f1 It can be checked that:\\par\r\n+\\pard\\fi3096\\sb19\\sl-220\\slmult0 .! r. One answer : True;\\par\r\n+\\pard\\fi3096\\sb134\\sl-220\\slmult0 .r. fails\\par\r\n+\\pard\\fi1512\\sb340\\sl-220\\slmult0 7. The following program was introduced in\\par\r\n+\\pard\\fi2
 736\\sl-220\\slmult0 R.Bart\\\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\\par\r\n+Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\\par\r\n+\\pard\\fi2808\\sb28\\sl-220\\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\\par\r\n+\\pard\\li1872\\sb168\\sl-244\\slmult0\\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\\par\r\n+\\pard\\fi1872\\sl-230\\slmult0\\fs16 t (c) ,\\par\r\n+\\pard\\fi1872\\sb216\\sl-230\\slmult0\\f1\\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\\par\r\n+\\pard\\fi3096\\sb148\\sl-230\\slmult0 .X = a, Y = _A, _A * f(*B);\\par\r\n+\\pard\\fi3096\\sb144\\sl-230\\slmult0\\f2 .X = f(_A), y = _B, _B * b;\\par\r\n+.X = _A, _A * f\'(*B), _A * a;\\par\r\n+\\pard\\fi3096\\sb129\\sl-230\\slm
 ult0 .X = a, Y = f(_A), _A * c;\\par\r\n+\\pard\\fi3096\\sb139\\sl-230\\slmult0 .X = f(_A), Y = b, _A * c;\\par\r\n+\\pard\\fi1872\\sb105\\sl-230\\slmult0\\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\\\'e1k\'s prototype.\\par\r\n+\\pard\\li1872\\sl-225\\slmult0 Our answers are more general than Bart\\\'e1k\'s ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\\par\r\n+\\pard\\fi288\\sb446\\sl-225\\slmult0 , 8. The following program was introduced in\\par\r\n+\\pard\\li2736\\sl-225\\slmult0 A. Bossi, M. Fabris and M.C. Meo, \\i A bottom-up semanticsforconstructive negation, \\i0 In P."V. Hentenryck, editor, \\i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \\i0 \'94), pages 520-534, MIT Press, 1994.\\par\r\n+\\pard\\li2016\\sb158\\sl-249\\slmult0\\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \\f1 p(X,g(W)
 ):- !r(W).\\par\r\n+\\pard\\fi2016\\sl-225\\slmult0\\fs14 cq.(a) ,\\par\r\n+\\pard\\li2016\\ri6840\\sb38\\sl-216\\slmult0\\qj\\fs18 r(b):- r(b). r(c):- r(c). \\f2 r(c) .\\par\r\n+\\pard\\fi2088\\sb201\\sl-216\\slmult0\\f1 It can be checked that the BCN prototype behaves as foIlows:\\par\r\n+\\pard\\fi3096\\sb28\\sl-216\\slmult0 .!p(f(a),Y). fails\\par\r\n+\\pard\\sl-216\\slmult0\\f0\\fs14 I\\par\r\n+\\pard\\sb24\\sl-110\\slmult0\\f1\\fs18 , .!p(a,c). Oneanswer:True\\par\r\n+\\pard\\fi3096\\sb273\\sl-110\\slmult0 .! r (c). fails \'\\par\r\n+\\pard\\sb1886\\sl-110\\slmult0\\ul\\f0\\fs26 -\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte2.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte2.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte2.
 rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,121 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n+\\pard\\fi3024\\sb1660\\sl-220\\slmult0\\ulnone\\f1\\fs18 .! r (b). loops infinitely\\par\r\n+\\pard\\fi3024\\sb139\\sl-220\\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\\par\r\n+\\pard\\fi3024\\sb144\\sl-240\\slmult0\\f2\\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\\par\r\n+\\pard\\fi3744\\sb172\\sl-220\\slmult0\\f1\\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\\par\r\n+\\pard\\fi3744\\sb105\\sl-220\\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\\par\r\n+\\pard\\fi3744\\sb192\\sl-220\\slmult0
  .X=_A, Y=g(c), _A~f(*B);\\par\r\n+\\pard\\fi3744\\sb86\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = g(c), _A ~ a;\\par\r\n+\\pard\\fi3096\\sb158\\sl-220\\slmult0\\f1\\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\\par\r\n+\\pard\\fi3096\\sb139\\sl-220\\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\\par\r\n+.p(X, g(Y)), q(Y). Twoanswers:\\par\r\n+\\pard\\fi3744\\sb120\\sl-240\\slmult0\\f2\\fs20 .X = f(a), Y = a;\\par\r\n+\\pard\\fi3744\\sb91\\sl-240\\slmult0 .y = a;\\par\r\n+\\pard\\sb153\\sl-220\\slmult0\\qc\\f1\\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\\par\r\n+\\pard\\sb177\\sl-220\\slmult0\\qc .X=_A,Y=c,_A~f(*B);\\par\r\n+\\pard\\fi3744\\sb100\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = c, _A ~ a;\\par\r\n+\\pard\\fi1512\\sb321\\sl-220\\slmult0\\f1\\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\\par\r\n+\\pard\\fi1872\\sb14\\sl-220\\slmult0\\{ \\i ala, f/2, \\i0 gil) is:\\par\r\n+\\pard\\fi
 -72\\li1872\\sb172\\sl-249\\slmult0\\f2\\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\\par\r\n+\\pard\\fi1872\\sl-225\\slmult0\\f1\\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\\par\r\n+\\pard\\fi1800\\sb19\\sl-225\\slmult0\\f2\\fs20 mirror(a,a) .\\par\r\n+\\pard\\fi1800\\sl-196\\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\\par\r\n+\\pard\\fi1872\\sb28\\sl-196\\slmult0\\f1\\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\\par\r\n+\\pard\\fi1800\\sb230\\sl-196\\slmult0 The BCN-answers for the question I symmetric (Z) are:\\par\r\n+\\pard\\fi3096\\sb182\\sl-196\\slmult0 .Z = f (a, A), A ~ a;\\par\r\n+\\pard\\fi4320\\sl-153\\slmult0\\f0\\fs12 --\\\'a1\\par\r\n+\\pard\\li3096\\sl-360\\slmult0\\f1\\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \\\'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\\par\r\n+\\pard\\fi3096\\sb4\\sl-360\\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\\par\r\n+\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z=g(f
 (g(_A),_B)),_B~g(*C);\\par\r\n+\\pard\\fi3096\\sb14\\sl-360\\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\\par\r\n+\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\\par\r\n+.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\\par\r\n+\\pard\\fi3600\\sl-360\\slmult0 and so on\\par\r\n+\\pard\\fi2016\\sl-326\\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\\par\r\n+\\pard\\fi2016\\sl-240\\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\\par\r\n+\\pard\\fi2016\\sb43\\sl-240\\slmult0\\fs20 answers).\\par\r\n+\\pard\\sb2198\\sl-240\\slmult0\\f3\\fs8 -~\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi72\\sl-220\\slmult0\\fs18 100 The following example is a variant of a program introduced in\\par\r\n+\\pard\\fi1296\\sb28\\sl-220\\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko 
 Ao\\par\r\n+\\pard\\fi1224\\sb9\\sl-220\\slmult0 Bowen, editors, \\i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\\par\r\n+\\pard\\fi1224\\sl-220\\slmult0 Programming, \\i0 pages 111-125, Seatle, 1988. The MIT presso\\par\r\n+\\pard\\li360\\sb230\\sl-206\\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\\par\r\n+\\pard\\fi288\\sb38\\sl-206\\slmult0 member(X,[XI~).\\par\r\n+\\pard\\fi360\\sl-201\\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\\par\r\n+list_of_digi ts ([ ] ) .\\par\r\n+\\pard\\fi360\\sb28\\sl-201\\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\\par\r\n+\\pard\\fi360\\sl-192\\slmult0 digit(l).\\par\r\n+\\pard\\fi360\\sb28\\sl-192\\slmult0 digit(2)..\\par\r\n+\\pard\\fi288\\sb38\\sl-192\\slmult0\\f2\\fs20 digit(3) .\\par\r\n+\\pard\\fi288\\sb33\\sl-192\\slmult0\\fs22 digit(4) .\\par\r\n+\\pard\\fi288\\sb14\\sl-192\\slmult0\\fs20 digit(5) .\\par\r\
 n+\\pard\\fi288\\sb326\\sl-192\\slmult0\\f1\\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \\i for \\i0 all the\\par\r\n+\\pard\\fi360\\sl-192\\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\\par\r\n+\\pard\\li1512\\ri6048\\sl-360\\slmult0\\qj\\f2\\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\\par\r\n+\\pard\\fi1584\\sl-345\\slmult0\\f1\\fs18 .o o. and so on\\par\r\n+\\pard\\sl-336\\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\\par\r\n+\\pard\\li288\\sb264\\sl-192\\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\\par\r\n+\\pard\\fi288\\sb57\\sl-192\\slmult0\\f2\\fs22 element(O).\\par\r\n+\\pard\\fi288\\sb9\\sl-192\\slmult0\\f1\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi288\\sb24\\sl-192\\slmult0 member 
 (X,[ X.I_] ) .\\par\r\n+\\pard\\fi288\\sb33\\sl-192\\slmult0 member (X,[ -\' L] ) : -member (X, L) .\\par\r\n+\\pard\\fi288\\sb28\\sl-192\\slmult0 disjoint ([] ,-),\\par\r\n+\\pard\\fi288\\sb4\\sl-192\\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\\par\r\n+\\pard\\fi216\\sb302\\sl-192\\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\\par\r\n+\\pard\\fi1512\\sb38\\sl-192\\slmult0 .Ll = [ O), L2 = [ \\i O] \\i0 ;\\par\r\n+\\pard\\fi1512\\sb177\\sl-192\\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\\par\r\n+\\pard\\fi1512\\sb168\\sl-192\\slmult0 .Ll = [ O, O], L2 = [ O] ;\\par\r\n+.Ll = [ O, O], L2 = [ O, O) ;\\par\r\n+\\pard\\fi1512\\sb144\\sl-192\\slmult0 .o.. and so on\\par\r\n+\\pard\\fi10512\\sb3984\\sl-192\\slmult0\\f3\\fs12 ,\\\\\\par\r\n+\\pard\\f0\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n+\\pard\\fi216\\sb1036\\sl-201\\slmult0\\ulnone\\f3 j\\par\r\n+\\pard\\
 fi1584\\sb384\\sl-220\\slmult0\\f1\\fs18 12. The following is the classical insertion sort program:\\par\r\n+\\pard\\fi-72\\li1944\\sb168\\sl-244\\slmult0\\f2\\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\\par\r\n+\\pard\\fi1944\\sl-244\\slmult0\\f1\\fs18 insert_sort (E,[ ] ,[ E] ) .\\par\r\n+\\pard\\fi1944\\sl-168\\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\\par\r\n+\\pard\\fi-72\\li1944\\sb19\\sl-196\\slmult0\\f2\\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \\f1 list_sort(L,NL):- sort(L,[],NL). -\\par\r\n+\\pard\\fi1944\\sb100\\sl-196\\slmult0\\fs18 sort (( ] , L, L) .\\par\r\n+\\pard\\fi1944\\sb19\\sl-196\\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\\par\r\n+\\pard\\fi1944\\sb24\\sl-196\\slmult0 list (( ] ) .\\par\r\n+list(( EIL] ):-element(E), list(L).\\par\r\n+\\pard\\fi1944\\sb33\\sl-196\\slmult0\\fs22 element (O) .\\par\r\n+\\pard\\
 fi1944\\sl-196\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi1944\\sb206\\sl-196\\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn\'t arrear in the head, hence it produces. universal\\par\r\n+\\pard\\fi1944\\sb72\\sl-196\\slmult0 quantification\\par\r\n+\\pard\\fi1944\\sb244\\sl-196\\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\\par\r\n+\\pard\\fi1944\\sb38\\sl-196\\slmult0 the second list is not the ordering ofthe first one:\\par\r\n+\\pard\\fi3168\\sb72\\sl-196\\slmult0 .11=[],12=[0];\\par\r\n+\\pard\\fi3168\\sb153\\sl-196\\slmult0 .L1 = ( s (O)], L2 = [ ] ;\\par\r\n+\\pard\\fi3168\\sb158\\sl-196\\slmult0 .11 = [ s (O)\\}, L2 = [ O\\} ;\\par\r\n+\\pard\\fi3168\\sb168\\sl-196\\slmult0 .11 = [ ], L2 = ( S (O)\\} ;\\par\r\n+\\pard\\fi3744\\sb148\\sl-196\\slmult0 and so on\\par\r\n+\\pard\\fi1584\\sb360\\sl-196\\slmult0 13. This program returns the maximum ora list ofnumbers:\\par\r\n+\\p
 ard\\fi1944\\sb211\\sl-196\\slmult0\\f2\\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\\par\r\n+\\pard\\fi1944\\sb62\\sl-196\\slmult0 greater(E,O,E) .\\par\r\n+\\pard\\fi1944\\sb4\\sl-196\\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\\par\r\n+\\pard\\fi1944\\sb57\\sl-196\\slmult0\\f1\\fs18 max_list([] ,0).\\par\r\n+\\pard\\fi1944\\sl-168\\slmult0 max_list ([ EI;L\\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\\par\r\n+\\pard\\fi1944\\sb81\\sl-168\\slmult0 list (( \\} ) .\\par\r\n+\\pard\\fi1944\\sb52\\sl-168\\slmult0 list([EIL]):-element(E), list(L).\\par\r\n+\\pard\\fi1944\\sb67\\sl-168\\slmult0\\fs22 element(O) .\\par\r\n+\\pard\\fi1944\\sb28\\sl-168\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi1944\\sb268\\sl-168\\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\\par\r\n+\\pard\\fi1944\\sb4\\sl-168\\slmult0 quantification. -\\par\r\n+\\pard\\fi1944\\sb302\\sl-168
 \\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\\par\r\n+\\pard\\fi1944\\sb110\\sl-168\\slmult0 such that the number is not the maximum ofthe list:\\par\r\n+\\pard\\fi3168\\sb81\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(O);\\par\r\n+\\pard\\fi3168\\sb192\\sl-168\\slmult0\\f1\\fs18 .1 = [ O], E = s (O);\\par\r\n+\\pard\\fi3168\\sb206\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(s(O\\\'bb);\\par\r\n+\\pard\\fi3168\\sb182\\sl-168\\slmult0\\f1\\fs18 .L = ( O], E = s (s (O));\\par\r\n+\\pard\\fi3744\\sb182\\sl-168\\slmult0 and so on\\par\r\n+\\pard\\fi11160\\sb3067\\sl-168\\slmult0\\ul\\f3 ,-~ "..\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte3.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte3.rtf\t                     
    (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,69 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi1512\\sl-220\\slmult0\\fs18 14. The following program computes the list difference operation:\\par\r\n+\\pard\\fi2016\\sb196\\sl-240\\slmult0\\f2\\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\\par\r\n+\\pard\\fi2016\\sb24\\sl-220\\slmult0\\f1\\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\\par\r\n+\\pard\\fi5472\\sl-240\\slmult0\\f2\\fs20 rernove_list (LAux, L2,NL) .\\par\r\n+\\pard\\fi2016\\sl-220\\slmult0\\f1\\fs18 rernove_elernent ([] ,-,[] ) .\\par\r\n+\\pard\\li2016\\sl-216\\
 slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\\par\r\n+\\pard\\fi6120\\sb43\\sl-216\\slmult0\\f2\\fs20 rernove_elernent(L,E2,NL) .\\par\r\n+\\pard\\fi2016\\sl-201\\slmult0 equal(E,E).\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0\\f1\\fs18 list ([] ) .\\par\r\n+\\pard\\fi2016\\sb24\\sl-201\\slmult0 list([ EIL]):- elernent(E), list(L).\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent (O) .\\par\r\n+\\pard\\fi2016\\sb24\\sl-201\\slmult0 elernent(s(E)):- elernent(E).\\par\r\n+\\pard\\fi1800\\sb225\\sl-201\\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal quantification.\\par\r\n+\\pard\\fi2016\\sb264\\sl-201\\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\\par\r\n+\\pard\\fi2016\\sb28\\sl-201\\slmult0 tuples (L I,L2,L3) such that L3 is not \\b Ll \\b0 -L2.\\par\r\n+\\pard\\fi3096
 \\sb67\\sl-201\\slmult0 .Ll=[],L2=[0],L3=[0];\\par\r\n+\\pard\\fi3096\\sb144\\sl-201\\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\\par\r\n+\\pard\\fi3600\\sb144\\sl-201\\slmult0 and so on\\par\r\n+\\pard\\fi1512\\sb345\\sl-201\\slmult0 15. This program computes the sum of a list:\\par\r\n+\\pard\\fi2016\\sb230\\sl-201\\slmult0\\f2\\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\\par\r\n+\\pard\\fi2016\\sb48\\sl-201\\slmult0\\f1\\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\\par\r\n+\\pard\\fi2016\\sb14\\sl-201\\slmult0 SuIn list ([ ] , O) .\\par\r\n+\\pard\\fi2016\\sb28\\sl-201\\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 list ([ ] ) .\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0 list([EI
 L]):- element(E), list(L).\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent(O) .\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0 elernent (s (E)) : -elernent (E) ,\\par\r\n+\\pard\\fi1800\\sb220\\sl-201\\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\\par\r\n+\\pard\\fi2016\\sb259\\sl-201\\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\\par\r\n+\\pard\\fi2016\\sb57\\sl-201\\slmult0 such that the number is not the sum afilie list values:\\par\r\n+\\pard\\fi3096\\sb38\\sl-201\\slmult0\\f2 .L = [], E = s(O);\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0\\f1 .L = [ O], E = s (O);\\par\r\n+\\f2\\fs20 .L = [], E = s(s(O));\\par\r\n+\\pard\\fi3096\\sb168\\sl-201\\slmult0\\f1\\fs18 .L=[O], E=s(s(O));\\par\r\n+\\pard\\fi3672\\sb139\\sl-201\\slmult0 andsoon\\par\r\n+\\pard\\sb3859\\sl-201\\slmult0\\f0\\fs22 \'-\\par\r\n+\\pard\\fi11016\\sl-76\\slmult0\\ul\\f3\\fs10 
 ~--~---~-\\par\r\n+\\pard\\ulnone\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi10512\\sl-158\\slmult0\\ul ,\\par\r\n+\\pard\\fi9864\\sl-801\\slmult0\\ulnone\\fs76 ,\\par\r\n+\\pard\\fi10152\\sl-820\\slmult0\\fs78 ,\\par\r\n+\\pard\\sb744\\sl-220\\slmult0\\fs18 16. The following program computes thejoint oftwo lists:\\par\r\n+\\pard\\fi504\\sb163\\sl-240\\slmult0\\f2\\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\\par\r\n+\\pard\\fi432\\sb38\\sl-240\\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\\par\r\n+\\pard\\fi504\\sl-220\\slmult0\\f1\\fs18 union([ EIL1\\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\\par\r\n+\\pard\\fi504\\sb14\\sl-220\\slmult0 member (E,[ El J ) .\\par\r\n+\\pard\\fi504\\sl-220\\slmult0 member (E,[ _1 L] ) : -member (E, L) .\\par\r\n+element (O) .\\par\r\n+\\pard\\fi504\\sb4\\sl-220\\slmult0 element(s(E)):- element(E).\\par\r\n+\\pard\\fi504\\sl-220\\slmult0 list ([] ) .\\par\r\n+list([EIL]):- element(E),
  list(L).\\par\r\n+\\pard\\fi504\\sb211\\sl-220\\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\\par\r\n+\\pard\\fi504\\sb9\\sl-220\\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\\}:\\par\r\n+\\pard\\fi1584\\sb48\\sl-220\\slmult0 .Ll=[],L2=[]i\\par\r\n+\\pard\\fi1584\\sb120\\sl-220\\slmult0 .Ll = [s (O)], L2 = [s(O)].;\\par\r\n+\\pard\\fi1584\\sb144\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [] i\\par\r\n+.Ll = [ ], L2 = [ s (O)] i\\par\r\n+\\pard\\fi1584\\sb153\\sl-220\\slmult0 .Ll = [ ], L2 = [ O, O] i\\par\r\n+\\pard\\fi1584\\sb134\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\\par\r\n+\\pard\\fi1584\\sb139\\sl-220\\slmult0 .= [ s ( O) , O] ;\\par\r\n+\\pard\\fi2160\\sb124\\sl-220\\slmult0 and so on\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\r\n===================================================================\
 r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,120 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-220\\slmult0\\ul\\f0\\fs18 ---,- \\ulnone -\\par\r\n-\\pard\\fi504\\sb62\\sl-681\\slmult0\\fs64 /\\par\r\n-\\pard\\fi6048\\sb710\\sl-278\\slmult0\\b\\f1\\fs24 Examples\\par\r\n-\\pard\\fi-288\\li1944\\sb230\\sl-196\\slmult0\\b0\\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\\par\r\n-\\pard\\fi1944\\sb240\\sl-196\\slmult0\\f2\\fs20
  p(a). % File delay.pnt in programs:zip\\par\r\n-\\pard\\fi1944\\sb43\\sl-196\\slmult0\\f1\\fs18 p(f(X)):- p(X).\\par\r\n-\\pard\\fi2016\\sb33\\sl-196\\slmult0 r (X) : -! s (X) .\\par\r\n-\\pard\\fi1944\\sb28\\sl-196\\slmult0\\f2\\fs20 s(g(X)) .\\par\r\n-\\pard\\li1944\\sb216\\sl-230\\slmult0\\f1\\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\\par\r\n-\\pard\\fi1584\\sb211\\sl-230\\slmult0 2. The following program is a typical example of recursion through negation:\\par\r\n-\\pard\\fi1944\\sb216\\sl-230\\slmult0\\f2\\fs20 even(O). % File even.pnt in programs.zip\\par\r\n-\\pard\\fi1944\\sl-211\\slmult0\\f1\\fs18 even(s(X) ).:- ! even(X).\\par\r\n-\\pard\\fi2808\\sb124\\sl-211\\slmult0\\fs12 .\'\\par\r\n-\\pard\\li1944\\sl-235\\slmult0\\fs18 Both questl
 ons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\\par\r\n-\\pard\\fi3168\\sb19\\sl-235\\slmult0\\f2\\fs20 .Z = s(O);\\par\r\n-\\pard\\fi3168\\sb124\\sl-235\\slmult0 .Z = s(s(s(O)));\\par\r\n-\\pard\\fi3168\\sb120\\sl-235\\slmult0 .Z = s(s(s(s(s(O)))));\\par\r\n-\\pard\\fi288\\sb100\\sl-235\\slmult0\\f1\\fs18 j and so on\\par\r\n-\\pard\\fi72\\li2088\\sb350\\sl-220\\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\\par\r\n-\\pard\\fi1584\\sb225\\sl-220\\slmult0 3. A similar behaviour is shown by the following definite program:\\par\r\n-\\pard\\fi1944\\sb216\\sl-220\\slmult0\\f2\\fs20 less(O,s(Y\\}). %File less.pnt in programJ.zip\\par\r\n-\\pard\\fi1944\\sb14\\sl-220\\slmult0\\f1\\fs18 less(s(X),s(Y)):- less(X,Y).\\par\r\n-\
 \pard\\fi1944\\sb211\\sl-220\\slmult0 The BCN-answers for the question ! less (X, Y) are:\\par\r\n-\\pard\\fi3168\\sb76\\sl-220\\slmult0 .X=O,Y=_A,_A~s(*B);\\par\r\n-\\pard\\li3168\\sl-283\\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\\par\r\n-\\pard\\fi3168\\sl-216\\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\\par\r\n-\\pard\\fi3168\\sb43\\sl-216\\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\\par\r\n-\\pard\\fi3168\\sb28\\sl-216\\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\\par\r\n-\\pard\\fi3168\\sb38\\sl-216\\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\\par\r\n-\\pard\\fi3744\\sb19\\sl-216\\slmult0 and so on\\par\r\n-\\pard\\fi2088\\sb230\\sl-216\\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\\par\r\n-\\pard\\fi7560\\sb2112\\sl-216\\slmult0\\f3\\fs36 .\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-259\\slmult0\\ul\\
 f0\\fs22 -\\par\r\n-\\pard\\fi1440\\sb1632\\sl-220\\slmult0\\ulnone\\f1\\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\\par\r\n-\\pard\\li1800\\ri1008\\sb177\\sl-220\\slmult0\\qj\\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\\par\r\n-\\pard\\fi-1800\\li1800\\ri5976\\sb76\\sl-206\\slmult0\\qj\\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \\f2 even_by_sum(X):- \' sum(Y,Y,X).\\par\r\n-\\pard\\fi1800\\sb206\\sl-206\\slmult0\\f1 Thequestion !sum\\{Zl,Z2,Z3) gives:\\par\r\n-\\pard\\li3024\\sl-403\\slmult0\\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \\f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\\par\r\n-\\pard\\fi3024\\sl-336\\slmult0 .Zl = s\\{s(_A)), Z3 = s(_8), _B;!: s(*C);\\par\r\n-\\pard\\fi3024\\sb28\\sl-336\\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\\{_B), _B ;!: _A;\\par\r\n-\\pard\\fi504\\sb33\\sl-336\\slmult0 -.Zl = s\\{s\\{s\\{_A))), Z3 = s\\{s\\{_B)), _B ~ s(*C);\\par\r\n-\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Zl = s\\{s\\{O)), Z2 = _A, Z3 = s\
 \{s\\{_B)), _8;!: _A;\\par\r\n-\\pard\\fi3096\\sb38\\sl-336\\slmult0 .Zl";\' s\\{s(s\\{s\\{_A)))), Z3 = s(s\\{s(_B))), _B;!: s(*C);\\par\r\n-\\pard\\fi3024\\sb33\\sl-336\\slmult0 ..,. and so on\\par\r\n-\\pard\\fi1800\\sb235\\sl-336\\slmult0 and the question ! even_by _sum ( Z ) gives:\\par\r\n-\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\\{O\\};)\\par\r\n-\\pard\\fi-576\\li3672\\sb4\\sl-364\\slmult0 .Z = s\\{s(_A)), _A;!: O, _A;!: s\\{s\\{*B)); (equivalentto Z=s\\{s\\{s(O)));) and so on\\par\r\n-\\pard\\fi1512\\sb196\\sl-364\\slmult0 5. The following program produces very big computation trees:\\par\r\n-\\pard\\fi-72\\li1872\\sb100\\sl-283\\slmult0\\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\\{X),\\par\r\n-\\pard\\fi4104\\sl-201\\slmult0 ! evennumf(Y).\\par\r\n-\\pard\\fi1872\\sb19\\sl-201\\slmult0 evennumf(f(X,Y)):- ! evennumf\\{X),\\par\r\n-\\pard\\fi4104\\sb9\\sl-201\\slmult0 evennumf(Y) .\\
 par\r\n-\\pard\\fi1872\\sb235\\sl-201\\slmult0\\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\\par\r\n-\\pard\\fi3096\\sb192\\sl-201\\slmult0\\f2\\fs20 .Z = f(a,a);\\par\r\n-\\pard\\fi3096\\sb153\\sl-201\\slmult0\\f1\\fs18 .Z = f(f(a,a),f(a,a));\\par\r\n-.Z = f(f(a,a),f(f(a,a),f\\{a,a)));\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f\\{f\\{a,f\\{a,a)),a);\\par\r\n-\\f2 .Z = f(f\\{f\\{a,a),a),a);\\par\r\n-\\f1 .Z = f(a,f\\{f\\{a,a),a));\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Z = f(a,f(a,f(a,a));\\par\r\n-.Z = f(f(f(a,a),f\\{a,a)),f\\{a,a));\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f(f\\{f\\{a,a),f\\{a,a)),f\\{f\\{a,a),f\\{a,a)));\\par\r\n-.Z = f(f(f\\{a,a),a),f(f(a,a),a));\\par\r\n-\\pard\\sb177\\sl-201\\slmult0 I and so on\\par\r\n-\\pard\\sb484\\sl-201\\slmult0\\f0\\fs34\\\'a1\\par\r\n-\\pard\\sb216\\sl-201\\slmult0\\fs22 j ~\\par\r\n-\\pard\\sb297\\sl-201\\slmult0\\fs14 I\\par\r\n-\\p
 ard\\sb48\\sl-201\\slmult0\\f3\\fs20 I\\par\r\n-\\pard\\sl-115\\slmult0\\f1\\fs8\\\'a1\\par\r\n-\\pard\\sb9\\sl-86\\slmult0\\f0\\fs10 I\\par\r\n-\\pard\\sb297\\sl-86\\slmult0\\f3\\fs14 1-\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi1512\\sl-220\\slmult0\\fs18 6. The following program was introduced in\\par\r\n-\\pard\\fi2736\\sl-220\\slmult0 W. Drabent., \\i What is,failure?An approach to constructive negation,\\par\r\n-\\i0 Acta lnformatica, 32:27-59,1995.\\par\r\n-\\pard\\fi1872\\sb206\\sl-220\\slmult0\\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0\\f0 p (X) : -p (X) .\\par\r\n-\\f2 p(a) ,\\par\r\n-\\f0 q (a) : -q(a).\\par\r\n-\\f1 q(X):- !s\\{X).\\par\r\n-\\pard\\fi1872\\sb9\\sl-240\\slmult0\\f2\\fs20 s (a),\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0\\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\\par\r\n-\\pard\\fi2952\\sl-220\\slmult0 % the BCN 
 prototype infers the signature from the program and the goal,\\par\r\n-\\pard\\fi1872\\sb230\\sl-220\\slmult0\\f1 It can be checked that:\\par\r\n-\\pard\\fi3096\\sb19\\sl-220\\slmult0 .! r. One answer : True;\\par\r\n-\\pard\\fi3096\\sb134\\sl-220\\slmult0 .r. fails\\par\r\n-\\pard\\fi1512\\sb340\\sl-220\\slmult0 7. The following program was introduced in\\par\r\n-\\pard\\fi2736\\sl-220\\slmult0 R.Bart\\\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\\par\r\n-Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\\par\r\n-\\pard\\fi2808\\sb28\\sl-220\\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\\par\r\n-\\pard\\li1872\\sb168\\sl-244\\slmult0\\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\\par\r\n-\\pard\\fi1872\\sl-230\\slmult0\\fs16 t (c) ,\\
 par\r\n-\\pard\\fi1872\\sb216\\sl-230\\slmult0\\f1\\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\\par\r\n-\\pard\\fi3096\\sb148\\sl-230\\slmult0 .X = a, Y = _A, _A * f(*B);\\par\r\n-\\pard\\fi3096\\sb144\\sl-230\\slmult0\\f2 .X = f(_A), y = _B, _B * b;\\par\r\n-.X = _A, _A * f\'(*B), _A * a;\\par\r\n-\\pard\\fi3096\\sb129\\sl-230\\slmult0 .X = a, Y = f(_A), _A * c;\\par\r\n-\\pard\\fi3096\\sb139\\sl-230\\slmult0 .X = f(_A), Y = b, _A * c;\\par\r\n-\\pard\\fi1872\\sb105\\sl-230\\slmult0\\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\\\'e1k\'s prototype.\\par\r\n-\\pard\\li1872\\sl-225\\slmult0 Our answers are more general than Bart\\\'e1k\'s ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\\par\r\n-\\pard\\fi288\\sb446\\sl-225\\slmult0 , 8. The following program was introduced in\\par\r\n-\\pard\\li2736\\sl-2
 25\\slmult0 A. Bossi, M. Fabris and M.C. Meo, \\i A bottom-up semanticsforconstructive negation, \\i0 In P."V. Hentenryck, editor, \\i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \\i0 \'94), pages 520-534, MIT Press, 1994.\\par\r\n-\\pard\\li2016\\sb158\\sl-249\\slmult0\\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \\f1 p(X,g(W)):- !r(W).\\par\r\n-\\pard\\fi2016\\sl-225\\slmult0\\fs14 cq.(a) ,\\par\r\n-\\pard\\li2016\\ri6840\\sb38\\sl-216\\slmult0\\qj\\fs18 r(b):- r(b). r(c):- r(c). \\f2 r(c) .\\par\r\n-\\pard\\fi2088\\sb201\\sl-216\\slmult0\\f1 It can be checked that the BCN prototype behaves as foIlows:\\par\r\n-\\pard\\fi3096\\sb28\\sl-216\\slmult0 .!p(f(a),Y). fails\\par\r\n-\\pard\\sl-216\\slmult0\\f0\\fs14 I\\par\r\n-\\pard\\sb24\\sl-110\\slmult0\\f1\\fs18 , .!p(a,c). Oneanswer:True\\par\r\n-\\pard\\fi3096\\sb273\\sl-110\\slmult0 .! r (c). fails \'\\par\r\n-\\pard\\sb1886\\sl-110\\slmult0\\ul\\f0\\fs26 -\\par\r\n-}\r\n-\
 x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,121 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n-\\pard\\fi3024\\sb1660\\sl-220\\slmult0\\ulnone\\f1\\fs18 .! r (b). loops infinitely\\par\r\n-\\pard\\fi3024\\sb139\\sl-220\\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinit
 ely\\par\r\n-\\pard\\fi3024\\sb144\\sl-240\\slmult0\\f2\\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\\par\r\n-\\pard\\fi3744\\sb172\\sl-220\\slmult0\\f1\\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\\par\r\n-\\pard\\fi3744\\sb105\\sl-220\\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\\par\r\n-\\pard\\fi3744\\sb192\\sl-220\\slmult0 .X=_A, Y=g(c), _A~f(*B);\\par\r\n-\\pard\\fi3744\\sb86\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = g(c), _A ~ a;\\par\r\n-\\pard\\fi3096\\sb158\\sl-220\\slmult0\\f1\\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\\par\r\n-\\pard\\fi3096\\sb139\\sl-220\\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\\par\r\n-.p(X, g(Y)), q(Y). Twoanswers:\\par\r\n-\\pard\\fi3744\\sb120\\sl-240\\slmult0\\f2\\fs20 .X = f(a), Y = a;\\par\r\n-\\pard\\fi3744\\sb91\\sl-240\\slmult0 .y = a;\\par\r\n-\\pard\\sb153\\sl-220\\slmult0\\qc\\f1\\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\\par\r\n-\\pard\\sb177\\sl-220\\slmult0\\qc .X=_A,Y=c,_A~f(*
 B);\\par\r\n-\\pard\\fi3744\\sb100\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = c, _A ~ a;\\par\r\n-\\pard\\fi1512\\sb321\\sl-220\\slmult0\\f1\\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\\par\r\n-\\pard\\fi1872\\sb14\\sl-220\\slmult0\\{ \\i ala, f/2, \\i0 gil) is:\\par\r\n-\\pard\\fi-72\\li1872\\sb172\\sl-249\\slmult0\\f2\\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\\par\r\n-\\pard\\fi1872\\sl-225\\slmult0\\f1\\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\\par\r\n-\\pard\\fi1800\\sb19\\sl-225\\slmult0\\f2\\fs20 mirror(a,a) .\\par\r\n-\\pard\\fi1800\\sl-196\\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\\par\r\n-\\pard\\fi1872\\sb28\\sl-196\\slmult0\\f1\\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\\par\r\n-\\pard\\fi1800\\sb230\\sl-196\\slmult0 The BCN-answers for the question I symmetric (Z) are:\\par\r\n-\\pard\\fi3096\\sb182\\sl-196\\slmult0 .Z = f (a, A), A ~ a;
 \\par\r\n-\\pard\\fi4320\\sl-153\\slmult0\\f0\\fs12 --\\\'a1\\par\r\n-\\pard\\li3096\\sl-360\\slmult0\\f1\\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \\\'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\\par\r\n-\\pard\\fi3096\\sb4\\sl-360\\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\\par\r\n-\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\\par\r\n-\\pard\\fi3096\\sb14\\sl-360\\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\\par\r\n-\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\\par\r\n-.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\\par\r\n-\\pard\\fi3600\\sl-360\\slmult0 and so on\\par\r\n-\\pard\\fi2016\\sl-326\\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\\par\r\n-\\pard\\fi2016\\sl-240\\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\\par\r\n-\\pard\\fi2016\\sb43\\sl-240\\slmult0\\fs20 answers).\\par\r\n-\\p
 ard\\sb2198\\sl-240\\slmult0\\f3\\fs8 -~\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi72\\sl-220\\slmult0\\fs18 100 The following example is a variant of a program introduced in\\par\r\n-\\pard\\fi1296\\sb28\\sl-220\\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\\par\r\n-\\pard\\fi1224\\sb9\\sl-220\\slmult0 Bowen, editors, \\i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\\par\r\n-\\pard\\fi1224\\sl-220\\slmult0 Programming, \\i0 pages 111-125, Seatle, 1988. The MIT presso\\par\r\n-\\pard\\li360\\sb230\\sl-206\\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\\par\r\n-\\pard\\fi288\\sb38\\sl-206\\slmult0 member(X,[XI~).\\par\r\n-\\pard\\fi360\\sl-201\\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\\par\r\n-list_of_digi ts ([ ] ) .\\par\r\n-\\pard\\fi360\\sb28\\sl-201\\slmult0 list_of_digi ts ([ 
 XI Y] ) : -digit (X), list_of_digits (Y) .\\par\r\n-\\pard\\fi360\\sl-192\\slmult0 digit(l).\\par\r\n-\\pard\\fi360\\sb28\\sl-192\\slmult0 digit(2)..\\par\r\n-\\pard\\fi288\\sb38\\sl-192\\slmult0\\f2\\fs20 digit(3) .\\par\r\n-\\pard\\fi288\\sb33\\sl-192\\slmult0\\fs22 digit(4) .\\par\r\n-\\pard\\fi288\\sb14\\sl-192\\slmult0\\fs20 digit(5) .\\par\r\n-\\pard\\fi288\\sb326\\sl-192\\slmult0\\f1\\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \\i for \\i0 all the\\par\r\n-\\pard\\fi360\\sl-192\\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\\par\r\n-\\pard\\li1512\\ri6048\\sl-360\\slmult0\\qj\\f2\\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\\par\r\n-\\pard\\fi1584\\sl-345\\slmult0\\f1\\fs18 .o o. and so on\\par\r\n-\\pard\\sl-336\\slmult0 11. The following is a program that computes pairs of disjoint lists ofnum
 bers:\\par\r\n-\\pard\\li288\\sb264\\sl-192\\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\\par\r\n-\\pard\\fi288\\sb57\\sl-192\\slmult0\\f2\\fs22 element(O).\\par\r\n-\\pard\\fi288\\sb9\\sl-192\\slmult0\\f1\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi288\\sb24\\sl-192\\slmult0 member (X,[ X.I_] ) .\\par\r\n-\\pard\\fi288\\sb33\\sl-192\\slmult0 member (X,[ -\' L] ) : -member (X, L) .\\par\r\n-\\pard\\fi288\\sb28\\sl-192\\slmult0 disjoint ([] ,-),\\par\r\n-\\pard\\fi288\\sb4\\sl-192\\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\\par\r\n-\\pard\\fi216\\sb302\\sl-192\\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\\par\r\n-\\pard\\fi1512\\sb38\\sl-192\\slmult0 .Ll = [ O), L2 = [ \\i O] \\i0 ;\\par\r\n-\\pard\\fi1512\\sb177\\sl-192\\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\\par\r\n-\\pard\\fi1512\\sb168\\sl-192\\slmult0 .Ll = [ O, O], L2 = [ O] ;\\pa
 r\r\n-.Ll = [ O, O], L2 = [ O, O) ;\\par\r\n-\\pard\\fi1512\\sb144\\sl-192\\slmult0 .o.. and so on\\par\r\n-\\pard\\fi10512\\sb3984\\sl-192\\slmult0\\f3\\fs12 ,\\\\\\par\r\n-\\pard\\f0\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n-\\pard\\fi216\\sb1036\\sl-201\\slmult0\\ulnone\\f3 j\\par\r\n-\\pard\\fi1584\\sb384\\sl-220\\slmult0\\f1\\fs18 12. The following is the classical insertion sort program:\\par\r\n-\\pard\\fi-72\\li1944\\sb168\\sl-244\\slmult0\\f2\\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\\par\r\n-\\pard\\fi1944\\sl-244\\slmult0\\f1\\fs18 insert_sort (E,[ ] ,[ E] ) .\\par\r\n-\\pard\\fi1944\\sl-168\\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\\par\r\n-\\pard\\fi-72\\li1944\\sb19\\sl-196\\slmult0\\f2\\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \\f1 list_sort(L,NL):- sort(L,[],NL). -\\par\r\n-\\pard\\fi1944\\s
 b100\\sl-196\\slmult0\\fs18 sort (( ] , L, L) .\\par\r\n-\\pard\\fi1944\\sb19\\sl-196\\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\\par\r\n-\\pard\\fi1944\\sb24\\sl-196\\slmult0 list (( ] ) .\\par\r\n-list(( EIL] ):-element(E), list(L).\\par\r\n-\\pard\\fi1944\\sb33\\sl-196\\slmult0\\fs22 element (O) .\\par\r\n-\\pard\\fi1944\\sl-196\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi1944\\sb206\\sl-196\\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn\'t arrear in the head, hence it produces. universal\\par\r\n-\\pard\\fi1944\\sb72\\sl-196\\slmult0 quantification\\par\r\n-\\pard\\fi1944\\sb244\\sl-196\\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\\par\r\n-\\pard\\fi1944\\sb38\\sl-196\\slmult0 the second list is not the ordering ofthe first one:\\par\r\n-\\pard\\fi3168\\sb72\\sl-196\\slmult0 .11=[],12=[0];\\par\r\n-\\pard\\fi3168\\sb153\\sl-196\\slmult0 .L1 = ( s
  (O)], L2 = [ ] ;\\par\r\n-\\pard\\fi3168\\sb158\\sl-196\\slmult0 .11 = [ s (O)\\}, L2 = [ O\\} ;\\par\r\n-\\pard\\fi3168\\sb168\\sl-196\\slmult0 .11 = [ ], L2 = ( S (O)\\} ;\\par\r\n-\\pard\\fi3744\\sb148\\sl-196\\slmult0 and so on\\par\r\n-\\pard\\fi1584\\sb360\\sl-196\\slmult0 13. This program returns the maximum ora list ofnumbers:\\par\r\n-\\pard\\fi1944\\sb211\\sl-196\\slmult0\\f2\\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\\par\r\n-\\pard\\fi1944\\sb62\\sl-196\\slmult0 greater(E,O,E) .\\par\r\n-\\pard\\fi1944\\sb4\\sl-196\\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\\par\r\n-\\pard\\fi1944\\sb57\\sl-196\\slmult0\\f1\\fs18 max_list([] ,0).\\par\r\n-\\pard\\fi1944\\sl-168\\slmult0 max_list ([ EI;L\\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\\par\r\n-\\pard\\fi1944\\sb81\\sl-168\\slmult0 list (( \\} ) .\\par\r\n-\\pard\\fi1944\\sb52\\sl-168\\slmult0 list([EIL]):-element(E), list(L).\\par\r\n-\\pard\\fi1944\\sb67\\sl-168\\slmult0\\fs2
 2 element(O) .\\par\r\n-\\pard\\fi1944\\sb28\\sl-168\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi1944\\sb268\\sl-168\\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\\par\r\n-\\pard\\fi1944\\sb4\\sl-168\\slmult0 quantification. -\\par\r\n-\\pard\\fi1944\\sb302\\sl-168\\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\\par\r\n-\\pard\\fi1944\\sb110\\sl-168\\slmult0 such that the number is not the maximum ofthe list:\\par\r\n-\\pard\\fi3168\\sb81\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(O);\\par\r\n-\\pard\\fi3168\\sb192\\sl-168\\slmult0\\f1\\fs18 .1 = [ O], E = s (O);\\par\r\n-\\pard\\fi3168\\sb206\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(s(O\\\'bb);\\par\r\n-\\pard\\fi3168\\sb182\\sl-168\\slmult0\\f1\\fs18 .L = ( O], E = s (s (O));\\par\r\n-\\pard\\fi3744\\sb182\\sl-168\\slmult0 and so on\\par\r\n-\\pard\\fi11160\\sb3067\\sl-168\\slmult0\\
 ul\\f3 ,-~ "..\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,69 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi1512\\sl-220\\slmult0\\fs18 14. The following program computes the list difference operation:\\par\r\n-\\pard\\fi2016\\sb196\\sl-240\\slmult0\\f2\\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip
 \\par\r\n-\\pard\\fi2016\\sb24\\sl-220\\slmult0\\f1\\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\\par\r\n-\\pard\\fi5472\\sl-240\\slmult0\\f2\\fs20 rernove_list (LAux, L2,NL) .\\par\r\n-\\pard\\fi2016\\sl-220\\slmult0\\f1\\fs18 rernove_elernent ([] ,-,[] ) .\\par\r\n-\\pard\\li2016\\sl-216\\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\\par\r\n-\\pard\\fi6120\\sb43\\sl-216\\slmult0\\f2\\fs20 rernove_elernent(L,E2,NL) .\\par\r\n-\\pard\\fi2016\\sl-201\\slmult0 equal(E,E).\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0\\f1\\fs18 list ([] ) .\\par\r\n-\\pard\\fi2016\\sb24\\sl-201\\slmult0 list([ EIL]):- elernent(E), list(L).\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent (O) .\\par\r\n-\\pard\\fi2016\\sb24\\sl-201\\slmult0 elernent(s(E)):- elernent(E).\\par\r\n-\\pard\\fi1800\\sb225\\sl-201\\slmult0 Notice that the variable LAux
  in the predicate rernove_list/ 3 produces universal quantification.\\par\r\n-\\pard\\fi2016\\sb264\\sl-201\\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\\par\r\n-\\pard\\fi2016\\sb28\\sl-201\\slmult0 tuples (L I,L2,L3) such that L3 is not \\b Ll \\b0 -L2.\\par\r\n-\\pard\\fi3096\\sb67\\sl-201\\slmult0 .Ll=[],L2=[0],L3=[0];\\par\r\n-\\pard\\fi3096\\sb144\\sl-201\\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\\par\r\n-\\pard\\fi3600\\sb144\\sl-201\\slmult0 and so on\\par\r\n-\\pard\\fi1512\\sb345\\sl-201\\slmult0 15. This program computes the sum of a list:\\par\r\n-\\pard\\fi2016\\sb230\\sl-201\\slmult0\\f2\\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\\par\r\n-\\pard\\fi2016\\sb48\\sl-201\\slmult0\\f1\\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_ele
 rnent (El,E2,E3) .\\par\r\n-\\pard\\fi2016\\sb14\\sl-201\\slmult0 SuIn list ([ ] , O) .\\par\r\n-\\pard\\fi2016\\sb28\\sl-201\\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 list ([ ] ) .\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0 list([EIL]):- element(E), list(L).\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent(O) .\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0 elernent (s (E)) : -elernent (E) ,\\par\r\n-\\pard\\fi1800\\sb220\\sl-201\\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\\par\r\n-\\pard\\fi2016\\sb259\\sl-201\\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\\par\r\n-\\pard\\fi2016\\sb57\\sl-201\\slmult0 such that the number is not the sum afilie list values:\\par\r\n-\\pard\\fi3096\\sb38\\sl-201\\slmult0\\f2 .L = [], E = s(O);\\par\r\n-\\pard\\fi3096\\sb163\\sl-201
 \\slmult0\\f1 .L = [ O], E = s (O);\\par\r\n-\\f2\\fs20 .L = [], E = s(s(O));\\par\r\n-\\pard\\fi3096\\sb168\\sl-201\\slmult0\\f1\\fs18 .L=[O], E=s(s(O));\\par\r\n-\\pard\\fi3672\\sb139\\sl-201\\slmult0 andsoon\\par\r\n-\\pard\\sb3859\\sl-201\\slmult0\\f0\\fs22 \'-\\par\r\n-\\pard\\fi11016\\sl-76\\slmult0\\ul\\f3\\fs10 ~--~---~-\\par\r\n-\\pard\\ulnone\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi10512\\sl-158\\slmult0\\ul ,\\par\r\n-\\pard\\fi9864\\sl-801\\slmult0\\ulnone\\fs76 ,\\par\r\n-\\pard\\fi10152\\sl-820\\slmult0\\fs78 ,\\par\r\n-\\pard\\sb744\\sl-220\\slmult0\\fs18 16. The following program computes thejoint oftwo lists:\\par\r\n-\\pard\\fi504\\sb163\\sl-240\\slmult0\\f2\\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\\par\r\n-\\pard\\fi432\\sb38\\sl-240\\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\\par\r\n-\\pard\\fi504\\sl-220\\slmult0\\f1\\fs18 union([ EIL1\\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\\par\r\n
 -\\pard\\fi504\\sb14\\sl-220\\slmult0 member (E,[ El J ) .\\par\r\n-\\pard\\fi504\\sl-220\\slmult0 member (E,[ _1 L] ) : -member (E, L) .\\par\r\n-element (O) .\\par\r\n-\\pard\\fi504\\sb4\\sl-220\\slmult0 element(s(E)):- element(E).\\par\r\n-\\pard\\fi504\\sl-220\\slmult0 list ([] ) .\\par\r\n-list([EIL]):- element(E), list(L).\\par\r\n-\\pard\\fi504\\sb211\\sl-220\\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\\par\r\n-\\pard\\fi504\\sb9\\sl-220\\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\\}:\\par\r\n-\\pard\\fi1584\\sb48\\sl-220\\slmult0 .Ll=[],L2=[]i\\par\r\n-\\pard\\fi1584\\sb120\\sl-220\\slmult0 .Ll = [s (O)], L2 = [s(O)].;\\par\r\n-\\pard\\fi1584\\sb144\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [] i\\par\r\n-.Ll = [ ], L2 = [ s (O)] i\\par\r\n-\\pard\\fi1584\\sb153\\sl-220\\slmult0 .Ll = [ ], L2 = [ O, O] i\\par\r\n-\\pard\\fi1584\\sb134\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\\par
 \r\n-\\pard\\fi1584\\sb139\\sl-220\\slmult0 .= [ s ( O) , O] ;\\par\r\n-\\pard\\fi2160\\sb124\\sl-220\\slmult0 and so on\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\n\r\n'
imap: savemessage: new headers are: X-OfflineIMAP-x507451219-5265702d476d61696c2d54726162616a6f-494e424f58: 1292583950-0440842336892-v6.0.0
imap: savemessage_addheader: called to add X-OfflineIMAP-x507451219-5265702d476d61696c2d54726162616a6f-494e424f58: 1292583950-0440842336892-v6.0.0
imap: savemessage_addheader: insertionpoint = 56
imap: savemessage_addheader: leader = 'From vpablos@babel.ls.fi.upm.es Wed Dec 15 17:51:29 2010'
imap: savemessage_addheader: newline = '\r\nX-OfflineIMAP-x507451219-5265702d476d61696c2d54726162616a6f-494e424f58: 1292583950-0440842336892-v6.0.0'
imap: savemessage_addheader: trailer = '\r\nReturn-path: <vpablos@babel.ls.fi.upm.es>\r\nX-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on babel.ls.fi.upm.es\r\nEnvelope-to: vpablos@babel.ls.fi.upm.es\r\nDelivery-date: Wed, 15 Dec 2010 17:51:29 +0100\r\nReceived: from www-data by babel.ls.fi.upm.es with local (Exim 4.72)\r\n\t(envelope-from <vpablos@babel.ls.fi.upm.es>)\r\n\tid 1PSuZd-0001CE-6A\r\n\tfor vpablos@babel.ls.fi.upm.es; Wed, 15 Dec 2010 17:51:29 +0100\r\nMessage-Id: <E1PSuZd-0001CE-6A@babel.ls.fi.upm.es>\r\nDate: Wed, 15 Dec 2010 17:51:29 +0100\r\nTo: vpablos@babel.ls.fi.upm.es\r\nFrom: vpablos@babel.ls.fi.upm.es\r\nSubject: [neg&fl] commit r94 - in negation: . Ejemplos_Negacion cneg_ciao_Chan/Ejemplos_Negacion\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\nAuthor: vpablos\r\nDate: 2010-12-15 17:51:29 +0100 (Wed, 15 Dec 2010)\r\nNew Revision: 94\r\n\r\nAdded:\r\n   negation/Ejemplos_Negacion/\r\n   negation/Ejemplos_Ne
 gacion/Articuloparte1.rtf\r\n   negation/Ejemplos_Negacion/Articuloparte2.rtf\r\n   negation/Ejemplos_Negacion/Articuloparte3.rtf\r\nRemoved:\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\r\nLog:\r\nMoved unused examples.\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte1.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte1.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,120 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\f
 prq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-220\\slmult0\\ul\\f0\\fs18 ---,- \\ulnone -\\par\r\n+\\pard\\fi504\\sb62\\sl-681\\slmult0\\fs64 /\\par\r\n+\\pard\\fi6048\\sb710\\sl-278\\slmult0\\b\\f1\\fs24 Examples\\par\r\n+\\pard\\fi-288\\li1944\\sb230\\sl-196\\slmult0\\b0\\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\\par\r\n+\\pard\\fi1944\\sb240\\sl-196\\slmult0\\f2\\fs20 p(a). % File delay.pnt in programs:zip\\par\r\n+\\pard\\fi1944\\sb43\\sl-196\\slmult0\\f1\\fs18 p(f(X)):- p(X).\\par\r\n+\\pard\\fi2016\\sb33\\sl-196\\slmult0 r (X) : -! s (X) .\\par\r\n+\\pard\\fi1944\\sb28\\sl-196\\slmult0\\f2\\fs20 s(g(X)) .\\par\r\n+\\pard\\li1944\\sb216\\sl-230\\slmult0\\f1\\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay techn
 ique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\\par\r\n+\\pard\\fi1584\\sb211\\sl-230\\slmult0 2. The following program is a typical example of recursion through negation:\\par\r\n+\\pard\\fi1944\\sb216\\sl-230\\slmult0\\f2\\fs20 even(O). % File even.pnt in programs.zip\\par\r\n+\\pard\\fi1944\\sl-211\\slmult0\\f1\\fs18 even(s(X) ).:- ! even(X).\\par\r\n+\\pard\\fi2808\\sb124\\sl-211\\slmult0\\fs12 .\'\\par\r\n+\\pard\\li1944\\sl-235\\slmult0\\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\\par\r\n+\\pard\\fi3168\\sb19\\sl-235\\slmult0\\f2\\fs20 .Z = s(O);\\par\r\n+\\pard\\fi3168\\sb124\\sl-235\\slmult0 .Z = s(s(s(O)));\\par\r\n+\\pard\\fi3168\\sb120\\sl-235\\slmult0 .Z = s(s(s(s(s(O)))));\\par\r\n+\\pard\\fi288\\sb100\\sl-235\\slmult0\\f1\\fs18 j and so on\\par\r\n+\\pard\\fi72\\li2088\\sb350\\sl-220\\slmult0 Howe
 ver, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\\par\r\n+\\pard\\fi1584\\sb225\\sl-220\\slmult0 3. A similar behaviour is shown by the following definite program:\\par\r\n+\\pard\\fi1944\\sb216\\sl-220\\slmult0\\f2\\fs20 less(O,s(Y\\}). %File less.pnt in programJ.zip\\par\r\n+\\pard\\fi1944\\sb14\\sl-220\\slmult0\\f1\\fs18 less(s(X),s(Y)):- less(X,Y).\\par\r\n+\\pard\\fi1944\\sb211\\sl-220\\slmult0 The BCN-answers for the question ! less (X, Y) are:\\par\r\n+\\pard\\fi3168\\sb76\\sl-220\\slmult0 .X=O,Y=_A,_A~s(*B);\\par\r\n+\\pard\\li3168\\sl-283\\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\\par\r\n+\\pard\\fi3168\\sl-216\\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\\par\r\n+\\pard\\fi3168\\sb43\\sl-216\\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\\par
 \r\n+\\pard\\fi3168\\sb28\\sl-216\\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\\par\r\n+\\pard\\fi3168\\sb38\\sl-216\\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\\par\r\n+\\pard\\fi3744\\sb19\\sl-216\\slmult0 and so on\\par\r\n+\\pard\\fi2088\\sb230\\sl-216\\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\\par\r\n+\\pard\\fi7560\\sb2112\\sl-216\\slmult0\\f3\\fs36 .\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-259\\slmult0\\ul\\f0\\fs22 -\\par\r\n+\\pard\\fi1440\\sb1632\\sl-220\\slmult0\\ulnone\\f1\\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\\par\r\n+\\pard\\li1800\\ri1008\\sb177\\sl-220\\slmult0\\qj\\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\\par\r\n+\\pard\\fi-1800\\li1800\\ri5976\\sb76\\sl-206\\slmult0\\qj\\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \\f2 even_by_sum(X):- \' sum(Y,Y,X).\\par\r\n+\\
 pard\\fi1800\\sb206\\sl-206\\slmult0\\f1 Thequestion !sum\\{Zl,Z2,Z3) gives:\\par\r\n+\\pard\\li3024\\sl-403\\slmult0\\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \\f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\\par\r\n+\\pard\\fi3024\\sl-336\\slmult0 .Zl = s\\{s(_A)), Z3 = s(_8), _B;!: s(*C);\\par\r\n+\\pard\\fi3024\\sb28\\sl-336\\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\\{_B), _B ;!: _A;\\par\r\n+\\pard\\fi504\\sb33\\sl-336\\slmult0 -.Zl = s\\{s\\{s\\{_A))), Z3 = s\\{s\\{_B)), _B ~ s(*C);\\par\r\n+\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Zl = s\\{s\\{O)), Z2 = _A, Z3 = s\\{s\\{_B)), _8;!: _A;\\par\r\n+\\pard\\fi3096\\sb38\\sl-336\\slmult0 .Zl";\' s\\{s(s\\{s\\{_A)))), Z3 = s(s\\{s(_B))), _B;!: s(*C);\\par\r\n+\\pard\\fi3024\\sb33\\sl-336\\slmult0 ..,. and so on\\par\r\n+\\pard\\fi1800\\sb235\\sl-336\\slmult0 and the question ! even_by _sum ( Z ) gives:\\par\r\n+\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\\{O\\};)\\par\r\n+\\pard\\fi-576\\li3672\\sb4\\sl
 -364\\slmult0 .Z = s\\{s(_A)), _A;!: O, _A;!: s\\{s\\{*B)); (equivalentto Z=s\\{s\\{s(O)));) and so on\\par\r\n+\\pard\\fi1512\\sb196\\sl-364\\slmult0 5. The following program produces very big computation trees:\\par\r\n+\\pard\\fi-72\\li1872\\sb100\\sl-283\\slmult0\\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\\{X),\\par\r\n+\\pard\\fi4104\\sl-201\\slmult0 ! evennumf(Y).\\par\r\n+\\pard\\fi1872\\sb19\\sl-201\\slmult0 evennumf(f(X,Y)):- ! evennumf\\{X),\\par\r\n+\\pard\\fi4104\\sb9\\sl-201\\slmult0 evennumf(Y) .\\par\r\n+\\pard\\fi1872\\sb235\\sl-201\\slmult0\\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\\par\r\n+\\pard\\fi3096\\sb192\\sl-201\\slmult0\\f2\\fs20 .Z = f(a,a);\\par\r\n+\\pard\\fi3096\\sb153\\sl-201\\slmult0\\f1\\fs18 .Z = f(f(a,a),f(a,a));\\par\r\n+.Z = f(f(a,a),f(f(a,a),f\\{a,a)));\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f\\{f\\{a,f\\{a,a)),a);\\par\r\n+
 \\f2 .Z = f(f\\{f\\{a,a),a),a);\\par\r\n+\\f1 .Z = f(a,f\\{f\\{a,a),a));\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Z = f(a,f(a,f(a,a));\\par\r\n+.Z = f(f(f(a,a),f\\{a,a)),f\\{a,a));\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f(f\\{f\\{a,a),f\\{a,a)),f\\{f\\{a,a),f\\{a,a)));\\par\r\n+.Z = f(f(f\\{a,a),a),f(f(a,a),a));\\par\r\n+\\pard\\sb177\\sl-201\\slmult0 I and so on\\par\r\n+\\pard\\sb484\\sl-201\\slmult0\\f0\\fs34\\\'a1\\par\r\n+\\pard\\sb216\\sl-201\\slmult0\\fs22 j ~\\par\r\n+\\pard\\sb297\\sl-201\\slmult0\\fs14 I\\par\r\n+\\pard\\sb48\\sl-201\\slmult0\\f3\\fs20 I\\par\r\n+\\pard\\sl-115\\slmult0\\f1\\fs8\\\'a1\\par\r\n+\\pard\\sb9\\sl-86\\slmult0\\f0\\fs10 I\\par\r\n+\\pard\\sb297\\sl-86\\slmult0\\f3\\fs14 1-\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi1512\\sl-220\\slmult0\\fs18 6. The following program was introduced in\\par\r\n+\\pard\\fi2736\\sl-220\\slmult0 W. Drabent., \\i What is,failure?An approach to const
 ructive negation,\\par\r\n+\\i0 Acta lnformatica, 32:27-59,1995.\\par\r\n+\\pard\\fi1872\\sb206\\sl-220\\slmult0\\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0\\f0 p (X) : -p (X) .\\par\r\n+\\f2 p(a) ,\\par\r\n+\\f0 q (a) : -q(a).\\par\r\n+\\f1 q(X):- !s\\{X).\\par\r\n+\\pard\\fi1872\\sb9\\sl-240\\slmult0\\f2\\fs20 s (a),\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0\\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\\par\r\n+\\pard\\fi2952\\sl-220\\slmult0 % the BCN prototype infers the signature from the program and the goal,\\par\r\n+\\pard\\fi1872\\sb230\\sl-220\\slmult0\\f1 It can be checked that:\\par\r\n+\\pard\\fi3096\\sb19\\sl-220\\slmult0 .! r. One answer : True;\\par\r\n+\\pard\\fi3096\\sb134\\sl-220\\slmult0 .r. fails\\par\r\n+\\pard\\fi1512\\sb340\\sl-220\\slmult0 7. The following program was introduced in\\par\r\n+\\pard\\fi2736\\sl-220\\slmult0 R.Bart\\\'e1k, Constructive Negatio
 n in CLP(H) , Technical Report No 98/6,\\par\r\n+Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\\par\r\n+\\pard\\fi2808\\sb28\\sl-220\\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\\par\r\n+\\pard\\li1872\\sb168\\sl-244\\slmult0\\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\\par\r\n+\\pard\\fi1872\\sl-230\\slmult0\\fs16 t (c) ,\\par\r\n+\\pard\\fi1872\\sb216\\sl-230\\slmult0\\f1\\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\\par\r\n+\\pard\\fi3096\\sb148\\sl-230\\slmult0 .X = a, Y = _A, _A * f(*B);\\par\r\n+\\pard\\fi3096\\sb144\\sl-230\\slmult0\\f2 .X = f(_A), y = _B, _B * b;\\par\r\n+.X = _A, _A * f\'(*B), _A * a;\\par\r\n+\\pard\\fi3096\\sb129\\sl-230\\slmult0 .X = a, Y = f(_A), _A * c;\\par\r\n+\\pard\\fi3096\
 \sb139\\sl-230\\slmult0 .X = f(_A), Y = b, _A * c;\\par\r\n+\\pard\\fi1872\\sb105\\sl-230\\slmult0\\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\\\'e1k\'s prototype.\\par\r\n+\\pard\\li1872\\sl-225\\slmult0 Our answers are more general than Bart\\\'e1k\'s ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\\par\r\n+\\pard\\fi288\\sb446\\sl-225\\slmult0 , 8. The following program was introduced in\\par\r\n+\\pard\\li2736\\sl-225\\slmult0 A. Bossi, M. Fabris and M.C. Meo, \\i A bottom-up semanticsforconstructive negation, \\i0 In P."V. Hentenryck, editor, \\i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \\i0 \'94), pages 520-534, MIT Press, 1994.\\par\r\n+\\pard\\li2016\\sb158\\sl-249\\slmult0\\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \\f1 p(X,g(W)):- !r(W).\\par\r\n+\\pard\\fi2016\\sl-225\\slmult0\\fs1
 4 cq.(a) ,\\par\r\n+\\pard\\li2016\\ri6840\\sb38\\sl-216\\slmult0\\qj\\fs18 r(b):- r(b). r(c):- r(c). \\f2 r(c) .\\par\r\n+\\pard\\fi2088\\sb201\\sl-216\\slmult0\\f1 It can be checked that the BCN prototype behaves as foIlows:\\par\r\n+\\pard\\fi3096\\sb28\\sl-216\\slmult0 .!p(f(a),Y). fails\\par\r\n+\\pard\\sl-216\\slmult0\\f0\\fs14 I\\par\r\n+\\pard\\sb24\\sl-110\\slmult0\\f1\\fs18 , .!p(a,c). Oneanswer:True\\par\r\n+\\pard\\fi3096\\sb273\\sl-110\\slmult0 .! r (c). fails \'\\par\r\n+\\pard\\sb1886\\sl-110\\slmult0\\ul\\f0\\fs26 -\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte2.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte2.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,121 
 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n+\\pard\\fi3024\\sb1660\\sl-220\\slmult0\\ulnone\\f1\\fs18 .! r (b). loops infinitely\\par\r\n+\\pard\\fi3024\\sb139\\sl-220\\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\\par\r\n+\\pard\\fi3024\\sb144\\sl-240\\slmult0\\f2\\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\\par\r\n+\\pard\\fi3744\\sb172\\sl-220\\slmult0\\f1\\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\\par\r\n+\\pard\\fi3744\\sb105\\sl-220\\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\\par\r\n+\\pard\\fi3744\\sb192\\sl-220\\slmult0 .X=_A, Y=g(c), _A~f(*B);\\par\r\n+\\pard\\fi3744\\sb86\
 \sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = g(c), _A ~ a;\\par\r\n+\\pard\\fi3096\\sb158\\sl-220\\slmult0\\f1\\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\\par\r\n+\\pard\\fi3096\\sb139\\sl-220\\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\\par\r\n+.p(X, g(Y)), q(Y). Twoanswers:\\par\r\n+\\pard\\fi3744\\sb120\\sl-240\\slmult0\\f2\\fs20 .X = f(a), Y = a;\\par\r\n+\\pard\\fi3744\\sb91\\sl-240\\slmult0 .y = a;\\par\r\n+\\pard\\sb153\\sl-220\\slmult0\\qc\\f1\\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\\par\r\n+\\pard\\sb177\\sl-220\\slmult0\\qc .X=_A,Y=c,_A~f(*B);\\par\r\n+\\pard\\fi3744\\sb100\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = c, _A ~ a;\\par\r\n+\\pard\\fi1512\\sb321\\sl-220\\slmult0\\f1\\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\\par\r\n+\\pard\\fi1872\\sb14\\sl-220\\slmult0\\{ \\i ala, f/2, \\i0 gil) is:\\par\r\n+\\pard\\fi-72\\li1872\\sb172\\sl-249\\slmult0\\f2\\fs20 symmetric(
 a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\\par\r\n+\\pard\\fi1872\\sl-225\\slmult0\\f1\\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\\par\r\n+\\pard\\fi1800\\sb19\\sl-225\\slmult0\\f2\\fs20 mirror(a,a) .\\par\r\n+\\pard\\fi1800\\sl-196\\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\\par\r\n+\\pard\\fi1872\\sb28\\sl-196\\slmult0\\f1\\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\\par\r\n+\\pard\\fi1800\\sb230\\sl-196\\slmult0 The BCN-answers for the question I symmetric (Z) are:\\par\r\n+\\pard\\fi3096\\sb182\\sl-196\\slmult0 .Z = f (a, A), A ~ a;\\par\r\n+\\pard\\fi4320\\sl-153\\slmult0\\f0\\fs12 --\\\'a1\\par\r\n+\\pard\\li3096\\sl-360\\slmult0\\f1\\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \\\'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\\par\r\n+\\pard\\fi3096\\sb4\\sl-360\\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\\par\r\n+\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\\par\r\n+\\pard\\fi3096\\sb14\\sl-
 360\\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\\par\r\n+\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\\par\r\n+.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\\par\r\n+\\pard\\fi3600\\sl-360\\slmult0 and so on\\par\r\n+\\pard\\fi2016\\sl-326\\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\\par\r\n+\\pard\\fi2016\\sl-240\\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\\par\r\n+\\pard\\fi2016\\sb43\\sl-240\\slmult0\\fs20 answers).\\par\r\n+\\pard\\sb2198\\sl-240\\slmult0\\f3\\fs8 -~\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi72\\sl-220\\slmult0\\fs18 100 The following example is a variant of a program introduced in\\par\r\n+\\pard\\fi1296\\sb28\\sl-220\\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\\par\r\n+\\pard\\fi1224\\sb9\\sl-220\\slmult0 Bowen, 
 editors, \\i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\\par\r\n+\\pard\\fi1224\\sl-220\\slmult0 Programming, \\i0 pages 111-125, Seatle, 1988. The MIT presso\\par\r\n+\\pard\\li360\\sb230\\sl-206\\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\\par\r\n+\\pard\\fi288\\sb38\\sl-206\\slmult0 member(X,[XI~).\\par\r\n+\\pard\\fi360\\sl-201\\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\\par\r\n+list_of_digi ts ([ ] ) .\\par\r\n+\\pard\\fi360\\sb28\\sl-201\\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\\par\r\n+\\pard\\fi360\\sl-192\\slmult0 digit(l).\\par\r\n+\\pard\\fi360\\sb28\\sl-192\\slmult0 digit(2)..\\par\r\n+\\pard\\fi288\\sb38\\sl-192\\slmult0\\f2\\fs20 digit(3) .\\par\r\n+\\pard\\fi288\\sb33\\sl-192\\slmult0\\fs22 digit(4) .\\par\r\n+\\pard\\fi288\\sb14\\sl-192\\slmult0\\fs20 digit(5) .\\par\r\n+\\pard\\fi288\\sb326\\sl-192\\slmult0\\f1\\fs18 The go
 al! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \\i for \\i0 all the\\par\r\n+\\pard\\fi360\\sl-192\\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\\par\r\n+\\pard\\li1512\\ri6048\\sl-360\\slmult0\\qj\\f2\\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\\par\r\n+\\pard\\fi1584\\sl-345\\slmult0\\f1\\fs18 .o o. and so on\\par\r\n+\\pard\\sl-336\\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\\par\r\n+\\pard\\li288\\sb264\\sl-192\\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\\par\r\n+\\pard\\fi288\\sb57\\sl-192\\slmult0\\f2\\fs22 element(O).\\par\r\n+\\pard\\fi288\\sb9\\sl-192\\slmult0\\f1\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi288\\sb24\\sl-192\\slmult0 member (X,[ X.I_] ) .\\par\r\n+\\pard\\fi288\\sb33\\sl-192\\slm
 ult0 member (X,[ -\' L] ) : -member (X, L) .\\par\r\n+\\pard\\fi288\\sb28\\sl-192\\slmult0 disjoint ([] ,-),\\par\r\n+\\pard\\fi288\\sb4\\sl-192\\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\\par\r\n+\\pard\\fi216\\sb302\\sl-192\\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\\par\r\n+\\pard\\fi1512\\sb38\\sl-192\\slmult0 .Ll = [ O), L2 = [ \\i O] \\i0 ;\\par\r\n+\\pard\\fi1512\\sb177\\sl-192\\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\\par\r\n+\\pard\\fi1512\\sb168\\sl-192\\slmult0 .Ll = [ O, O], L2 = [ O] ;\\par\r\n+.Ll = [ O, O], L2 = [ O, O) ;\\par\r\n+\\pard\\fi1512\\sb144\\sl-192\\slmult0 .o.. and so on\\par\r\n+\\pard\\fi10512\\sb3984\\sl-192\\slmult0\\f3\\fs12 ,\\\\\\par\r\n+\\pard\\f0\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n+\\pard\\fi216\\sb1036\\sl-201\\slmult0\\ulnone\\f3 j\\par\r\n+\\pard\\fi1584\\sb384\\sl-220\\slmult0\\f1\\fs18 12. The followi
 ng is the classical insertion sort program:\\par\r\n+\\pard\\fi-72\\li1944\\sb168\\sl-244\\slmult0\\f2\\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\\par\r\n+\\pard\\fi1944\\sl-244\\slmult0\\f1\\fs18 insert_sort (E,[ ] ,[ E] ) .\\par\r\n+\\pard\\fi1944\\sl-168\\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\\par\r\n+\\pard\\fi-72\\li1944\\sb19\\sl-196\\slmult0\\f2\\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \\f1 list_sort(L,NL):- sort(L,[],NL). -\\par\r\n+\\pard\\fi1944\\sb100\\sl-196\\slmult0\\fs18 sort (( ] , L, L) .\\par\r\n+\\pard\\fi1944\\sb19\\sl-196\\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\\par\r\n+\\pard\\fi1944\\sb24\\sl-196\\slmult0 list (( ] ) .\\par\r\n+list(( EIL] ):-element(E), list(L).\\par\r\n+\\pard\\fi1944\\sb33\\sl-196\\slmult0\\fs22 element (O) .\\par\r\n+\\pard\\fi1944\\sl-196\\slmult0\\fs18 element (s (E) ) : -elemen
 t (E) .\\par\r\n+\\pard\\fi1944\\sb206\\sl-196\\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn\'t arrear in the head, hence it produces. universal\\par\r\n+\\pard\\fi1944\\sb72\\sl-196\\slmult0 quantification\\par\r\n+\\pard\\fi1944\\sb244\\sl-196\\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\\par\r\n+\\pard\\fi1944\\sb38\\sl-196\\slmult0 the second list is not the ordering ofthe first one:\\par\r\n+\\pard\\fi3168\\sb72\\sl-196\\slmult0 .11=[],12=[0];\\par\r\n+\\pard\\fi3168\\sb153\\sl-196\\slmult0 .L1 = ( s (O)], L2 = [ ] ;\\par\r\n+\\pard\\fi3168\\sb158\\sl-196\\slmult0 .11 = [ s (O)\\}, L2 = [ O\\} ;\\par\r\n+\\pard\\fi3168\\sb168\\sl-196\\slmult0 .11 = [ ], L2 = ( S (O)\\} ;\\par\r\n+\\pard\\fi3744\\sb148\\sl-196\\slmult0 and so on\\par\r\n+\\pard\\fi1584\\sb360\\sl-196\\slmult0 13. This program returns the maximum ora list ofnumbers:\\par\r\n+\\pard\\fi1944\\sb211\\sl-196\\slmult0\\f2\\fs20 greater(O,
 E,E). % File max_list.pnt in programs.zip\\par\r\n+\\pard\\fi1944\\sb62\\sl-196\\slmult0 greater(E,O,E) .\\par\r\n+\\pard\\fi1944\\sb4\\sl-196\\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\\par\r\n+\\pard\\fi1944\\sb57\\sl-196\\slmult0\\f1\\fs18 max_list([] ,0).\\par\r\n+\\pard\\fi1944\\sl-168\\slmult0 max_list ([ EI;L\\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\\par\r\n+\\pard\\fi1944\\sb81\\sl-168\\slmult0 list (( \\} ) .\\par\r\n+\\pard\\fi1944\\sb52\\sl-168\\slmult0 list([EIL]):-element(E), list(L).\\par\r\n+\\pard\\fi1944\\sb67\\sl-168\\slmult0\\fs22 element(O) .\\par\r\n+\\pard\\fi1944\\sb28\\sl-168\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi1944\\sb268\\sl-168\\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\\par\r\n+\\pard\\fi1944\\sb4\\sl-168\\slmult0 quantification. -\\par\r\n+\\pard\\fi1944\\sb302\\sl-168\\slmult0 The goal! max_list (1, E), list (1), element (
 E) .gives all the pairs (Iist ofnumbers, number)\\par\r\n+\\pard\\fi1944\\sb110\\sl-168\\slmult0 such that the number is not the maximum ofthe list:\\par\r\n+\\pard\\fi3168\\sb81\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(O);\\par\r\n+\\pard\\fi3168\\sb192\\sl-168\\slmult0\\f1\\fs18 .1 = [ O], E = s (O);\\par\r\n+\\pard\\fi3168\\sb206\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(s(O\\\'bb);\\par\r\n+\\pard\\fi3168\\sb182\\sl-168\\slmult0\\f1\\fs18 .L = ( O], E = s (s (O));\\par\r\n+\\pard\\fi3744\\sb182\\sl-168\\slmult0 and so on\\par\r\n+\\pard\\fi11160\\sb3067\\sl-168\\slmult0\\ul\\f3 ,-~ "..\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte3.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte3.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articulopar
 te3.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,69 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi1512\\sl-220\\slmult0\\fs18 14. The following program computes the list difference operation:\\par\r\n+\\pard\\fi2016\\sb196\\sl-240\\slmult0\\f2\\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\\par\r\n+\\pard\\fi2016\\sb24\\sl-220\\slmult0\\f1\\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\\par\r\n+\\pard\\fi5472\\sl-240\\slmult0\\f2\\fs20 rernove_list (LAux, L2,NL) .\\par\r\n+\\pard\\fi2016\\sl-220\\slmult0\\f1\\fs18 rernove_elernent ([] ,-,[] ) .\\par\r\n+\\pard\\li2016\\sl-216\\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (E
 l, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\\par\r\n+\\pard\\fi6120\\sb43\\sl-216\\slmult0\\f2\\fs20 rernove_elernent(L,E2,NL) .\\par\r\n+\\pard\\fi2016\\sl-201\\slmult0 equal(E,E).\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0\\f1\\fs18 list ([] ) .\\par\r\n+\\pard\\fi2016\\sb24\\sl-201\\slmult0 list([ EIL]):- elernent(E), list(L).\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent (O) .\\par\r\n+\\pard\\fi2016\\sb24\\sl-201\\slmult0 elernent(s(E)):- elernent(E).\\par\r\n+\\pard\\fi1800\\sb225\\sl-201\\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal quantification.\\par\r\n+\\pard\\fi2016\\sb264\\sl-201\\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\\par\r\n+\\pard\\fi2016\\sb28\\sl-201\\slmult0 tuples (L I,L2,L3) such that L3 is not \\b Ll \\b0 -L2.\\par\r\n+\\pard\\fi3096\\sb67\\sl-201\\slmult0 .Ll=[],L2=[0],L3=[0];\\par\r\n+\
 \pard\\fi3096\\sb144\\sl-201\\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\\par\r\n+\\pard\\fi3600\\sb144\\sl-201\\slmult0 and so on\\par\r\n+\\pard\\fi1512\\sb345\\sl-201\\slmult0 15. This program computes the sum of a list:\\par\r\n+\\pard\\fi2016\\sb230\\sl-201\\slmult0\\f2\\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\\par\r\n+\\pard\\fi2016\\sb48\\sl-201\\slmult0\\f1\\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\\par\r\n+\\pard\\fi2016\\sb14\\sl-201\\slmult0 SuIn list ([ ] , O) .\\par\r\n+\\pard\\fi2016\\sb28\\sl-201\\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 list ([ ] ) .\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0 list([EIL]):- element(E), list(L).\\par\r\n+\\pard\\fi2016\\sb9\
 \sl-201\\slmult0 elernent(O) .\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0 elernent (s (E)) : -elernent (E) ,\\par\r\n+\\pard\\fi1800\\sb220\\sl-201\\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\\par\r\n+\\pard\\fi2016\\sb259\\sl-201\\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\\par\r\n+\\pard\\fi2016\\sb57\\sl-201\\slmult0 such that the number is not the sum afilie list values:\\par\r\n+\\pard\\fi3096\\sb38\\sl-201\\slmult0\\f2 .L = [], E = s(O);\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0\\f1 .L = [ O], E = s (O);\\par\r\n+\\f2\\fs20 .L = [], E = s(s(O));\\par\r\n+\\pard\\fi3096\\sb168\\sl-201\\slmult0\\f1\\fs18 .L=[O], E=s(s(O));\\par\r\n+\\pard\\fi3672\\sb139\\sl-201\\slmult0 andsoon\\par\r\n+\\pard\\sb3859\\sl-201\\slmult0\\f0\\fs22 \'-\\par\r\n+\\pard\\fi11016\\sl-76\\slmult0\\ul\\f3\\fs10 ~--~---~-\\par\r\n+\\pard\\ulnone\\f0\\fs12\\par\r\n+\\p
 ard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi10512\\sl-158\\slmult0\\ul ,\\par\r\n+\\pard\\fi9864\\sl-801\\slmult0\\ulnone\\fs76 ,\\par\r\n+\\pard\\fi10152\\sl-820\\slmult0\\fs78 ,\\par\r\n+\\pard\\sb744\\sl-220\\slmult0\\fs18 16. The following program computes thejoint oftwo lists:\\par\r\n+\\pard\\fi504\\sb163\\sl-240\\slmult0\\f2\\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\\par\r\n+\\pard\\fi432\\sb38\\sl-240\\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\\par\r\n+\\pard\\fi504\\sl-220\\slmult0\\f1\\fs18 union([ EIL1\\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\\par\r\n+\\pard\\fi504\\sb14\\sl-220\\slmult0 member (E,[ El J ) .\\par\r\n+\\pard\\fi504\\sl-220\\slmult0 member (E,[ _1 L] ) : -member (E, L) .\\par\r\n+element (O) .\\par\r\n+\\pard\\fi504\\sb4\\sl-220\\slmult0 element(s(E)):- element(E).\\par\r\n+\\pard\\fi504\\sl-220\\slmult0 list ([] ) .\\par\r\n+list([EIL]):- element(E), list(L).\\par\r\n+\\pard\\fi504\\sb211\\sl-220\\slmult0
  Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\\par\r\n+\\pard\\fi504\\sb9\\sl-220\\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\\}:\\par\r\n+\\pard\\fi1584\\sb48\\sl-220\\slmult0 .Ll=[],L2=[]i\\par\r\n+\\pard\\fi1584\\sb120\\sl-220\\slmult0 .Ll = [s (O)], L2 = [s(O)].;\\par\r\n+\\pard\\fi1584\\sb144\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [] i\\par\r\n+.Ll = [ ], L2 = [ s (O)] i\\par\r\n+\\pard\\fi1584\\sb153\\sl-220\\slmult0 .Ll = [ ], L2 = [ O, O] i\\par\r\n+\\pard\\fi1584\\sb134\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\\par\r\n+\\pard\\fi1584\\sb139\\sl-220\\slmult0 .= [ s ( O) , O] ;\\par\r\n+\\pard\\fi2160\\sb124\\sl-220\\slmult0 and so on\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articul
 oparte1.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,120 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-220\\slmult0\\ul\\f0\\fs18 ---,- \\ulnone -\\par\r\n-\\pard\\fi504\\sb62\\sl-681\\slmult0\\fs64 /\\par\r\n-\\pard\\fi6048\\sb710\\sl-278\\slmult0\\b\\f1\\fs24 Examples\\par\r\n-\\pard\\fi-288\\li1944\\sb230\\sl-196\\slmult0\\b0\\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\\par\r\n-\\pard\\fi1944\\sb240\\sl-196\\slmult0\\f2\\fs20 p(a). % File delay.pnt in programs:zip\\par\r\n-\\pard\
 \fi1944\\sb43\\sl-196\\slmult0\\f1\\fs18 p(f(X)):- p(X).\\par\r\n-\\pard\\fi2016\\sb33\\sl-196\\slmult0 r (X) : -! s (X) .\\par\r\n-\\pard\\fi1944\\sb28\\sl-196\\slmult0\\f2\\fs20 s(g(X)) .\\par\r\n-\\pard\\li1944\\sb216\\sl-230\\slmult0\\f1\\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\\par\r\n-\\pard\\fi1584\\sb211\\sl-230\\slmult0 2. The following program is a typical example of recursion through negation:\\par\r\n-\\pard\\fi1944\\sb216\\sl-230\\slmult0\\f2\\fs20 even(O). % File even.pnt in programs.zip\\par\r\n-\\pard\\fi1944\\sl-211\\slmult0\\f1\\fs18 even(s(X) ).:- ! even(X).\\par\r\n-\\pard\\fi2808\\sb124\\sl-211\\slmult0\\fs12 .\'\\par\r\n-\\pard\\li1944\\sl-235\\slmult0\\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., condu
 cted by the BCN prototype, produce the answers:\\par\r\n-\\pard\\fi3168\\sb19\\sl-235\\slmult0\\f2\\fs20 .Z = s(O);\\par\r\n-\\pard\\fi3168\\sb124\\sl-235\\slmult0 .Z = s(s(s(O)));\\par\r\n-\\pard\\fi3168\\sb120\\sl-235\\slmult0 .Z = s(s(s(s(s(O)))));\\par\r\n-\\pard\\fi288\\sb100\\sl-235\\slmult0\\f1\\fs18 j and so on\\par\r\n-\\pard\\fi72\\li2088\\sb350\\sl-220\\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\\par\r\n-\\pard\\fi1584\\sb225\\sl-220\\slmult0 3. A similar behaviour is shown by the following definite program:\\par\r\n-\\pard\\fi1944\\sb216\\sl-220\\slmult0\\f2\\fs20 less(O,s(Y\\}). %File less.pnt in programJ.zip\\par\r\n-\\pard\\fi1944\\sb14\\sl-220\\slmult0\\f1\\fs18 less(s(X),s(Y)):- less(X,Y).\\par\r\n-\\pard\\fi1944\\sb211\\sl-220\\slmult0 The BCN-answers fo
 r the question ! less (X, Y) are:\\par\r\n-\\pard\\fi3168\\sb76\\sl-220\\slmult0 .X=O,Y=_A,_A~s(*B);\\par\r\n-\\pard\\li3168\\sl-283\\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\\par\r\n-\\pard\\fi3168\\sl-216\\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\\par\r\n-\\pard\\fi3168\\sb43\\sl-216\\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\\par\r\n-\\pard\\fi3168\\sb28\\sl-216\\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\\par\r\n-\\pard\\fi3168\\sb38\\sl-216\\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\\par\r\n-\\pard\\fi3744\\sb19\\sl-216\\slmult0 and so on\\par\r\n-\\pard\\fi2088\\sb230\\sl-216\\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\\par\r\n-\\pard\\fi7560\\sb2112\\sl-216\\slmult0\\f3\\fs36 .\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-259\\slmult0\\ul\\f0\\fs22 -\\par\r\n-\\pard\\fi1440\\sb1632\\sl-220\\slmu
 lt0\\ulnone\\f1\\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\\par\r\n-\\pard\\li1800\\ri1008\\sb177\\sl-220\\slmult0\\qj\\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\\par\r\n-\\pard\\fi-1800\\li1800\\ri5976\\sb76\\sl-206\\slmult0\\qj\\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \\f2 even_by_sum(X):- \' sum(Y,Y,X).\\par\r\n-\\pard\\fi1800\\sb206\\sl-206\\slmult0\\f1 Thequestion !sum\\{Zl,Z2,Z3) gives:\\par\r\n-\\pard\\li3024\\sl-403\\slmult0\\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \\f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\\par\r\n-\\pard\\fi3024\\sl-336\\slmult0 .Zl = s\\{s(_A)), Z3 = s(_8), _B;!: s(*C);\\par\r\n-\\pard\\fi3024\\sb28\\sl-336\\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\\{_B), _B ;!: _A;\\par\r\n-\\pard\\fi504\\sb33\\sl-336\\slmult0 -.Zl = s\\{s\\{s\\{_A))), Z3 = s\\{s\\{_B)), _B ~ s(*C);\\par\r\n-\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Zl = s\\{s\\{O)), Z2 = _A, Z3 = s\\{s\\{_B)), _8;!: _A;\\par\r\n-\\pard\\fi3096\\sb38\\sl-
 336\\slmult0 .Zl";\' s\\{s(s\\{s\\{_A)))), Z3 = s(s\\{s(_B))), _B;!: s(*C);\\par\r\n-\\pard\\fi3024\\sb33\\sl-336\\slmult0 ..,. and so on\\par\r\n-\\pard\\fi1800\\sb235\\sl-336\\slmult0 and the question ! even_by _sum ( Z ) gives:\\par\r\n-\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\\{O\\};)\\par\r\n-\\pard\\fi-576\\li3672\\sb4\\sl-364\\slmult0 .Z = s\\{s(_A)), _A;!: O, _A;!: s\\{s\\{*B)); (equivalentto Z=s\\{s\\{s(O)));) and so on\\par\r\n-\\pard\\fi1512\\sb196\\sl-364\\slmult0 5. The following program produces very big computation trees:\\par\r\n-\\pard\\fi-72\\li1872\\sb100\\sl-283\\slmult0\\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\\{X),\\par\r\n-\\pard\\fi4104\\sl-201\\slmult0 ! evennumf(Y).\\par\r\n-\\pard\\fi1872\\sb19\\sl-201\\slmult0 evennumf(f(X,Y)):- ! evennumf\\{X),\\par\r\n-\\pard\\fi4104\\sb9\\sl-201\\slmult0 evennumf(Y) .\\par\r\n-\\pard\\fi1872\\sb235\\sl-201\\slmult0\\f1 The q
 uestion ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\\par\r\n-\\pard\\fi3096\\sb192\\sl-201\\slmult0\\f2\\fs20 .Z = f(a,a);\\par\r\n-\\pard\\fi3096\\sb153\\sl-201\\slmult0\\f1\\fs18 .Z = f(f(a,a),f(a,a));\\par\r\n-.Z = f(f(a,a),f(f(a,a),f\\{a,a)));\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f\\{f\\{a,f\\{a,a)),a);\\par\r\n-\\f2 .Z = f(f\\{f\\{a,a),a),a);\\par\r\n-\\f1 .Z = f(a,f\\{f\\{a,a),a));\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Z = f(a,f(a,f(a,a));\\par\r\n-.Z = f(f(f(a,a),f\\{a,a)),f\\{a,a));\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f(f\\{f\\{a,a),f\\{a,a)),f\\{f\\{a,a),f\\{a,a)));\\par\r\n-.Z = f(f(f\\{a,a),a),f(f(a,a),a));\\par\r\n-\\pard\\sb177\\sl-201\\slmult0 I and so on\\par\r\n-\\pard\\sb484\\sl-201\\slmult0\\f0\\fs34\\\'a1\\par\r\n-\\pard\\sb216\\sl-201\\slmult0\\fs22 j ~\\par\r\n-\\pard\\sb297\\sl-201\\slmult0\\fs14 I\\par\r\n-\\pard\\sb48\\sl-201\\slmult0\\f3\\fs20 I\\par\r\n-\\pard\\
 sl-115\\slmult0\\f1\\fs8\\\'a1\\par\r\n-\\pard\\sb9\\sl-86\\slmult0\\f0\\fs10 I\\par\r\n-\\pard\\sb297\\sl-86\\slmult0\\f3\\fs14 1-\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi1512\\sl-220\\slmult0\\fs18 6. The following program was introduced in\\par\r\n-\\pard\\fi2736\\sl-220\\slmult0 W. Drabent., \\i What is,failure?An approach to constructive negation,\\par\r\n-\\i0 Acta lnformatica, 32:27-59,1995.\\par\r\n-\\pard\\fi1872\\sb206\\sl-220\\slmult0\\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0\\f0 p (X) : -p (X) .\\par\r\n-\\f2 p(a) ,\\par\r\n-\\f0 q (a) : -q(a).\\par\r\n-\\f1 q(X):- !s\\{X).\\par\r\n-\\pard\\fi1872\\sb9\\sl-240\\slmult0\\f2\\fs20 s (a),\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0\\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\\par\r\n-\\pard\\fi2952\\sl-220\\slmult0 % the BCN prototype infers the signature from the program and the 
 goal,\\par\r\n-\\pard\\fi1872\\sb230\\sl-220\\slmult0\\f1 It can be checked that:\\par\r\n-\\pard\\fi3096\\sb19\\sl-220\\slmult0 .! r. One answer : True;\\par\r\n-\\pard\\fi3096\\sb134\\sl-220\\slmult0 .r. fails\\par\r\n-\\pard\\fi1512\\sb340\\sl-220\\slmult0 7. The following program was introduced in\\par\r\n-\\pard\\fi2736\\sl-220\\slmult0 R.Bart\\\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\\par\r\n-Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\\par\r\n-\\pard\\fi2808\\sb28\\sl-220\\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\\par\r\n-\\pard\\li1872\\sb168\\sl-244\\slmult0\\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\\par\r\n-\\pard\\fi1872\\sl-230\\slmult0\\fs16 t (c) ,\\par\r\n-\\pard\\fi1872\\sb216\\sl-230\\slmult0\\f1\\fs18
  The question ! p (X, Y), in the BCN prototype produces the following five answers:\\par\r\n-\\pard\\fi3096\\sb148\\sl-230\\slmult0 .X = a, Y = _A, _A * f(*B);\\par\r\n-\\pard\\fi3096\\sb144\\sl-230\\slmult0\\f2 .X = f(_A), y = _B, _B * b;\\par\r\n-.X = _A, _A * f\'(*B), _A * a;\\par\r\n-\\pard\\fi3096\\sb129\\sl-230\\slmult0 .X = a, Y = f(_A), _A * c;\\par\r\n-\\pard\\fi3096\\sb139\\sl-230\\slmult0 .X = f(_A), Y = b, _A * c;\\par\r\n-\\pard\\fi1872\\sb105\\sl-230\\slmult0\\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\\\'e1k\'s prototype.\\par\r\n-\\pard\\li1872\\sl-225\\slmult0 Our answers are more general than Bart\\\'e1k\'s ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\\par\r\n-\\pard\\fi288\\sb446\\sl-225\\slmult0 , 8. The following program was introduced in\\par\r\n-\\pard\\li2736\\sl-225\\slmult0 A. Bossi, M. Fabris and M.C. Meo, \\i A bott
 om-up semanticsforconstructive negation, \\i0 In P."V. Hentenryck, editor, \\i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \\i0 \'94), pages 520-534, MIT Press, 1994.\\par\r\n-\\pard\\li2016\\sb158\\sl-249\\slmult0\\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \\f1 p(X,g(W)):- !r(W).\\par\r\n-\\pard\\fi2016\\sl-225\\slmult0\\fs14 cq.(a) ,\\par\r\n-\\pard\\li2016\\ri6840\\sb38\\sl-216\\slmult0\\qj\\fs18 r(b):- r(b). r(c):- r(c). \\f2 r(c) .\\par\r\n-\\pard\\fi2088\\sb201\\sl-216\\slmult0\\f1 It can be checked that the BCN prototype behaves as foIlows:\\par\r\n-\\pard\\fi3096\\sb28\\sl-216\\slmult0 .!p(f(a),Y). fails\\par\r\n-\\pard\\sl-216\\slmult0\\f0\\fs14 I\\par\r\n-\\pard\\sb24\\sl-110\\slmult0\\f1\\fs18 , .!p(a,c). Oneanswer:True\\par\r\n-\\pard\\fi3096\\sb273\\sl-110\\slmult0 .! r (c). fails \'\\par\r\n-\\pard\\sb1886\\sl-110\\slmult0\\ul\\f0\\fs26 -\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: nega
 tion/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,121 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n-\\pard\\fi3024\\sb1660\\sl-220\\slmult0\\ulnone\\f1\\fs18 .! r (b). loops infinitely\\par\r\n-\\pard\\fi3024\\sb139\\sl-220\\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\\par\r\n-\\pard\\fi3024\\sb144\\sl-240\\slmult0\\f2\
 \fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\\par\r\n-\\pard\\fi3744\\sb172\\sl-220\\slmult0\\f1\\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\\par\r\n-\\pard\\fi3744\\sb105\\sl-220\\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\\par\r\n-\\pard\\fi3744\\sb192\\sl-220\\slmult0 .X=_A, Y=g(c), _A~f(*B);\\par\r\n-\\pard\\fi3744\\sb86\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = g(c), _A ~ a;\\par\r\n-\\pard\\fi3096\\sb158\\sl-220\\slmult0\\f1\\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\\par\r\n-\\pard\\fi3096\\sb139\\sl-220\\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\\par\r\n-.p(X, g(Y)), q(Y). Twoanswers:\\par\r\n-\\pard\\fi3744\\sb120\\sl-240\\slmult0\\f2\\fs20 .X = f(a), Y = a;\\par\r\n-\\pard\\fi3744\\sb91\\sl-240\\slmult0 .y = a;\\par\r\n-\\pard\\sb153\\sl-220\\slmult0\\qc\\f1\\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\\par\r\n-\\pard\\sb177\\sl-220\\slmult0\\qc .X=_A,Y=c,_A~f(*B);\\par\r\n-\\pard\\fi3744\\sb100\\sl-240\\slmult0\\f2\
 \fs20 .X = f(_A), y = c, _A ~ a;\\par\r\n-\\pard\\fi1512\\sb321\\sl-220\\slmult0\\f1\\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\\par\r\n-\\pard\\fi1872\\sb14\\sl-220\\slmult0\\{ \\i ala, f/2, \\i0 gil) is:\\par\r\n-\\pard\\fi-72\\li1872\\sb172\\sl-249\\slmult0\\f2\\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\\par\r\n-\\pard\\fi1872\\sl-225\\slmult0\\f1\\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\\par\r\n-\\pard\\fi1800\\sb19\\sl-225\\slmult0\\f2\\fs20 mirror(a,a) .\\par\r\n-\\pard\\fi1800\\sl-196\\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\\par\r\n-\\pard\\fi1872\\sb28\\sl-196\\slmult0\\f1\\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\\par\r\n-\\pard\\fi1800\\sb230\\sl-196\\slmult0 The BCN-answers for the question I symmetric (Z) are:\\par\r\n-\\pard\\fi3096\\sb182\\sl-196\\slmult0 .Z = f (a, A), A ~ a;\\par\r\n-\\pard\\fi4320\\sl-153\\slmult0\\f0\\fs12 --\\
 \'a1\\par\r\n-\\pard\\li3096\\sl-360\\slmult0\\f1\\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \\\'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\\par\r\n-\\pard\\fi3096\\sb4\\sl-360\\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\\par\r\n-\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\\par\r\n-\\pard\\fi3096\\sb14\\sl-360\\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\\par\r\n-\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\\par\r\n-.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\\par\r\n-\\pard\\fi3600\\sl-360\\slmult0 and so on\\par\r\n-\\pard\\fi2016\\sl-326\\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\\par\r\n-\\pard\\fi2016\\sl-240\\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\\par\r\n-\\pard\\fi2016\\sb43\\sl-240\\slmult0\\fs20 answers).\\par\r\n-\\pard\\sb2198\\sl-240\\slmult0\\f3\\fs8 -~\\par\r\n-\\pard
 \\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi72\\sl-220\\slmult0\\fs18 100 The following example is a variant of a program introduced in\\par\r\n-\\pard\\fi1296\\sb28\\sl-220\\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\\par\r\n-\\pard\\fi1224\\sb9\\sl-220\\slmult0 Bowen, editors, \\i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\\par\r\n-\\pard\\fi1224\\sl-220\\slmult0 Programming, \\i0 pages 111-125, Seatle, 1988. The MIT presso\\par\r\n-\\pard\\li360\\sb230\\sl-206\\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\\par\r\n-\\pard\\fi288\\sb38\\sl-206\\slmult0 member(X,[XI~).\\par\r\n-\\pard\\fi360\\sl-201\\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\\par\r\n-list_of_digi ts ([ ] ) .\\par\r\n-\\pard\\fi360\\sb28\\sl-201\\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\\par\r\n-\\pa
 rd\\fi360\\sl-192\\slmult0 digit(l).\\par\r\n-\\pard\\fi360\\sb28\\sl-192\\slmult0 digit(2)..\\par\r\n-\\pard\\fi288\\sb38\\sl-192\\slmult0\\f2\\fs20 digit(3) .\\par\r\n-\\pard\\fi288\\sb33\\sl-192\\slmult0\\fs22 digit(4) .\\par\r\n-\\pard\\fi288\\sb14\\sl-192\\slmult0\\fs20 digit(5) .\\par\r\n-\\pard\\fi288\\sb326\\sl-192\\slmult0\\f1\\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \\i for \\i0 all the\\par\r\n-\\pard\\fi360\\sl-192\\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\\par\r\n-\\pard\\li1512\\ri6048\\sl-360\\slmult0\\qj\\f2\\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\\par\r\n-\\pard\\fi1584\\sl-345\\slmult0\\f1\\fs18 .o o. and so on\\par\r\n-\\pard\\sl-336\\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\\par\r\n-\\pard\\li288\\sb264\\sl-192\\slmult0 lis
 t ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\\par\r\n-\\pard\\fi288\\sb57\\sl-192\\slmult0\\f2\\fs22 element(O).\\par\r\n-\\pard\\fi288\\sb9\\sl-192\\slmult0\\f1\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi288\\sb24\\sl-192\\slmult0 member (X,[ X.I_] ) .\\par\r\n-\\pard\\fi288\\sb33\\sl-192\\slmult0 member (X,[ -\' L] ) : -member (X, L) .\\par\r\n-\\pard\\fi288\\sb28\\sl-192\\slmult0 disjoint ([] ,-),\\par\r\n-\\pard\\fi288\\sb4\\sl-192\\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\\par\r\n-\\pard\\fi216\\sb302\\sl-192\\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\\par\r\n-\\pard\\fi1512\\sb38\\sl-192\\slmult0 .Ll = [ O), L2 = [ \\i O] \\i0 ;\\par\r\n-\\pard\\fi1512\\sb177\\sl-192\\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\\par\r\n-\\pard\\fi1512\\sb168\\sl-192\\slmult0 .Ll = [ O, O], L2 = [ O] ;\\par\r\n-.Ll = [ O, O], L2 = [ O, O) ;\\par\r\n-\\pard\\fi1
 512\\sb144\\sl-192\\slmult0 .o.. and so on\\par\r\n-\\pard\\fi10512\\sb3984\\sl-192\\slmult0\\f3\\fs12 ,\\\\\\par\r\n-\\pard\\f0\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n-\\pard\\fi216\\sb1036\\sl-201\\slmult0\\ulnone\\f3 j\\par\r\n-\\pard\\fi1584\\sb384\\sl-220\\slmult0\\f1\\fs18 12. The following is the classical insertion sort program:\\par\r\n-\\pard\\fi-72\\li1944\\sb168\\sl-244\\slmult0\\f2\\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\\par\r\n-\\pard\\fi1944\\sl-244\\slmult0\\f1\\fs18 insert_sort (E,[ ] ,[ E] ) .\\par\r\n-\\pard\\fi1944\\sl-168\\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\\par\r\n-\\pard\\fi-72\\li1944\\sb19\\sl-196\\slmult0\\f2\\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \\f1 list_sort(L,NL):- sort(L,[],NL). -\\par\r\n-\\pard\\fi1944\\sb100\\sl-196\\slmult0\\fs18 sort (( ] , L, L) .\\par\r\n
 -\\pard\\fi1944\\sb19\\sl-196\\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\\par\r\n-\\pard\\fi1944\\sb24\\sl-196\\slmult0 list (( ] ) .\\par\r\n-list(( EIL] ):-element(E), list(L).\\par\r\n-\\pard\\fi1944\\sb33\\sl-196\\slmult0\\fs22 element (O) .\\par\r\n-\\pard\\fi1944\\sl-196\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi1944\\sb206\\sl-196\\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn\'t arrear in the head, hence it produces. universal\\par\r\n-\\pard\\fi1944\\sb72\\sl-196\\slmult0 quantification\\par\r\n-\\pard\\fi1944\\sb244\\sl-196\\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\\par\r\n-\\pard\\fi1944\\sb38\\sl-196\\slmult0 the second list is not the ordering ofthe first one:\\par\r\n-\\pard\\fi3168\\sb72\\sl-196\\slmult0 .11=[],12=[0];\\par\r\n-\\pard\\fi3168\\sb153\\sl-196\\slmult0 .L1 = ( s (O)], L2 = [ ] ;\\par\r\n-\\pard\\fi3168\\sb158\\sl-196
 \\slmult0 .11 = [ s (O)\\}, L2 = [ O\\} ;\\par\r\n-\\pard\\fi3168\\sb168\\sl-196\\slmult0 .11 = [ ], L2 = ( S (O)\\} ;\\par\r\n-\\pard\\fi3744\\sb148\\sl-196\\slmult0 and so on\\par\r\n-\\pard\\fi1584\\sb360\\sl-196\\slmult0 13. This program returns the maximum ora list ofnumbers:\\par\r\n-\\pard\\fi1944\\sb211\\sl-196\\slmult0\\f2\\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\\par\r\n-\\pard\\fi1944\\sb62\\sl-196\\slmult0 greater(E,O,E) .\\par\r\n-\\pard\\fi1944\\sb4\\sl-196\\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\\par\r\n-\\pard\\fi1944\\sb57\\sl-196\\slmult0\\f1\\fs18 max_list([] ,0).\\par\r\n-\\pard\\fi1944\\sl-168\\slmult0 max_list ([ EI;L\\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\\par\r\n-\\pard\\fi1944\\sb81\\sl-168\\slmult0 list (( \\} ) .\\par\r\n-\\pard\\fi1944\\sb52\\sl-168\\slmult0 list([EIL]):-element(E), list(L).\\par\r\n-\\pard\\fi1944\\sb67\\sl-168\\slmult0\\fs22 element(O) .\\par\r\n-\\pard\\fi1944\\sb28\\sl-168\\sl
 mult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi1944\\sb268\\sl-168\\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\\par\r\n-\\pard\\fi1944\\sb4\\sl-168\\slmult0 quantification. -\\par\r\n-\\pard\\fi1944\\sb302\\sl-168\\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\\par\r\n-\\pard\\fi1944\\sb110\\sl-168\\slmult0 such that the number is not the maximum ofthe list:\\par\r\n-\\pard\\fi3168\\sb81\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(O);\\par\r\n-\\pard\\fi3168\\sb192\\sl-168\\slmult0\\f1\\fs18 .1 = [ O], E = s (O);\\par\r\n-\\pard\\fi3168\\sb206\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(s(O\\\'bb);\\par\r\n-\\pard\\fi3168\\sb182\\sl-168\\slmult0\\f1\\fs18 .L = ( O], E = s (s (O));\\par\r\n-\\pard\\fi3744\\sb182\\sl-168\\slmult0 and so on\\par\r\n-\\pard\\fi11160\\sb3067\\sl-168\\slmult0\\ul\\f3 ,-~ "..\\par\r\n-}\r\n-\x00\r\n\\ No newline at e
 nd of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,69 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi1512\\sl-220\\slmult0\\fs18 14. The following program computes the list difference operation:\\par\r\n-\\pard\\fi2016\\sb196\\sl-240\\slmult0\\f2\\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\\par\r\n-\\pard\\fi2016\\sb24\\sl-220\\slmult0\\f1\\fs1
 8 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\\par\r\n-\\pard\\fi5472\\sl-240\\slmult0\\f2\\fs20 rernove_list (LAux, L2,NL) .\\par\r\n-\\pard\\fi2016\\sl-220\\slmult0\\f1\\fs18 rernove_elernent ([] ,-,[] ) .\\par\r\n-\\pard\\li2016\\sl-216\\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\\par\r\n-\\pard\\fi6120\\sb43\\sl-216\\slmult0\\f2\\fs20 rernove_elernent(L,E2,NL) .\\par\r\n-\\pard\\fi2016\\sl-201\\slmult0 equal(E,E).\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0\\f1\\fs18 list ([] ) .\\par\r\n-\\pard\\fi2016\\sb24\\sl-201\\slmult0 list([ EIL]):- elernent(E), list(L).\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent (O) .\\par\r\n-\\pard\\fi2016\\sb24\\sl-201\\slmult0 elernent(s(E)):- elernent(E).\\par\r\n-\\pard\\fi1800\\sb225\\sl-201\\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal qua
 ntification.\\par\r\n-\\pard\\fi2016\\sb264\\sl-201\\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\\par\r\n-\\pard\\fi2016\\sb28\\sl-201\\slmult0 tuples (L I,L2,L3) such that L3 is not \\b Ll \\b0 -L2.\\par\r\n-\\pard\\fi3096\\sb67\\sl-201\\slmult0 .Ll=[],L2=[0],L3=[0];\\par\r\n-\\pard\\fi3096\\sb144\\sl-201\\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\\par\r\n-\\pard\\fi3600\\sb144\\sl-201\\slmult0 and so on\\par\r\n-\\pard\\fi1512\\sb345\\sl-201\\slmult0 15. This program computes the sum of a list:\\par\r\n-\\pard\\fi2016\\sb230\\sl-201\\slmult0\\f2\\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\\par\r\n-\\pard\\fi2016\\sb48\\sl-201\\slmult0\\f1\\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\\par\r\n-\\pard\\fi2016\\sb14\\sl-201
 \\slmult0 SuIn list ([ ] , O) .\\par\r\n-\\pard\\fi2016\\sb28\\sl-201\\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 list ([ ] ) .\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0 list([EIL]):- element(E), list(L).\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent(O) .\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0 elernent (s (E)) : -elernent (E) ,\\par\r\n-\\pard\\fi1800\\sb220\\sl-201\\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\\par\r\n-\\pard\\fi2016\\sb259\\sl-201\\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\\par\r\n-\\pard\\fi2016\\sb57\\sl-201\\slmult0 such that the number is not the sum afilie list values:\\par\r\n-\\pard\\fi3096\\sb38\\sl-201\\slmult0\\f2 .L = [], E = s(O);\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0\\f1 .L = [ O], E = s (O);\\par\r\n-\\f2\\fs20 
 .L = [], E = s(s(O));\\par\r\n-\\pard\\fi3096\\sb168\\sl-201\\slmult0\\f1\\fs18 .L=[O], E=s(s(O));\\par\r\n-\\pard\\fi3672\\sb139\\sl-201\\slmult0 andsoon\\par\r\n-\\pard\\sb3859\\sl-201\\slmult0\\f0\\fs22 \'-\\par\r\n-\\pard\\fi11016\\sl-76\\slmult0\\ul\\f3\\fs10 ~--~---~-\\par\r\n-\\pard\\ulnone\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi10512\\sl-158\\slmult0\\ul ,\\par\r\n-\\pard\\fi9864\\sl-801\\slmult0\\ulnone\\fs76 ,\\par\r\n-\\pard\\fi10152\\sl-820\\slmult0\\fs78 ,\\par\r\n-\\pard\\sb744\\sl-220\\slmult0\\fs18 16. The following program computes thejoint oftwo lists:\\par\r\n-\\pard\\fi504\\sb163\\sl-240\\slmult0\\f2\\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\\par\r\n-\\pard\\fi432\\sb38\\sl-240\\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\\par\r\n-\\pard\\fi504\\sl-220\\slmult0\\f1\\fs18 union([ EIL1\\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\\par\r\n-\\pard\\fi504\\sb14\\sl-220\\slmult0 member (E,[ El J )
  .\\par\r\n-\\pard\\fi504\\sl-220\\slmult0 member (E,[ _1 L] ) : -member (E, L) .\\par\r\n-element (O) .\\par\r\n-\\pard\\fi504\\sb4\\sl-220\\slmult0 element(s(E)):- element(E).\\par\r\n-\\pard\\fi504\\sl-220\\slmult0 list ([] ) .\\par\r\n-list([EIL]):- element(E), list(L).\\par\r\n-\\pard\\fi504\\sb211\\sl-220\\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\\par\r\n-\\pard\\fi504\\sb9\\sl-220\\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\\}:\\par\r\n-\\pard\\fi1584\\sb48\\sl-220\\slmult0 .Ll=[],L2=[]i\\par\r\n-\\pard\\fi1584\\sb120\\sl-220\\slmult0 .Ll = [s (O)], L2 = [s(O)].;\\par\r\n-\\pard\\fi1584\\sb144\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [] i\\par\r\n-.Ll = [ ], L2 = [ s (O)] i\\par\r\n-\\pard\\fi1584\\sb153\\sl-220\\slmult0 .Ll = [ ], L2 = [ O, O] i\\par\r\n-\\pard\\fi1584\\sb134\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\\par\r\n-\\pard\\fi1584\\sb139\\sl-220\\slmult0 .= [ s ( O) 
 , O] ;\\par\r\n-\\pard\\fi2160\\sb124\\sl-220\\slmult0 and so on\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\n\r\n'
imap: savemessage: new content is: 'From vpablos@babel.ls.fi.upm.es Wed Dec 15 17:51:29 2010\r\nX-OfflineIMAP-x507451219-5265702d476d61696c2d54726162616a6f-494e424f58: 1292583950-0440842336892-v6.0.0\r\nReturn-path: <vpablos@babel.ls.fi.upm.es>\r\nX-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on babel.ls.fi.upm.es\r\nEnvelope-to: vpablos@babel.ls.fi.upm.es\r\nDelivery-date: Wed, 15 Dec 2010 17:51:29 +0100\r\nReceived: from www-data by babel.ls.fi.upm.es with local (Exim 4.72)\r\n\t(envelope-from <vpablos@babel.ls.fi.upm.es>)\r\n\tid 1PSuZd-0001CE-6A\r\n\tfor vpablos@babel.ls.fi.upm.es; Wed, 15 Dec 2010 17:51:29 +0100\r\nMessage-Id: <E1PSuZd-0001CE-6A@babel.ls.fi.upm.es>\r\nDate: Wed, 15 Dec 2010 17:51:29 +0100\r\nTo: vpablos@babel.ls.fi.upm.es\r\nFrom: vpablos@babel.ls.fi.upm.es\r\nSubject: [neg&fl] commit r94 - in negation: . Ejemplos_Negacion cneg_ciao_Chan/Ejemplos_Negacion\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\nAutho
 r: vpablos\r\nDate: 2010-12-15 17:51:29 +0100 (Wed, 15 Dec 2010)\r\nNew Revision: 94\r\n\r\nAdded:\r\n   negation/Ejemplos_Negacion/\r\n   negation/Ejemplos_Negacion/Articuloparte1.rtf\r\n   negation/Ejemplos_Negacion/Articuloparte2.rtf\r\n   negation/Ejemplos_Negacion/Articuloparte3.rtf\r\nRemoved:\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\r\n   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\r\nLog:\r\nMoved unused examples.\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte1.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacion/Articuloparte1.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,120 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{
 \\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-220\\slmult0\\ul\\f0\\fs18 ---,- \\ulnone -\\par\r\n+\\pard\\fi504\\sb62\\sl-681\\slmult0\\fs64 /\\par\r\n+\\pard\\fi6048\\sb710\\sl-278\\slmult0\\b\\f1\\fs24 Examples\\par\r\n+\\pard\\fi-288\\li1944\\sb230\\sl-196\\slmult0\\b0\\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\\par\r\n+\\pard\\fi1944\\sb240\\sl-196\\slmult0\\f2\\fs20 p(a). % File delay.pnt in programs:zip\\par\r\n+\\pard\\fi1944\\sb43\\sl-196\\slmult0\\f1\\fs18 p(f(X)):- p(X).\\par\r\n+\\pard\\fi2016\\sb33\\sl-196\\slmult0 r (X) : -! s (X) .\\par\r\n+\\pard\\fi1944\\sb28\\sl-196\\slmult0\\f2\\fs20 s(g(X)) .\\par\r\n+\\pard\\li1944\\sb216
 \\sl-230\\slmult0\\f1\\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\\par\r\n+\\pard\\fi1584\\sb211\\sl-230\\slmult0 2. The following program is a typical example of recursion through negation:\\par\r\n+\\pard\\fi1944\\sb216\\sl-230\\slmult0\\f2\\fs20 even(O). % File even.pnt in programs.zip\\par\r\n+\\pard\\fi1944\\sl-211\\slmult0\\f1\\fs18 even(s(X) ).:- ! even(X).\\par\r\n+\\pard\\fi2808\\sb124\\sl-211\\slmult0\\fs12 .\'\\par\r\n+\\pard\\li1944\\sl-235\\slmult0\\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\\par\r\n+\\pard\\fi3168\\sb19\\sl-235\\slmult0\\f2\\fs20 .Z = s(O);\\par\r\n+\\pard\\fi3168\\sb124\\sl-235\\slmult0 .Z = s(s(s(O)));\\par\r\n+\\pard\\fi3168\\sb120\\sl-235\
 \slmult0 .Z = s(s(s(s(s(O)))));\\par\r\n+\\pard\\fi288\\sb100\\sl-235\\slmult0\\f1\\fs18 j and so on\\par\r\n+\\pard\\fi72\\li2088\\sb350\\sl-220\\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\\par\r\n+\\pard\\fi1584\\sb225\\sl-220\\slmult0 3. A similar behaviour is shown by the following definite program:\\par\r\n+\\pard\\fi1944\\sb216\\sl-220\\slmult0\\f2\\fs20 less(O,s(Y\\}). %File less.pnt in programJ.zip\\par\r\n+\\pard\\fi1944\\sb14\\sl-220\\slmult0\\f1\\fs18 less(s(X),s(Y)):- less(X,Y).\\par\r\n+\\pard\\fi1944\\sb211\\sl-220\\slmult0 The BCN-answers for the question ! less (X, Y) are:\\par\r\n+\\pard\\fi3168\\sb76\\sl-220\\slmult0 .X=O,Y=_A,_A~s(*B);\\par\r\n+\\pard\\li3168\\sl-283\\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\\par\r\n+\\p
 ard\\fi3168\\sl-216\\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\\par\r\n+\\pard\\fi3168\\sb43\\sl-216\\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\\par\r\n+\\pard\\fi3168\\sb28\\sl-216\\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\\par\r\n+\\pard\\fi3168\\sb38\\sl-216\\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\\par\r\n+\\pard\\fi3744\\sb19\\sl-216\\slmult0 and so on\\par\r\n+\\pard\\fi2088\\sb230\\sl-216\\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\\par\r\n+\\pard\\fi7560\\sb2112\\sl-216\\slmult0\\f3\\fs36 .\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-259\\slmult0\\ul\\f0\\fs22 -\\par\r\n+\\pard\\fi1440\\sb1632\\sl-220\\slmult0\\ulnone\\f1\\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\\par\r\n+\\pard\\li1800\\ri1008\\sb177\\sl-220\\slmult0\\qj\\f2 sum(O,X,X). % File evenbysum.pnt in progr
 ams.~ip\\par\r\n+\\pard\\fi-1800\\li1800\\ri5976\\sb76\\sl-206\\slmult0\\qj\\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \\f2 even_by_sum(X):- \' sum(Y,Y,X).\\par\r\n+\\pard\\fi1800\\sb206\\sl-206\\slmult0\\f1 Thequestion !sum\\{Zl,Z2,Z3) gives:\\par\r\n+\\pard\\li3024\\sl-403\\slmult0\\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \\f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\\par\r\n+\\pard\\fi3024\\sl-336\\slmult0 .Zl = s\\{s(_A)), Z3 = s(_8), _B;!: s(*C);\\par\r\n+\\pard\\fi3024\\sb28\\sl-336\\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\\{_B), _B ;!: _A;\\par\r\n+\\pard\\fi504\\sb33\\sl-336\\slmult0 -.Zl = s\\{s\\{s\\{_A))), Z3 = s\\{s\\{_B)), _B ~ s(*C);\\par\r\n+\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Zl = s\\{s\\{O)), Z2 = _A, Z3 = s\\{s\\{_B)), _8;!: _A;\\par\r\n+\\pard\\fi3096\\sb38\\sl-336\\slmult0 .Zl";\' s\\{s(s\\{s\\{_A)))), Z3 = s(s\\{s(_B))), _B;!: s(*C);\\par\r\n+\\pard\\fi3024\\sb33\\sl-336\\slmult0 ..,. and so on\\par\r\n+\\pard\\fi1800\\sb235\\sl-336\\slmult0 and the question ! even_by _sum ( 
 Z ) gives:\\par\r\n+\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\\{O\\};)\\par\r\n+\\pard\\fi-576\\li3672\\sb4\\sl-364\\slmult0 .Z = s\\{s(_A)), _A;!: O, _A;!: s\\{s\\{*B)); (equivalentto Z=s\\{s\\{s(O)));) and so on\\par\r\n+\\pard\\fi1512\\sb196\\sl-364\\slmult0 5. The following program produces very big computation trees:\\par\r\n+\\pard\\fi-72\\li1872\\sb100\\sl-283\\slmult0\\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\\{X),\\par\r\n+\\pard\\fi4104\\sl-201\\slmult0 ! evennumf(Y).\\par\r\n+\\pard\\fi1872\\sb19\\sl-201\\slmult0 evennumf(f(X,Y)):- ! evennumf\\{X),\\par\r\n+\\pard\\fi4104\\sb9\\sl-201\\slmult0 evennumf(Y) .\\par\r\n+\\pard\\fi1872\\sb235\\sl-201\\slmult0\\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\\par\r\n+\\pard\\fi3096\\sb192\\sl-201\\slmult0\\f2\\fs20 .Z = f(a,a);\\par\r\n+\\pard\\fi3096\\sb153\\sl-201\\slmult0\\f1\
 \fs18 .Z = f(f(a,a),f(a,a));\\par\r\n+.Z = f(f(a,a),f(f(a,a),f\\{a,a)));\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f\\{f\\{a,f\\{a,a)),a);\\par\r\n+\\f2 .Z = f(f\\{f\\{a,a),a),a);\\par\r\n+\\f1 .Z = f(a,f\\{f\\{a,a),a));\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Z = f(a,f(a,f(a,a));\\par\r\n+.Z = f(f(f(a,a),f\\{a,a)),f\\{a,a));\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f(f\\{f\\{a,a),f\\{a,a)),f\\{f\\{a,a),f\\{a,a)));\\par\r\n+.Z = f(f(f\\{a,a),a),f(f(a,a),a));\\par\r\n+\\pard\\sb177\\sl-201\\slmult0 I and so on\\par\r\n+\\pard\\sb484\\sl-201\\slmult0\\f0\\fs34\\\'a1\\par\r\n+\\pard\\sb216\\sl-201\\slmult0\\fs22 j ~\\par\r\n+\\pard\\sb297\\sl-201\\slmult0\\fs14 I\\par\r\n+\\pard\\sb48\\sl-201\\slmult0\\f3\\fs20 I\\par\r\n+\\pard\\sl-115\\slmult0\\f1\\fs8\\\'a1\\par\r\n+\\pard\\sb9\\sl-86\\slmult0\\f0\\fs10 I\\par\r\n+\\pard\\sb297\\sl-86\\slmult0\\f3\\fs14 1-\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi1512\\
 sl-220\\slmult0\\fs18 6. The following program was introduced in\\par\r\n+\\pard\\fi2736\\sl-220\\slmult0 W. Drabent., \\i What is,failure?An approach to constructive negation,\\par\r\n+\\i0 Acta lnformatica, 32:27-59,1995.\\par\r\n+\\pard\\fi1872\\sb206\\sl-220\\slmult0\\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0\\f0 p (X) : -p (X) .\\par\r\n+\\f2 p(a) ,\\par\r\n+\\f0 q (a) : -q(a).\\par\r\n+\\f1 q(X):- !s\\{X).\\par\r\n+\\pard\\fi1872\\sb9\\sl-240\\slmult0\\f2\\fs20 s (a),\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0\\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\\par\r\n+\\pard\\fi2952\\sl-220\\slmult0 % the BCN prototype infers the signature from the program and the goal,\\par\r\n+\\pard\\fi1872\\sb230\\sl-220\\slmult0\\f1 It can be checked that:\\par\r\n+\\pard\\fi3096\\sb19\\sl-220\\slmult0 .! r. One answer : True;\\par\r\n+\\pard\\fi3096\\sb134\\sl-220\\slmult0 .r. fails\\par\r\n
 +\\pard\\fi1512\\sb340\\sl-220\\slmult0 7. The following program was introduced in\\par\r\n+\\pard\\fi2736\\sl-220\\slmult0 R.Bart\\\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\\par\r\n+Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\\par\r\n+\\pard\\fi2808\\sb28\\sl-220\\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\\par\r\n+\\pard\\fi1872\\sl-220\\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\\par\r\n+\\pard\\li1872\\sb168\\sl-244\\slmult0\\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\\par\r\n+\\pard\\fi1872\\sl-230\\slmult0\\fs16 t (c) ,\\par\r\n+\\pard\\fi1872\\sb216\\sl-230\\slmult0\\f1\\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\\par\r\n+\\pard\\fi3096\\sb148\\sl-230\\slmult0 .X = a, Y = _A, _A * f(*B);\\par\r\n+\\pard\\fi3096\\sb144\\sl-230\\slmult0\\f2 .X = f(_
 A), y = _B, _B * b;\\par\r\n+.X = _A, _A * f\'(*B), _A * a;\\par\r\n+\\pard\\fi3096\\sb129\\sl-230\\slmult0 .X = a, Y = f(_A), _A * c;\\par\r\n+\\pard\\fi3096\\sb139\\sl-230\\slmult0 .X = f(_A), Y = b, _A * c;\\par\r\n+\\pard\\fi1872\\sb105\\sl-230\\slmult0\\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\\\'e1k\'s prototype.\\par\r\n+\\pard\\li1872\\sl-225\\slmult0 Our answers are more general than Bart\\\'e1k\'s ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\\par\r\n+\\pard\\fi288\\sb446\\sl-225\\slmult0 , 8. The following program was introduced in\\par\r\n+\\pard\\li2736\\sl-225\\slmult0 A. Bossi, M. Fabris and M.C. Meo, \\i A bottom-up semanticsforconstructive negation, \\i0 In P."V. Hentenryck, editor, \\i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \\i0 \'94), pages 520-534, MIT Press, 1994.\\par\r\n+\\pard\\li201
 6\\sb158\\sl-249\\slmult0\\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \\f1 p(X,g(W)):- !r(W).\\par\r\n+\\pard\\fi2016\\sl-225\\slmult0\\fs14 cq.(a) ,\\par\r\n+\\pard\\li2016\\ri6840\\sb38\\sl-216\\slmult0\\qj\\fs18 r(b):- r(b). r(c):- r(c). \\f2 r(c) .\\par\r\n+\\pard\\fi2088\\sb201\\sl-216\\slmult0\\f1 It can be checked that the BCN prototype behaves as foIlows:\\par\r\n+\\pard\\fi3096\\sb28\\sl-216\\slmult0 .!p(f(a),Y). fails\\par\r\n+\\pard\\sl-216\\slmult0\\f0\\fs14 I\\par\r\n+\\pard\\sb24\\sl-110\\slmult0\\f1\\fs18 , .!p(a,c). Oneanswer:True\\par\r\n+\\pard\\fi3096\\sb273\\sl-110\\slmult0 .! r (c). fails \'\\par\r\n+\\pard\\sb1886\\sl-110\\slmult0\\ul\\f0\\fs26 -\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte2.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf)\r\n===================================================================\r\n--- negation/Ejemplos_Negacio
 n/Articuloparte2.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,121 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n+\\pard\\fi3024\\sb1660\\sl-220\\slmult0\\ulnone\\f1\\fs18 .! r (b). loops infinitely\\par\r\n+\\pard\\fi3024\\sb139\\sl-220\\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\\par\r\n+\\pard\\fi3024\\sb144\\sl-240\\slmult0\\f2\\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\\par\r\n+\\pard\\fi3744\\sb172\\sl-220\\slmult0\\f1\\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\\par\r\n+\\pard\\fi3744\\sb105\\sl-
 220\\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\\par\r\n+\\pard\\fi3744\\sb192\\sl-220\\slmult0 .X=_A, Y=g(c), _A~f(*B);\\par\r\n+\\pard\\fi3744\\sb86\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = g(c), _A ~ a;\\par\r\n+\\pard\\fi3096\\sb158\\sl-220\\slmult0\\f1\\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\\par\r\n+\\pard\\fi3096\\sb139\\sl-220\\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\\par\r\n+.p(X, g(Y)), q(Y). Twoanswers:\\par\r\n+\\pard\\fi3744\\sb120\\sl-240\\slmult0\\f2\\fs20 .X = f(a), Y = a;\\par\r\n+\\pard\\fi3744\\sb91\\sl-240\\slmult0 .y = a;\\par\r\n+\\pard\\sb153\\sl-220\\slmult0\\qc\\f1\\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\\par\r\n+\\pard\\sb177\\sl-220\\slmult0\\qc .X=_A,Y=c,_A~f(*B);\\par\r\n+\\pard\\fi3744\\sb100\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = c, _A ~ a;\\par\r\n+\\pard\\fi1512\\sb321\\sl-220\\slmult0\\f1\\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe sign
 ature\\par\r\n+\\pard\\fi1872\\sb14\\sl-220\\slmult0\\{ \\i ala, f/2, \\i0 gil) is:\\par\r\n+\\pard\\fi-72\\li1872\\sb172\\sl-249\\slmult0\\f2\\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\\par\r\n+\\pard\\fi1872\\sl-225\\slmult0\\f1\\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\\par\r\n+\\pard\\fi1800\\sb19\\sl-225\\slmult0\\f2\\fs20 mirror(a,a) .\\par\r\n+\\pard\\fi1800\\sl-196\\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\\par\r\n+\\pard\\fi1872\\sb28\\sl-196\\slmult0\\f1\\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\\par\r\n+\\pard\\fi1800\\sb230\\sl-196\\slmult0 The BCN-answers for the question I symmetric (Z) are:\\par\r\n+\\pard\\fi3096\\sb182\\sl-196\\slmult0 .Z = f (a, A), A ~ a;\\par\r\n+\\pard\\fi4320\\sl-153\\slmult0\\f0\\fs12 --\\\'a1\\par\r\n+\\pard\\li3096\\sl-360\\slmult0\\f1\\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \\\'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\\par\r\n+\\pard\\fi3096\\sb4\\sl-3
 60\\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\\par\r\n+\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\\par\r\n+\\pard\\fi3096\\sb14\\sl-360\\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\\par\r\n+\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\\par\r\n+.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\\par\r\n+\\pard\\fi3600\\sl-360\\slmult0 and so on\\par\r\n+\\pard\\fi2016\\sl-326\\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\\par\r\n+\\pard\\fi2016\\sl-240\\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\\par\r\n+\\pard\\fi2016\\sb43\\sl-240\\slmult0\\fs20 answers).\\par\r\n+\\pard\\sb2198\\sl-240\\slmult0\\f3\\fs8 -~\\par\r\n+\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi72\\sl-220\\slmult0\\fs18 100 The following example is a variant of a program introduced in\\par\r\n+\\pard\\fi1296\\sb28\\s
 l-220\\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\\par\r\n+\\pard\\fi1224\\sb9\\sl-220\\slmult0 Bowen, editors, \\i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\\par\r\n+\\pard\\fi1224\\sl-220\\slmult0 Programming, \\i0 pages 111-125, Seatle, 1988. The MIT presso\\par\r\n+\\pard\\li360\\sb230\\sl-206\\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\\par\r\n+\\pard\\fi288\\sb38\\sl-206\\slmult0 member(X,[XI~).\\par\r\n+\\pard\\fi360\\sl-201\\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\\par\r\n+list_of_digi ts ([ ] ) .\\par\r\n+\\pard\\fi360\\sb28\\sl-201\\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\\par\r\n+\\pard\\fi360\\sl-192\\slmult0 digit(l).\\par\r\n+\\pard\\fi360\\sb28\\sl-192\\slmult0 digit(2)..\\par\r\n+\\pard\\fi288\\sb38\\sl-192\\slmult0\\f2\\fs20 digit(3) .\\par\r\n+\\pard\\fi288\\sb33\\
 sl-192\\slmult0\\fs22 digit(4) .\\par\r\n+\\pard\\fi288\\sb14\\sl-192\\slmult0\\fs20 digit(5) .\\par\r\n+\\pard\\fi288\\sb326\\sl-192\\slmult0\\f1\\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \\i for \\i0 all the\\par\r\n+\\pard\\fi360\\sl-192\\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\\par\r\n+\\pard\\li1512\\ri6048\\sl-360\\slmult0\\qj\\f2\\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\\par\r\n+\\pard\\fi1584\\sl-345\\slmult0\\f1\\fs18 .o o. and so on\\par\r\n+\\pard\\sl-336\\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\\par\r\n+\\pard\\li288\\sb264\\sl-192\\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\\par\r\n+\\pard\\fi288\\sb57\\sl-192\\slmult0\\f2\\fs22 element(O).\\par\r\n+\\pard\\fi288\\sb9\\sl-192\\sl
 mult0\\f1\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi288\\sb24\\sl-192\\slmult0 member (X,[ X.I_] ) .\\par\r\n+\\pard\\fi288\\sb33\\sl-192\\slmult0 member (X,[ -\' L] ) : -member (X, L) .\\par\r\n+\\pard\\fi288\\sb28\\sl-192\\slmult0 disjoint ([] ,-),\\par\r\n+\\pard\\fi288\\sb4\\sl-192\\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\\par\r\n+\\pard\\fi216\\sb302\\sl-192\\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\\par\r\n+\\pard\\fi1512\\sb38\\sl-192\\slmult0 .Ll = [ O), L2 = [ \\i O] \\i0 ;\\par\r\n+\\pard\\fi1512\\sb177\\sl-192\\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\\par\r\n+\\pard\\fi1512\\sb168\\sl-192\\slmult0 .Ll = [ O, O], L2 = [ O] ;\\par\r\n+.Ll = [ O, O], L2 = [ O, O) ;\\par\r\n+\\pard\\fi1512\\sb144\\sl-192\\slmult0 .o.. and so on\\par\r\n+\\pard\\fi10512\\sb3984\\sl-192\\slmult0\\f3\\fs12 ,\\\\\\par\r\n+\\pard\\f0\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\sl-201\\
 slmult0\\ul\\f0\\fs16 -\\par\r\n+\\pard\\fi216\\sb1036\\sl-201\\slmult0\\ulnone\\f3 j\\par\r\n+\\pard\\fi1584\\sb384\\sl-220\\slmult0\\f1\\fs18 12. The following is the classical insertion sort program:\\par\r\n+\\pard\\fi-72\\li1944\\sb168\\sl-244\\slmult0\\f2\\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\\par\r\n+\\pard\\fi1944\\sl-244\\slmult0\\f1\\fs18 insert_sort (E,[ ] ,[ E] ) .\\par\r\n+\\pard\\fi1944\\sl-168\\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\\par\r\n+\\pard\\fi-72\\li1944\\sb19\\sl-196\\slmult0\\f2\\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \\f1 list_sort(L,NL):- sort(L,[],NL). -\\par\r\n+\\pard\\fi1944\\sb100\\sl-196\\slmult0\\fs18 sort (( ] , L, L) .\\par\r\n+\\pard\\fi1944\\sb19\\sl-196\\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\\par\r\n+\\pard\\fi1944\\sb24\\sl-196\\slmult0 list (( ] ) .\\par\r\n+list(( EIL] ):-el
 ement(E), list(L).\\par\r\n+\\pard\\fi1944\\sb33\\sl-196\\slmult0\\fs22 element (O) .\\par\r\n+\\pard\\fi1944\\sl-196\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi1944\\sb206\\sl-196\\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn\'t arrear in the head, hence it produces. universal\\par\r\n+\\pard\\fi1944\\sb72\\sl-196\\slmult0 quantification\\par\r\n+\\pard\\fi1944\\sb244\\sl-196\\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\\par\r\n+\\pard\\fi1944\\sb38\\sl-196\\slmult0 the second list is not the ordering ofthe first one:\\par\r\n+\\pard\\fi3168\\sb72\\sl-196\\slmult0 .11=[],12=[0];\\par\r\n+\\pard\\fi3168\\sb153\\sl-196\\slmult0 .L1 = ( s (O)], L2 = [ ] ;\\par\r\n+\\pard\\fi3168\\sb158\\sl-196\\slmult0 .11 = [ s (O)\\}, L2 = [ O\\} ;\\par\r\n+\\pard\\fi3168\\sb168\\sl-196\\slmult0 .11 = [ ], L2 = ( S (O)\\} ;\\par\r\n+\\pard\\fi3744\\sb148\\sl-196\\slmult0 and so on\\par\r\n+\\par
 d\\fi1584\\sb360\\sl-196\\slmult0 13. This program returns the maximum ora list ofnumbers:\\par\r\n+\\pard\\fi1944\\sb211\\sl-196\\slmult0\\f2\\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\\par\r\n+\\pard\\fi1944\\sb62\\sl-196\\slmult0 greater(E,O,E) .\\par\r\n+\\pard\\fi1944\\sb4\\sl-196\\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\\par\r\n+\\pard\\fi1944\\sb57\\sl-196\\slmult0\\f1\\fs18 max_list([] ,0).\\par\r\n+\\pard\\fi1944\\sl-168\\slmult0 max_list ([ EI;L\\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\\par\r\n+\\pard\\fi1944\\sb81\\sl-168\\slmult0 list (( \\} ) .\\par\r\n+\\pard\\fi1944\\sb52\\sl-168\\slmult0 list([EIL]):-element(E), list(L).\\par\r\n+\\pard\\fi1944\\sb67\\sl-168\\slmult0\\fs22 element(O) .\\par\r\n+\\pard\\fi1944\\sb28\\sl-168\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n+\\pard\\fi1944\\sb268\\sl-168\\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal
 \\par\r\n+\\pard\\fi1944\\sb4\\sl-168\\slmult0 quantification. -\\par\r\n+\\pard\\fi1944\\sb302\\sl-168\\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\\par\r\n+\\pard\\fi1944\\sb110\\sl-168\\slmult0 such that the number is not the maximum ofthe list:\\par\r\n+\\pard\\fi3168\\sb81\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(O);\\par\r\n+\\pard\\fi3168\\sb192\\sl-168\\slmult0\\f1\\fs18 .1 = [ O], E = s (O);\\par\r\n+\\pard\\fi3168\\sb206\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(s(O\\\'bb);\\par\r\n+\\pard\\fi3168\\sb182\\sl-168\\slmult0\\f1\\fs18 .L = ( O], E = s (s (O));\\par\r\n+\\pard\\fi3744\\sb182\\sl-168\\slmult0 and so on\\par\r\n+\\pard\\fi11160\\sb3067\\sl-168\\slmult0\\ul\\f3 ,-~ "..\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nCopied: negation/Ejemplos_Negacion/Articuloparte3.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf)\r\n========================================
 ===========================\r\n--- negation/Ejemplos_Negacion/Articuloparte3.rtf\t                        (rev 0)\r\n+++ negation/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -0,0 +1,69 @@\r\n+{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n+\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi1512\\sl-220\\slmult0\\fs18 14. The following program computes the list difference operation:\\par\r\n+\\pard\\fi2016\\sb196\\sl-240\\slmult0\\f2\\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\\par\r\n+\\pard\\fi2016\\sb24\\sl-220\\slmult0\\f1\\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\\par\r\n+\\pard\\fi5472\\sl-240\\slmult0\\f2\\fs20 rernove_list (LAux, L2,NL) .\\par\r\n+\\p
 ard\\fi2016\\sl-220\\slmult0\\f1\\fs18 rernove_elernent ([] ,-,[] ) .\\par\r\n+\\pard\\li2016\\sl-216\\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\\par\r\n+\\pard\\fi6120\\sb43\\sl-216\\slmult0\\f2\\fs20 rernove_elernent(L,E2,NL) .\\par\r\n+\\pard\\fi2016\\sl-201\\slmult0 equal(E,E).\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0\\f1\\fs18 list ([] ) .\\par\r\n+\\pard\\fi2016\\sb24\\sl-201\\slmult0 list([ EIL]):- elernent(E), list(L).\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent (O) .\\par\r\n+\\pard\\fi2016\\sb24\\sl-201\\slmult0 elernent(s(E)):- elernent(E).\\par\r\n+\\pard\\fi1800\\sb225\\sl-201\\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal quantification.\\par\r\n+\\pard\\fi2016\\sb264\\sl-201\\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\\par\r\n+\\pard\\fi2016
 \\sb28\\sl-201\\slmult0 tuples (L I,L2,L3) such that L3 is not \\b Ll \\b0 -L2.\\par\r\n+\\pard\\fi3096\\sb67\\sl-201\\slmult0 .Ll=[],L2=[0],L3=[0];\\par\r\n+\\pard\\fi3096\\sb144\\sl-201\\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\\par\r\n+\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\\par\r\n+\\pard\\fi3600\\sb144\\sl-201\\slmult0 and so on\\par\r\n+\\pard\\fi1512\\sb345\\sl-201\\slmult0 15. This program computes the sum of a list:\\par\r\n+\\pard\\fi2016\\sb230\\sl-201\\slmult0\\f2\\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\\par\r\n+\\pard\\fi2016\\sb48\\sl-201\\slmult0\\f1\\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\\par\r\n+\\pard\\fi2016\\sb14\\sl-201\\slmult0 SuIn list ([ ] , O) .\\par\r\n+\\pard\\fi2016\\sb28\\sl-201\\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\\par\r\n+\\p
 ard\\fi2016\\sb9\\sl-201\\slmult0 list ([ ] ) .\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0 list([EIL]):- element(E), list(L).\\par\r\n+\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent(O) .\\par\r\n+\\pard\\fi2016\\sb19\\sl-201\\slmult0 elernent (s (E)) : -elernent (E) ,\\par\r\n+\\pard\\fi1800\\sb220\\sl-201\\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\\par\r\n+\\pard\\fi2016\\sb259\\sl-201\\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\\par\r\n+\\pard\\fi2016\\sb57\\sl-201\\slmult0 such that the number is not the sum afilie list values:\\par\r\n+\\pard\\fi3096\\sb38\\sl-201\\slmult0\\f2 .L = [], E = s(O);\\par\r\n+\\pard\\fi3096\\sb163\\sl-201\\slmult0\\f1 .L = [ O], E = s (O);\\par\r\n+\\f2\\fs20 .L = [], E = s(s(O));\\par\r\n+\\pard\\fi3096\\sb168\\sl-201\\slmult0\\f1\\fs18 .L=[O], E=s(s(O));\\par\r\n+\\pard\\fi3672\\sb139\\sl-201\\slmult0 andsoon\\par\r\
 n+\\pard\\sb3859\\sl-201\\slmult0\\f0\\fs22 \'-\\par\r\n+\\pard\\fi11016\\sl-76\\slmult0\\ul\\f3\\fs10 ~--~---~-\\par\r\n+\\pard\\ulnone\\f0\\fs12\\par\r\n+\\pard\\sl-120\\slmult0\\f1\\par\r\n+\\pard\\fi10512\\sl-158\\slmult0\\ul ,\\par\r\n+\\pard\\fi9864\\sl-801\\slmult0\\ulnone\\fs76 ,\\par\r\n+\\pard\\fi10152\\sl-820\\slmult0\\fs78 ,\\par\r\n+\\pard\\sb744\\sl-220\\slmult0\\fs18 16. The following program computes thejoint oftwo lists:\\par\r\n+\\pard\\fi504\\sb163\\sl-240\\slmult0\\f2\\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\\par\r\n+\\pard\\fi432\\sb38\\sl-240\\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\\par\r\n+\\pard\\fi504\\sl-220\\slmult0\\f1\\fs18 union([ EIL1\\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\\par\r\n+\\pard\\fi504\\sb14\\sl-220\\slmult0 member (E,[ El J ) .\\par\r\n+\\pard\\fi504\\sl-220\\slmult0 member (E,[ _1 L] ) : -member (E, L) .\\par\r\n+element (O) .\\par\r\n+\\pard\\fi504\\sb4\\sl-220\\slmult0 element(s(E)
 ):- element(E).\\par\r\n+\\pard\\fi504\\sl-220\\slmult0 list ([] ) .\\par\r\n+list([EIL]):- element(E), list(L).\\par\r\n+\\pard\\fi504\\sb211\\sl-220\\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\\par\r\n+\\pard\\fi504\\sb9\\sl-220\\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\\}:\\par\r\n+\\pard\\fi1584\\sb48\\sl-220\\slmult0 .Ll=[],L2=[]i\\par\r\n+\\pard\\fi1584\\sb120\\sl-220\\slmult0 .Ll = [s (O)], L2 = [s(O)].;\\par\r\n+\\pard\\fi1584\\sb144\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [] i\\par\r\n+.Ll = [ ], L2 = [ s (O)] i\\par\r\n+\\pard\\fi1584\\sb153\\sl-220\\slmult0 .Ll = [ ], L2 = [ O, O] i\\par\r\n+\\pard\\fi1584\\sb134\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\\par\r\n+\\pard\\fi1584\\sb139\\sl-220\\slmult0 .= [ s ( O) , O] ;\\par\r\n+\\pard\\fi2160\\sb124\\sl-220\\slmult0 and so on\\par\r\n+}\r\n+\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemp
 los_Negacion/Articuloparte1.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,120 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-220\\slmult0\\ul\\f0\\fs18 ---,- \\ulnone -\\par\r\n-\\pard\\fi504\\sb62\\sl-681\\slmult0\\fs64 /\\par\r\n-\\pard\\fi6048\\sb710\\sl-278\\slmult0\\b\\f1\\fs24 Examples\\par\r\n-\\pard\\fi-288\\li1944\\sb230\\sl-196\\slmult0\\b0\\fs18 l. The following program shows that constructive negation can finitely fails whereas the "d
 elay technique" produces infinite computation\\par\r\n-\\pard\\fi1944\\sb240\\sl-196\\slmult0\\f2\\fs20 p(a). % File delay.pnt in programs:zip\\par\r\n-\\pard\\fi1944\\sb43\\sl-196\\slmult0\\f1\\fs18 p(f(X)):- p(X).\\par\r\n-\\pard\\fi2016\\sb33\\sl-196\\slmult0 r (X) : -! s (X) .\\par\r\n-\\pard\\fi1944\\sb28\\sl-196\\slmult0\\f2\\fs20 s(g(X)) .\\par\r\n-\\pard\\li1944\\sb216\\sl-230\\slmult0\\f1\\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\\par\r\n-\\pard\\fi1584\\sb211\\sl-230\\slmult0 2. The following program is a typical example of recursion through negation:\\par\r\n-\\pard\\fi1944\\sb216\\sl-230\\slmult0\\f2\\fs20 even(O). % File even.pnt in programs.zip\\par\r\n-\\pard\\fi1944\\sl-211\\slmult0\\f1\\fs18 even(s(X) ).:- ! even(X).\\par\r\n-\\pa
 rd\\fi2808\\sb124\\sl-211\\slmult0\\fs12 .\'\\par\r\n-\\pard\\li1944\\sl-235\\slmult0\\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\\par\r\n-\\pard\\fi3168\\sb19\\sl-235\\slmult0\\f2\\fs20 .Z = s(O);\\par\r\n-\\pard\\fi3168\\sb124\\sl-235\\slmult0 .Z = s(s(s(O)));\\par\r\n-\\pard\\fi3168\\sb120\\sl-235\\slmult0 .Z = s(s(s(s(s(O)))));\\par\r\n-\\pard\\fi288\\sb100\\sl-235\\slmult0\\f1\\fs18 j and so on\\par\r\n-\\pard\\fi72\\li2088\\sb350\\sl-220\\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\\par\r\n-\\pard\\fi1584\\sb225\\sl-220\\slmult0 3. A similar behaviour is shown by the following definite program:\\par\r\n-\\pard\\fi1944\\sb216\\sl-220\\slmult0\\f2\\fs20 less(O,s(Y\\}). %File less.pnt in progra
 mJ.zip\\par\r\n-\\pard\\fi1944\\sb14\\sl-220\\slmult0\\f1\\fs18 less(s(X),s(Y)):- less(X,Y).\\par\r\n-\\pard\\fi1944\\sb211\\sl-220\\slmult0 The BCN-answers for the question ! less (X, Y) are:\\par\r\n-\\pard\\fi3168\\sb76\\sl-220\\slmult0 .X=O,Y=_A,_A~s(*B);\\par\r\n-\\pard\\li3168\\sl-283\\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\\par\r\n-\\pard\\fi3168\\sl-216\\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\\par\r\n-\\pard\\fi3168\\sb43\\sl-216\\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\\par\r\n-\\pard\\fi3168\\sb28\\sl-216\\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\\par\r\n-\\pard\\fi3168\\sb38\\sl-216\\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\\par\r\n-\\pard\\fi3744\\sb19\\sl-216\\slmult0 and so on\\par\r\n-\\pard\\fi2088\\sb230\\sl-216\\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\\par\r\n-\\pard\\fi7560\\sb2112\\sl-216\\slmult0\\f3\\fs36 
 .\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-259\\slmult0\\ul\\f0\\fs22 -\\par\r\n-\\pard\\fi1440\\sb1632\\sl-220\\slmult0\\ulnone\\f1\\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\\par\r\n-\\pard\\li1800\\ri1008\\sb177\\sl-220\\slmult0\\qj\\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\\par\r\n-\\pard\\fi-1800\\li1800\\ri5976\\sb76\\sl-206\\slmult0\\qj\\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \\f2 even_by_sum(X):- \' sum(Y,Y,X).\\par\r\n-\\pard\\fi1800\\sb206\\sl-206\\slmult0\\f1 Thequestion !sum\\{Zl,Z2,Z3) gives:\\par\r\n-\\pard\\li3024\\sl-403\\slmult0\\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \\f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\\par\r\n-\\pard\\fi3024\\sl-336\\slmult0 .Zl = s\\{s(_A)), Z3 = s(_8), _B;!: s(*C);\\par\r\n-\\pard\\fi3024\\sb28\\sl-336\\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\\{_B), _B ;!: _A;\\par\r\n-\\pard\\fi504\\sb33\\sl-336\\slmult0 -.Zl = s\\{s\\{s\\{_A))), Z3 = s\\{s
 \\{_B)), _B ~ s(*C);\\par\r\n-\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Zl = s\\{s\\{O)), Z2 = _A, Z3 = s\\{s\\{_B)), _8;!: _A;\\par\r\n-\\pard\\fi3096\\sb38\\sl-336\\slmult0 .Zl";\' s\\{s(s\\{s\\{_A)))), Z3 = s(s\\{s(_B))), _B;!: s(*C);\\par\r\n-\\pard\\fi3024\\sb33\\sl-336\\slmult0 ..,. and so on\\par\r\n-\\pard\\fi1800\\sb235\\sl-336\\slmult0 and the question ! even_by _sum ( Z ) gives:\\par\r\n-\\pard\\fi3096\\sb33\\sl-336\\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\\{O\\};)\\par\r\n-\\pard\\fi-576\\li3672\\sb4\\sl-364\\slmult0 .Z = s\\{s(_A)), _A;!: O, _A;!: s\\{s\\{*B)); (equivalentto Z=s\\{s\\{s(O)));) and so on\\par\r\n-\\pard\\fi1512\\sb196\\sl-364\\slmult0 5. The following program produces very big computation trees:\\par\r\n-\\pard\\fi-72\\li1872\\sb100\\sl-283\\slmult0\\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\\{X),\\par\r\n-\\pard\\fi4104\\sl-201\\slmult0 ! evennumf(Y).\\par\r\n-\\pard\\fi1872\\sb19\\sl-201\\sl
 mult0 evennumf(f(X,Y)):- ! evennumf\\{X),\\par\r\n-\\pard\\fi4104\\sb9\\sl-201\\slmult0 evennumf(Y) .\\par\r\n-\\pard\\fi1872\\sb235\\sl-201\\slmult0\\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\\par\r\n-\\pard\\fi3096\\sb192\\sl-201\\slmult0\\f2\\fs20 .Z = f(a,a);\\par\r\n-\\pard\\fi3096\\sb153\\sl-201\\slmult0\\f1\\fs18 .Z = f(f(a,a),f(a,a));\\par\r\n-.Z = f(f(a,a),f(f(a,a),f\\{a,a)));\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f\\{f\\{a,f\\{a,a)),a);\\par\r\n-\\f2 .Z = f(f\\{f\\{a,a),a),a);\\par\r\n-\\f1 .Z = f(a,f\\{f\\{a,a),a));\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Z = f(a,f(a,f(a,a));\\par\r\n-.Z = f(f(f(a,a),f\\{a,a)),f\\{a,a));\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Z = f(f\\{f\\{a,a),f\\{a,a)),f\\{f\\{a,a),f\\{a,a)));\\par\r\n-.Z = f(f(f\\{a,a),a),f(f(a,a),a));\\par\r\n-\\pard\\sb177\\sl-201\\slmult0 I and so on\\par\r\n-\\pard\\sb484\\sl-201\\slmult0\\f0\\fs34\\\'a1\\par\r\
 n-\\pard\\sb216\\sl-201\\slmult0\\fs22 j ~\\par\r\n-\\pard\\sb297\\sl-201\\slmult0\\fs14 I\\par\r\n-\\pard\\sb48\\sl-201\\slmult0\\f3\\fs20 I\\par\r\n-\\pard\\sl-115\\slmult0\\f1\\fs8\\\'a1\\par\r\n-\\pard\\sb9\\sl-86\\slmult0\\f0\\fs10 I\\par\r\n-\\pard\\sb297\\sl-86\\slmult0\\f3\\fs14 1-\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi1512\\sl-220\\slmult0\\fs18 6. The following program was introduced in\\par\r\n-\\pard\\fi2736\\sl-220\\slmult0 W. Drabent., \\i What is,failure?An approach to constructive negation,\\par\r\n-\\i0 Acta lnformatica, 32:27-59,1995.\\par\r\n-\\pard\\fi1872\\sb206\\sl-220\\slmult0\\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0\\f0 p (X) : -p (X) .\\par\r\n-\\f2 p(a) ,\\par\r\n-\\f0 q (a) : -q(a).\\par\r\n-\\f1 q(X):- !s\\{X).\\par\r\n-\\pard\\fi1872\\sb9\\sl-240\\slmult0\\f2\\fs20 s (a),\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0\\fs18 w(f(X)) " % We have added th
 is clause to extend the signature with f/l, because\\par\r\n-\\pard\\fi2952\\sl-220\\slmult0 % the BCN prototype infers the signature from the program and the goal,\\par\r\n-\\pard\\fi1872\\sb230\\sl-220\\slmult0\\f1 It can be checked that:\\par\r\n-\\pard\\fi3096\\sb19\\sl-220\\slmult0 .! r. One answer : True;\\par\r\n-\\pard\\fi3096\\sb134\\sl-220\\slmult0 .r. fails\\par\r\n-\\pard\\fi1512\\sb340\\sl-220\\slmult0 7. The following program was introduced in\\par\r\n-\\pard\\fi2736\\sl-220\\slmult0 R.Bart\\\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\\par\r\n-Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\\par\r\n-\\pard\\fi2808\\sb28\\sl-220\\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\\par\r\n-\\pard\\fi1872\\sl-220\\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\\par\r\n-\\pard\\li1872\\sb168\\sl-244\\slmult0\\f2 p(a,f(Z)):- t(Z). % File
  Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\\par\r\n-\\pard\\fi1872\\sl-230\\slmult0\\fs16 t (c) ,\\par\r\n-\\pard\\fi1872\\sb216\\sl-230\\slmult0\\f1\\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\\par\r\n-\\pard\\fi3096\\sb148\\sl-230\\slmult0 .X = a, Y = _A, _A * f(*B);\\par\r\n-\\pard\\fi3096\\sb144\\sl-230\\slmult0\\f2 .X = f(_A), y = _B, _B * b;\\par\r\n-.X = _A, _A * f\'(*B), _A * a;\\par\r\n-\\pard\\fi3096\\sb129\\sl-230\\slmult0 .X = a, Y = f(_A), _A * c;\\par\r\n-\\pard\\fi3096\\sb139\\sl-230\\slmult0 .X = f(_A), Y = b, _A * c;\\par\r\n-\\pard\\fi1872\\sb105\\sl-230\\slmult0\\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\\\'e1k\'s prototype.\\par\r\n-\\pard\\li1872\\sl-225\\slmult0 Our answers are more general than Bart\\\'e1k\'s ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\\par\r\n-\\pard\\f
 i288\\sb446\\sl-225\\slmult0 , 8. The following program was introduced in\\par\r\n-\\pard\\li2736\\sl-225\\slmult0 A. Bossi, M. Fabris and M.C. Meo, \\i A bottom-up semanticsforconstructive negation, \\i0 In P."V. Hentenryck, editor, \\i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \\i0 \'94), pages 520-534, MIT Press, 1994.\\par\r\n-\\pard\\li2016\\sb158\\sl-249\\slmult0\\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \\f1 p(X,g(W)):- !r(W).\\par\r\n-\\pard\\fi2016\\sl-225\\slmult0\\fs14 cq.(a) ,\\par\r\n-\\pard\\li2016\\ri6840\\sb38\\sl-216\\slmult0\\qj\\fs18 r(b):- r(b). r(c):- r(c). \\f2 r(c) .\\par\r\n-\\pard\\fi2088\\sb201\\sl-216\\slmult0\\f1 It can be checked that the BCN prototype behaves as foIlows:\\par\r\n-\\pard\\fi3096\\sb28\\sl-216\\slmult0 .!p(f(a),Y). fails\\par\r\n-\\pard\\sl-216\\slmult0\\f0\\fs14 I\\par\r\n-\\pard\\sb24\\sl-110\\slmult0\\f1\\fs18 , .!p(a,c). Oneanswer:True\\par\r\n-\\pard\\fi3096\\sb273\\sl-11
 0\\slmult0 .! r (c). fails \'\\par\r\n-\\pard\\sb1886\\sl-110\\slmult0\\ul\\f0\\fs26 -\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,121 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n-\\pard\\fi3024\\sb1660\\sl-220\\slmult0\\ulnone\\f1\\fs18 .! r (b). loops infinitely\\par\r\n-\\pard\\f
 i3024\\sb139\\sl-220\\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\\par\r\n-\\pard\\fi3024\\sb144\\sl-240\\slmult0\\f2\\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\\par\r\n-\\pard\\fi3744\\sb172\\sl-220\\slmult0\\f1\\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\\par\r\n-\\pard\\fi3744\\sb105\\sl-220\\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\\par\r\n-\\pard\\fi3744\\sb192\\sl-220\\slmult0 .X=_A, Y=g(c), _A~f(*B);\\par\r\n-\\pard\\fi3744\\sb86\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = g(c), _A ~ a;\\par\r\n-\\pard\\fi3096\\sb158\\sl-220\\slmult0\\f1\\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\\par\r\n-\\pard\\fi3096\\sb139\\sl-220\\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\\par\r\n-.p(X, g(Y)), q(Y). Twoanswers:\\par\r\n-\\pard\\fi3744\\sb120\\sl-240\\slmult0\\f2\\fs20 .X = f(a), Y = a;\\par\r\n-\\pard\\fi3744\\sb91\\sl-240\\slmult0 .y = a;\\par\r\n-\\pard\\sb153\\sl-220\\slmult0\\qc\\f1\\fs18 .! P (X, Y) , r
  (Y) .Two answers (infinitely repeated):_.\\par\r\n-\\pard\\sb177\\sl-220\\slmult0\\qc .X=_A,Y=c,_A~f(*B);\\par\r\n-\\pard\\fi3744\\sb100\\sl-240\\slmult0\\f2\\fs20 .X = f(_A), y = c, _A ~ a;\\par\r\n-\\pard\\fi1512\\sb321\\sl-220\\slmult0\\f1\\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\\par\r\n-\\pard\\fi1872\\sb14\\sl-220\\slmult0\\{ \\i ala, f/2, \\i0 gil) is:\\par\r\n-\\pard\\fi-72\\li1872\\sb172\\sl-249\\slmult0\\f2\\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\\par\r\n-\\pard\\fi1872\\sl-225\\slmult0\\f1\\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\\par\r\n-\\pard\\fi1800\\sb19\\sl-225\\slmult0\\f2\\fs20 mirror(a,a) .\\par\r\n-\\pard\\fi1800\\sl-196\\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\\par\r\n-\\pard\\fi1872\\sb28\\sl-196\\slmult0\\f1\\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\\par\r\n-\\pard\\fi1800\\sb230\\sl-196\\slmult0 The BCN-answers for 
 the question I symmetric (Z) are:\\par\r\n-\\pard\\fi3096\\sb182\\sl-196\\slmult0 .Z = f (a, A), A ~ a;\\par\r\n-\\pard\\fi4320\\sl-153\\slmult0\\f0\\fs12 --\\\'a1\\par\r\n-\\pard\\li3096\\sl-360\\slmult0\\f1\\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \\\'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\\par\r\n-\\pard\\fi3096\\sb4\\sl-360\\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\\par\r\n-\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\\par\r\n-\\pard\\fi3096\\sb14\\sl-360\\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\\par\r\n-\\pard\\fi3096\\sb9\\sl-360\\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\\par\r\n-.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\\par\r\n-\\pard\\fi3600\\sl-360\\slmult0 and so on\\par\r\n-\\pard\\fi2016\\sl-326\\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\\par\r\n-\\pard\\fi2016\\sl-240\\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an in
 finite computation (without\\par\r\n-\\pard\\fi2016\\sb43\\sl-240\\slmult0\\fs20 answers).\\par\r\n-\\pard\\sb2198\\sl-240\\slmult0\\f3\\fs8 -~\\par\r\n-\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi72\\sl-220\\slmult0\\fs18 100 The following example is a variant of a program introduced in\\par\r\n-\\pard\\fi1296\\sb28\\sl-220\\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\\par\r\n-\\pard\\fi1224\\sb9\\sl-220\\slmult0 Bowen, editors, \\i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\\par\r\n-\\pard\\fi1224\\sl-220\\slmult0 Programming, \\i0 pages 111-125, Seatle, 1988. The MIT presso\\par\r\n-\\pard\\li360\\sb230\\sl-206\\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\\par\r\n-\\pard\\fi288\\sb38\\sl-206\\slmult0 member(X,[XI~).\\par\r\n-\\pard\\fi360\\sl-201\\slmult0 member (X,[ _1 Y] ) : -member1X, Y
 ) .\\par\r\n-list_of_digi ts ([ ] ) .\\par\r\n-\\pard\\fi360\\sb28\\sl-201\\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\\par\r\n-\\pard\\fi360\\sl-192\\slmult0 digit(l).\\par\r\n-\\pard\\fi360\\sb28\\sl-192\\slmult0 digit(2)..\\par\r\n-\\pard\\fi288\\sb38\\sl-192\\slmult0\\f2\\fs20 digit(3) .\\par\r\n-\\pard\\fi288\\sb33\\sl-192\\slmult0\\fs22 digit(4) .\\par\r\n-\\pard\\fi288\\sb14\\sl-192\\slmult0\\fs20 digit(5) .\\par\r\n-\\pard\\fi288\\sb326\\sl-192\\slmult0\\f1\\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \\i for \\i0 all the\\par\r\n-\\pard\\fi360\\sl-192\\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\\par\r\n-\\pard\\li1512\\ri6048\\sl-360\\slmult0\\qj\\f2\\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\\par\r\n-\\pard\\fi1584\\sl-345\\slmult0\\f1\\fs18 .o o. and so on\\par
 \r\n-\\pard\\sl-336\\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\\par\r\n-\\pard\\li288\\sb264\\sl-192\\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\\par\r\n-\\pard\\fi288\\sb57\\sl-192\\slmult0\\f2\\fs22 element(O).\\par\r\n-\\pard\\fi288\\sb9\\sl-192\\slmult0\\f1\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi288\\sb24\\sl-192\\slmult0 member (X,[ X.I_] ) .\\par\r\n-\\pard\\fi288\\sb33\\sl-192\\slmult0 member (X,[ -\' L] ) : -member (X, L) .\\par\r\n-\\pard\\fi288\\sb28\\sl-192\\slmult0 disjoint ([] ,-),\\par\r\n-\\pard\\fi288\\sb4\\sl-192\\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\\par\r\n-\\pard\\fi216\\sb302\\sl-192\\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\\par\r\n-\\pard\\fi1512\\sb38\\sl-192\\slmult0 .Ll = [ O), L2 = [ \\i O] \\i0 ;\\par\r\n-\\pard\\fi1512\\sb177\\sl-192\\slmult0 .Ll = [
  s (O)], L2 = [ s (O)] ;\\par\r\n-\\pard\\fi1512\\sb168\\sl-192\\slmult0 .Ll = [ O, O], L2 = [ O] ;\\par\r\n-.Ll = [ O, O], L2 = [ O, O) ;\\par\r\n-\\pard\\fi1512\\sb144\\sl-192\\slmult0 .o.. and so on\\par\r\n-\\pard\\fi10512\\sb3984\\sl-192\\slmult0\\f3\\fs12 ,\\\\\\par\r\n-\\pard\\f0\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\sl-201\\slmult0\\ul\\f0\\fs16 -\\par\r\n-\\pard\\fi216\\sb1036\\sl-201\\slmult0\\ulnone\\f3 j\\par\r\n-\\pard\\fi1584\\sb384\\sl-220\\slmult0\\f1\\fs18 12. The following is the classical insertion sort program:\\par\r\n-\\pard\\fi-72\\li1944\\sb168\\sl-244\\slmult0\\f2\\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\\par\r\n-\\pard\\fi1944\\sl-244\\slmult0\\f1\\fs18 insert_sort (E,[ ] ,[ E] ) .\\par\r\n-\\pard\\fi1944\\sl-168\\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\\par\r\n-\\pard\\fi-72\\li1944\\sb19\\sl-196\\slmult0\\f2\\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- g
 reater(E1,E2), insert sort(E1,L,NL). \\f1 list_sort(L,NL):- sort(L,[],NL). -\\par\r\n-\\pard\\fi1944\\sb100\\sl-196\\slmult0\\fs18 sort (( ] , L, L) .\\par\r\n-\\pard\\fi1944\\sb19\\sl-196\\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\\par\r\n-\\pard\\fi1944\\sb24\\sl-196\\slmult0 list (( ] ) .\\par\r\n-list(( EIL] ):-element(E), list(L).\\par\r\n-\\pard\\fi1944\\sb33\\sl-196\\slmult0\\fs22 element (O) .\\par\r\n-\\pard\\fi1944\\sl-196\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi1944\\sb206\\sl-196\\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn\'t arrear in the head, hence it produces. universal\\par\r\n-\\pard\\fi1944\\sb72\\sl-196\\slmult0 quantification\\par\r\n-\\pard\\fi1944\\sb244\\sl-196\\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\\par\r\n-\\pard\\fi1944\\sb38\\sl-196\\slmult0 the second list is not the ordering ofthe first one:\\par\r\n-\\pard\
 \fi3168\\sb72\\sl-196\\slmult0 .11=[],12=[0];\\par\r\n-\\pard\\fi3168\\sb153\\sl-196\\slmult0 .L1 = ( s (O)], L2 = [ ] ;\\par\r\n-\\pard\\fi3168\\sb158\\sl-196\\slmult0 .11 = [ s (O)\\}, L2 = [ O\\} ;\\par\r\n-\\pard\\fi3168\\sb168\\sl-196\\slmult0 .11 = [ ], L2 = ( S (O)\\} ;\\par\r\n-\\pard\\fi3744\\sb148\\sl-196\\slmult0 and so on\\par\r\n-\\pard\\fi1584\\sb360\\sl-196\\slmult0 13. This program returns the maximum ora list ofnumbers:\\par\r\n-\\pard\\fi1944\\sb211\\sl-196\\slmult0\\f2\\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\\par\r\n-\\pard\\fi1944\\sb62\\sl-196\\slmult0 greater(E,O,E) .\\par\r\n-\\pard\\fi1944\\sb4\\sl-196\\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\\par\r\n-\\pard\\fi1944\\sb57\\sl-196\\slmult0\\f1\\fs18 max_list([] ,0).\\par\r\n-\\pard\\fi1944\\sl-168\\slmult0 max_list ([ EI;L\\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\\par\r\n-\\pard\\fi1944\\sb81\\sl-168\\slmult0 list (( \\} ) .\\par\r\n-\\pard\\fi1944\\sb52
 \\sl-168\\slmult0 list([EIL]):-element(E), list(L).\\par\r\n-\\pard\\fi1944\\sb67\\sl-168\\slmult0\\fs22 element(O) .\\par\r\n-\\pard\\fi1944\\sb28\\sl-168\\slmult0\\fs18 element (s (E) ) : -element (E) .\\par\r\n-\\pard\\fi1944\\sb268\\sl-168\\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\\par\r\n-\\pard\\fi1944\\sb4\\sl-168\\slmult0 quantification. -\\par\r\n-\\pard\\fi1944\\sb302\\sl-168\\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\\par\r\n-\\pard\\fi1944\\sb110\\sl-168\\slmult0 such that the number is not the maximum ofthe list:\\par\r\n-\\pard\\fi3168\\sb81\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(O);\\par\r\n-\\pard\\fi3168\\sb192\\sl-168\\slmult0\\f1\\fs18 .1 = [ O], E = s (O);\\par\r\n-\\pard\\fi3168\\sb206\\sl-168\\slmult0\\f2\\fs20 .1 = [], E = s(s(O\\\'bb);\\par\r\n-\\pard\\fi3168\\sb182\\sl-168\\slmult0\\f1\\fs18 .L = ( O], E = s (s (O));\\par\r
 \n-\\pard\\fi3744\\sb182\\sl-168\\slmult0 and so on\\par\r\n-\\pard\\fi11160\\sb3067\\sl-168\\slmult0\\ul\\f3 ,-~ "..\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\nDeleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\r\n===================================================================\r\n--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-14 12:00:54 UTC (rev 93)\r\n+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf\t2010-12-15 16:51:29 UTC (rev 94)\r\n@@ -1,69 +0,0 @@\r\n-{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1034{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\froman\\fprq2\\fcharset0 Times New Roman;}{\\f2\\fmodern\\fprq1\\fcharset0 Courier New;}{\\f3\\fswiss\\fprq2\\fcharset0 Arial Narrow;}}\r\n-\\viewkind4\\uc1\\pard\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi1512\\sl-220\\slmult0\\fs18 14. The following program computes the list difference operation:\\par\r\n-\\pard\\f
 i2016\\sb196\\sl-240\\slmult0\\f2\\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\\par\r\n-\\pard\\fi2016\\sb24\\sl-220\\slmult0\\f1\\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\\par\r\n-\\pard\\fi5472\\sl-240\\slmult0\\f2\\fs20 rernove_list (LAux, L2,NL) .\\par\r\n-\\pard\\fi2016\\sl-220\\slmult0\\f1\\fs18 rernove_elernent ([] ,-,[] ) .\\par\r\n-\\pard\\li2016\\sl-216\\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\\par\r\n-\\pard\\fi6120\\sb43\\sl-216\\slmult0\\f2\\fs20 rernove_elernent(L,E2,NL) .\\par\r\n-\\pard\\fi2016\\sl-201\\slmult0 equal(E,E).\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0\\f1\\fs18 list ([] ) .\\par\r\n-\\pard\\fi2016\\sb24\\sl-201\\slmult0 list([ EIL]):- elernent(E), list(L).\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent (O) .\\par\r\n-\\pard\\fi2016\\sb24\\sl-201\\slmult0 eler
 nent(s(E)):- elernent(E).\\par\r\n-\\pard\\fi1800\\sb225\\sl-201\\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal quantification.\\par\r\n-\\pard\\fi2016\\sb264\\sl-201\\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\\par\r\n-\\pard\\fi2016\\sb28\\sl-201\\slmult0 tuples (L I,L2,L3) such that L3 is not \\b Ll \\b0 -L2.\\par\r\n-\\pard\\fi3096\\sb67\\sl-201\\slmult0 .Ll=[],L2=[0],L3=[0];\\par\r\n-\\pard\\fi3096\\sb144\\sl-201\\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\\par\r\n-\\pard\\fi3096\\sb158\\sl-201\\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\\par\r\n-\\pard\\fi3600\\sb144\\sl-201\\slmult0 and so on\\par\r\n-\\pard\\fi1512\\sb345\\sl-201\\slmult0 15. This program computes the sum of a list:\\par\r\n-\\pard\\fi2016\\sb230\\sl-201\\slmult0\\f2\\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip
 \\par\r\n-\\pard\\fi2016\\sb48\\sl-201\\slmult0\\f1\\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\\par\r\n-\\pard\\fi2016\\sb14\\sl-201\\slmult0 SuIn list ([ ] , O) .\\par\r\n-\\pard\\fi2016\\sb28\\sl-201\\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 list ([ ] ) .\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0 list([EIL]):- element(E), list(L).\\par\r\n-\\pard\\fi2016\\sb9\\sl-201\\slmult0 elernent(O) .\\par\r\n-\\pard\\fi2016\\sb19\\sl-201\\slmult0 elernent (s (E)) : -elernent (E) ,\\par\r\n-\\pard\\fi1800\\sb220\\sl-201\\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\\par\r\n-\\pard\\fi2016\\sb259\\sl-201\\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\\par\r\n-\\pard\\fi2016\\sb57\\sl-201\\slmult0 such that the number is not the sum afilie list values:\\par\
 r\n-\\pard\\fi3096\\sb38\\sl-201\\slmult0\\f2 .L = [], E = s(O);\\par\r\n-\\pard\\fi3096\\sb163\\sl-201\\slmult0\\f1 .L = [ O], E = s (O);\\par\r\n-\\f2\\fs20 .L = [], E = s(s(O));\\par\r\n-\\pard\\fi3096\\sb168\\sl-201\\slmult0\\f1\\fs18 .L=[O], E=s(s(O));\\par\r\n-\\pard\\fi3672\\sb139\\sl-201\\slmult0 andsoon\\par\r\n-\\pard\\sb3859\\sl-201\\slmult0\\f0\\fs22 \'-\\par\r\n-\\pard\\fi11016\\sl-76\\slmult0\\ul\\f3\\fs10 ~--~---~-\\par\r\n-\\pard\\ulnone\\f0\\fs12\\par\r\n-\\pard\\sl-120\\slmult0\\f1\\par\r\n-\\pard\\fi10512\\sl-158\\slmult0\\ul ,\\par\r\n-\\pard\\fi9864\\sl-801\\slmult0\\ulnone\\fs76 ,\\par\r\n-\\pard\\fi10152\\sl-820\\slmult0\\fs78 ,\\par\r\n-\\pard\\sb744\\sl-220\\slmult0\\fs18 16. The following program computes thejoint oftwo lists:\\par\r\n-\\pard\\fi504\\sb163\\sl-240\\slmult0\\f2\\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\\par\r\n-\\pard\\fi432\\sb38\\sl-240\\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\\par\r\n-\\pard\\f
 i504\\sl-220\\slmult0\\f1\\fs18 union([ EIL1\\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\\par\r\n-\\pard\\fi504\\sb14\\sl-220\\slmult0 member (E,[ El J ) .\\par\r\n-\\pard\\fi504\\sl-220\\slmult0 member (E,[ _1 L] ) : -member (E, L) .\\par\r\n-element (O) .\\par\r\n-\\pard\\fi504\\sb4\\sl-220\\slmult0 element(s(E)):- element(E).\\par\r\n-\\pard\\fi504\\sl-220\\slmult0 list ([] ) .\\par\r\n-list([EIL]):- element(E), list(L).\\par\r\n-\\pard\\fi504\\sb211\\sl-220\\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\\par\r\n-\\pard\\fi504\\sb9\\sl-220\\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\\}:\\par\r\n-\\pard\\fi1584\\sb48\\sl-220\\slmult0 .Ll=[],L2=[]i\\par\r\n-\\pard\\fi1584\\sb120\\sl-220\\slmult0 .Ll = [s (O)], L2 = [s(O)].;\\par\r\n-\\pard\\fi1584\\sb144\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [] i\\par\r\n-.Ll = [ ], L2 = [ s (O)] i\\par\r\n-\\pard\\fi1584\\sb153\\sl-220\\slmult0 .Ll = [ ],
  L2 = [ O, O] i\\par\r\n-\\pard\\fi1584\\sb134\\sl-220\\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\\par\r\n-\\pard\\fi1584\\sb139\\sl-220\\slmult0 .= [ s ( O) , O] ;\\par\r\n-\\pard\\fi2160\\sb124\\sl-220\\slmult0 and so on\\par\r\n-}\r\n-\x00\r\n\\ No newline at end of file\r\n\r\n\r\n'
imap: savemessage: new content length is 52157


I have problems when copying the email here. Character ^@ blocks copy&paste.
It seems to be a special character. Maybe is the problem ...



>From vpablos@babel.ls.fi.upm.es Wed Dec 15 17:51:29 2010
Return-path: <vpablos@babel.ls.fi.upm.es>
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on babel.ls.fi.upm.es
Envelope-to: vpablos@babel.ls.fi.upm.es
Delivery-date: Wed, 15 Dec 2010 17:51:29 +0100
Received: from www-data by babel.ls.fi.upm.es with local (Exim 4.72)
	(envelope-from <vpablos@babel.ls.fi.upm.es>)
	id 1PSuZd-0001CE-6A
	for vpablos@babel.ls.fi.upm.es; Wed, 15 Dec 2010 17:51:29 +0100
Message-Id: <E1PSuZd-0001CE-6A@babel.ls.fi.upm.es>
Date: Wed, 15 Dec 2010 17:51:29 +0100
To: vpablos@babel.ls.fi.upm.es
From: vpablos@babel.ls.fi.upm.es
Subject: [neg&fl] commit r94 - in negation: . Ejemplos_Negacion cneg_ciao_Chan/Ejemplos_Negacion
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Author: vpablos
Date: 2010-12-15 17:51:29 +0100 (Wed, 15 Dec 2010)
New Revision: 94

Added:
   negation/Ejemplos_Negacion/
   negation/Ejemplos_Negacion/Articuloparte1.rtf
   negation/Ejemplos_Negacion/Articuloparte2.rtf
   negation/Ejemplos_Negacion/Articuloparte3.rtf
Removed:
   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf
   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf
   negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf
Log:
Moved unused examples.

Copied: negation/Ejemplos_Negacion/Articuloparte1.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf)
===================================================================
--- negation/Ejemplos_Negacion/Articuloparte1.rtf	                        (rev 0)
+++ negation/Ejemplos_Negacion/Articuloparte1.rtf	2010-12-15 16:51:29 UTC (rev 94)
@@ -0,0 +1,120 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1034{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fprq2\fcharset0 Arial Narrow;}}
+\viewkind4\uc1\pard\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\sl-220\slmult0\ul\f0\fs18 ---,- \ulnone -\par
+\pard\fi504\sb62\sl-681\slmult0\fs64 /\par
+\pard\fi6048\sb710\sl-278\slmult0\b\f1\fs24 Examples\par
+\pard\fi-288\li1944\sb230\sl-196\slmult0\b0\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\par
+\pard\fi1944\sb240\sl-196\slmult0\f2\fs20 p(a). % File delay.pnt in programs:zip\par
+\pard\fi1944\sb43\sl-196\slmult0\f1\fs18 p(f(X)):- p(X).\par
+\pard\fi2016\sb33\sl-196\slmult0 r (X) : -! s (X) .\par
+\pard\fi1944\sb28\sl-196\slmult0\f2\fs20 s(g(X)) .\par
+\pard\li1944\sb216\sl-230\slmult0\f1\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\par
+\pard\fi1584\sb211\sl-230\slmult0 2. The following program is a typical example of recursion through negation:\par
+\pard\fi1944\sb216\sl-230\slmult0\f2\fs20 even(O). % File even.pnt in programs.zip\par
+\pard\fi1944\sl-211\slmult0\f1\fs18 even(s(X) ).:- ! even(X).\par
+\pard\fi2808\sb124\sl-211\slmult0\fs12 .'\par
+\pard\li1944\sl-235\slmult0\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\par
+\pard\fi3168\sb19\sl-235\slmult0\f2\fs20 .Z = s(O);\par
+\pard\fi3168\sb124\sl-235\slmult0 .Z = s(s(s(O)));\par
+\pard\fi3168\sb120\sl-235\slmult0 .Z = s(s(s(s(s(O)))));\par
+\pard\fi288\sb100\sl-235\slmult0\f1\fs18 j and so on\par
+\pard\fi72\li2088\sb350\sl-220\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\par
+\pard\fi1584\sb225\sl-220\slmult0 3. A similar behaviour is shown by the following definite program:\par
+\pard\fi1944\sb216\sl-220\slmult0\f2\fs20 less(O,s(Y\}). %File less.pnt in programJ.zip\par
+\pard\fi1944\sb14\sl-220\slmult0\f1\fs18 less(s(X),s(Y)):- less(X,Y).\par
+\pard\fi1944\sb211\sl-220\slmult0 The BCN-answers for the question ! less (X, Y) are:\par
+\pard\fi3168\sb76\sl-220\slmult0 .X=O,Y=_A,_A~s(*B);\par
+\pard\li3168\sl-283\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\par
+\pard\fi3168\sl-216\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\par
+\pard\fi3168\sb43\sl-216\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\par
+\pard\fi3168\sb28\sl-216\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\par
+\pard\fi3168\sb38\sl-216\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\par
+\pard\fi3744\sb19\sl-216\slmult0 and so on\par
+\pard\fi2088\sb230\sl-216\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\par
+\pard\fi7560\sb2112\sl-216\slmult0\f3\fs36 .\par
+\pard\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\sl-259\slmult0\ul\f0\fs22 -\par
+\pard\fi1440\sb1632\sl-220\slmult0\ulnone\f1\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\par
+\pard\li1800\ri1008\sb177\sl-220\slmult0\qj\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\par
+\pard\fi-1800\li1800\ri5976\sb76\sl-206\slmult0\qj\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \f2 even_by_sum(X):- ' sum(Y,Y,X).\par
+\pard\fi1800\sb206\sl-206\slmult0\f1 Thequestion !sum\{Zl,Z2,Z3) gives:\par
+\pard\li3024\sl-403\slmult0\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\par
+\pard\fi3024\sl-336\slmult0 .Zl = s\{s(_A)), Z3 = s(_8), _B;!: s(*C);\par
+\pard\fi3024\sb28\sl-336\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\{_B), _B ;!: _A;\par
+\pard\fi504\sb33\sl-336\slmult0 -.Zl = s\{s\{s\{_A))), Z3 = s\{s\{_B)), _B ~ s(*C);\par
+\pard\fi3096\sb33\sl-336\slmult0 .Zl = s\{s\{O)), Z2 = _A, Z3 = s\{s\{_B)), _8;!: _A;\par
+\pard\fi3096\sb38\sl-336\slmult0 .Zl";' s\{s(s\{s\{_A)))), Z3 = s(s\{s(_B))), _B;!: s(*C);\par
+\pard\fi3024\sb33\sl-336\slmult0 ..,. and so on\par
+\pard\fi1800\sb235\sl-336\slmult0 and the question ! even_by _sum ( Z ) gives:\par
+\pard\fi3096\sb33\sl-336\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\{O\};)\par
+\pard\fi-576\li3672\sb4\sl-364\slmult0 .Z = s\{s(_A)), _A;!: O, _A;!: s\{s\{*B)); (equivalentto Z=s\{s\{s(O)));) and so on\par
+\pard\fi1512\sb196\sl-364\slmult0 5. The following program produces very big computation trees:\par
+\pard\fi-72\li1872\sb100\sl-283\slmult0\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\{X),\par
+\pard\fi4104\sl-201\slmult0 ! evennumf(Y).\par
+\pard\fi1872\sb19\sl-201\slmult0 evennumf(f(X,Y)):- ! evennumf\{X),\par
+\pard\fi4104\sb9\sl-201\slmult0 evennumf(Y) .\par
+\pard\fi1872\sb235\sl-201\slmult0\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\par
+\pard\fi3096\sb192\sl-201\slmult0\f2\fs20 .Z = f(a,a);\par
+\pard\fi3096\sb153\sl-201\slmult0\f1\fs18 .Z = f(f(a,a),f(a,a));\par
+.Z = f(f(a,a),f(f(a,a),f\{a,a)));\par
+\pard\fi3096\sb158\sl-201\slmult0 .Z = f\{f\{a,f\{a,a)),a);\par
+\f2 .Z = f(f\{f\{a,a),a),a);\par
+\f1 .Z = f(a,f\{f\{a,a),a));\par
+\pard\fi3096\sb163\sl-201\slmult0 .Z = f(a,f(a,f(a,a));\par
+.Z = f(f(f(a,a),f\{a,a)),f\{a,a));\par
+\pard\fi3096\sb158\sl-201\slmult0 .Z = f(f\{f\{a,a),f\{a,a)),f\{f\{a,a),f\{a,a)));\par
+.Z = f(f(f\{a,a),a),f(f(a,a),a));\par
+\pard\sb177\sl-201\slmult0 I and so on\par
+\pard\sb484\sl-201\slmult0\f0\fs34\'a1\par
+\pard\sb216\sl-201\slmult0\fs22 j ~\par
+\pard\sb297\sl-201\slmult0\fs14 I\par
+\pard\sb48\sl-201\slmult0\f3\fs20 I\par
+\pard\sl-115\slmult0\f1\fs8\'a1\par
+\pard\sb9\sl-86\slmult0\f0\fs10 I\par
+\pard\sb297\sl-86\slmult0\f3\fs14 1-\par
+\pard\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\fi1512\sl-220\slmult0\fs18 6. The following program was introduced in\par
+\pard\fi2736\sl-220\slmult0 W. Drabent., \i What is,failure?An approach to constructive negation,\par
+\i0 Acta lnformatica, 32:27-59,1995.\par
+\pard\fi1872\sb206\sl-220\slmult0\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\par
+\pard\fi1872\sl-220\slmult0\f0 p (X) : -p (X) .\par
+\f2 p(a) ,\par
+\f0 q (a) : -q(a).\par
+\f1 q(X):- !s\{X).\par
+\pard\fi1872\sb9\sl-240\slmult0\f2\fs20 s (a),\par
+\pard\fi1872\sl-220\slmult0\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\par
+\pard\fi2952\sl-220\slmult0 % the BCN prototype infers the signature from the program and the goal,\par
+\pard\fi1872\sb230\sl-220\slmult0\f1 It can be checked that:\par
+\pard\fi3096\sb19\sl-220\slmult0 .! r. One answer : True;\par
+\pard\fi3096\sb134\sl-220\slmult0 .r. fails\par
+\pard\fi1512\sb340\sl-220\slmult0 7. The following program was introduced in\par
+\pard\fi2736\sl-220\slmult0 R.Bart\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\par
+Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\par
+\pard\fi2808\sb28\sl-220\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\par
+\pard\fi1872\sl-220\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\par
+\pard\li1872\sb168\sl-244\slmult0\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\par
+\pard\fi1872\sl-230\slmult0\fs16 t (c) ,\par
+\pard\fi1872\sb216\sl-230\slmult0\f1\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\par
+\pard\fi3096\sb148\sl-230\slmult0 .X = a, Y = _A, _A * f(*B);\par
+\pard\fi3096\sb144\sl-230\slmult0\f2 .X = f(_A), y = _B, _B * b;\par
+.X = _A, _A * f'(*B), _A * a;\par
+\pard\fi3096\sb129\sl-230\slmult0 .X = a, Y = f(_A), _A * c;\par
+\pard\fi3096\sb139\sl-230\slmult0 .X = f(_A), Y = b, _A * c;\par
+\pard\fi1872\sb105\sl-230\slmult0\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\'e1k's prototype.\par
+\pard\li1872\sl-225\slmult0 Our answers are more general than Bart\'e1k's ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\par
+\pard\fi288\sb446\sl-225\slmult0 , 8. The following program was introduced in\par
+\pard\li2736\sl-225\slmult0 A. Bossi, M. Fabris and M.C. Meo, \i A bottom-up semanticsforconstructive negation, \i0 In P."V. Hentenryck, editor, \i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \i0 '94), pages 520-534, MIT Press, 1994.\par
+\pard\li2016\sb158\sl-249\slmult0\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \f1 p(X,g(W)):- !r(W).\par
+\pard\fi2016\sl-225\slmult0\fs14 cq.(a) ,\par
+\pard\li2016\ri6840\sb38\sl-216\slmult0\qj\fs18 r(b):- r(b). r(c):- r(c). \f2 r(c) .\par
+\pard\fi2088\sb201\sl-216\slmult0\f1 It can be checked that the BCN prototype behaves as foIlows:\par
+\pard\fi3096\sb28\sl-216\slmult0 .!p(f(a),Y). fails\par
+\pard\sl-216\slmult0\f0\fs14 I\par
+\pard\sb24\sl-110\slmult0\f1\fs18 , .!p(a,c). Oneanswer:True\par
+\pard\fi3096\sb273\sl-110\slmult0 .! r (c). fails '\par
+\pard\sb1886\sl-110\slmult0\ul\f0\fs26 -\par
+}
+^@
\ No newline at end of file

Copied: negation/Ejemplos_Negacion/Articuloparte2.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf)
===================================================================
--- negation/Ejemplos_Negacion/Articuloparte2.rtf	                        (rev 0)
+++ negation/Ejemplos_Negacion/Articuloparte2.rtf	2010-12-15 16:51:29 UTC (rev 94)
@@ -0,0 +1,121 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1034{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fprq2\fcharset0 Arial Narrow;}}
+\viewkind4\uc1\pard\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\sl-201\slmult0\ul\f0\fs16 -\par
+\pard\fi3024\sb1660\sl-220\slmult0\ulnone\f1\fs18 .! r (b). loops infinitely\par
+\pard\fi3024\sb139\sl-220\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\par
+\pard\fi3024\sb144\sl-240\slmult0\f2\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\par
+\pard\fi3744\sb172\sl-220\slmult0\f1\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\par
+\pard\fi3744\sb105\sl-220\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\par
+\pard\fi3744\sb192\sl-220\slmult0 .X=_A, Y=g(c), _A~f(*B);\par
+\pard\fi3744\sb86\sl-240\slmult0\f2\fs20 .X = f(_A), y = g(c), _A ~ a;\par
+\pard\fi3096\sb158\sl-220\slmult0\f1\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\par
+\pard\fi3096\sb139\sl-220\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\par
+.p(X, g(Y)), q(Y). Twoanswers:\par
+\pard\fi3744\sb120\sl-240\slmult0\f2\fs20 .X = f(a), Y = a;\par
+\pard\fi3744\sb91\sl-240\slmult0 .y = a;\par
+\pard\sb153\sl-220\slmult0\qc\f1\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\par
+\pard\sb177\sl-220\slmult0\qc .X=_A,Y=c,_A~f(*B);\par
+\pard\fi3744\sb100\sl-240\slmult0\f2\fs20 .X = f(_A), y = c, _A ~ a;\par
+\pard\fi1512\sb321\sl-220\slmult0\f1\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\par
+\pard\fi1872\sb14\sl-220\slmult0\{ \i ala, f/2, \i0 gil) is:\par
+\pard\fi-72\li1872\sb172\sl-249\slmult0\f2\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\par
+\pard\fi1872\sl-225\slmult0\f1\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\par
+\pard\fi1800\sb19\sl-225\slmult0\f2\fs20 mirror(a,a) .\par
+\pard\fi1800\sl-196\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\par
+\pard\fi1872\sb28\sl-196\slmult0\f1\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\par
+\pard\fi1800\sb230\sl-196\slmult0 The BCN-answers for the question I symmetric (Z) are:\par
+\pard\fi3096\sb182\sl-196\slmult0 .Z = f (a, A), A ~ a;\par
+\pard\fi4320\sl-153\slmult0\f0\fs12 --\'a1\par
+\pard\li3096\sl-360\slmult0\f1\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\par
+\pard\fi3096\sb4\sl-360\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\par
+\pard\fi3096\sb9\sl-360\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\par
+\pard\fi3096\sb14\sl-360\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\par
+\pard\fi3096\sb9\sl-360\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\par
+.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\par
+\pard\fi3600\sl-360\slmult0 and so on\par
+\pard\fi2016\sl-326\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\par
+\pard\fi2016\sl-240\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\par
+\pard\fi2016\sb43\sl-240\slmult0\fs20 answers).\par
+\pard\sb2198\sl-240\slmult0\f3\fs8 -~\par
+\pard\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\fi72\sl-220\slmult0\fs18 100 The following example is a variant of a program introduced in\par
+\pard\fi1296\sb28\sl-220\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\par
+\pard\fi1224\sb9\sl-220\slmult0 Bowen, editors, \i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\par
+\pard\fi1224\sl-220\slmult0 Programming, \i0 pages 111-125, Seatle, 1988. The MIT presso\par
+\pard\li360\sb230\sl-206\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\par
+\pard\fi288\sb38\sl-206\slmult0 member(X,[XI~).\par
+\pard\fi360\sl-201\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\par
+list_of_digi ts ([ ] ) .\par
+\pard\fi360\sb28\sl-201\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\par
+\pard\fi360\sl-192\slmult0 digit(l).\par
+\pard\fi360\sb28\sl-192\slmult0 digit(2)..\par
+\pard\fi288\sb38\sl-192\slmult0\f2\fs20 digit(3) .\par
+\pard\fi288\sb33\sl-192\slmult0\fs22 digit(4) .\par
+\pard\fi288\sb14\sl-192\slmult0\fs20 digit(5) .\par
+\pard\fi288\sb326\sl-192\slmult0\f1\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \i for \i0 all the\par
+\pard\fi360\sl-192\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\par
+\pard\li1512\ri6048\sl-360\slmult0\qj\f2\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\par
+\pard\fi1584\sl-345\slmult0\f1\fs18 .o o. and so on\par
+\pard\sl-336\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\par
+\pard\li288\sb264\sl-192\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\par
+\pard\fi288\sb57\sl-192\slmult0\f2\fs22 element(O).\par
+\pard\fi288\sb9\sl-192\slmult0\f1\fs18 element (s (E) ) : -element (E) .\par
+\pard\fi288\sb24\sl-192\slmult0 member (X,[ X.I_] ) .\par
+\pard\fi288\sb33\sl-192\slmult0 member (X,[ -' L] ) : -member (X, L) .\par
+\pard\fi288\sb28\sl-192\slmult0 disjoint ([] ,-),\par
+\pard\fi288\sb4\sl-192\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\par
+\pard\fi216\sb302\sl-192\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\par
+\pard\fi1512\sb38\sl-192\slmult0 .Ll = [ O), L2 = [ \i O] \i0 ;\par
+\pard\fi1512\sb177\sl-192\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\par
+\pard\fi1512\sb168\sl-192\slmult0 .Ll = [ O, O], L2 = [ O] ;\par
+.Ll = [ O, O], L2 = [ O, O) ;\par
+\pard\fi1512\sb144\sl-192\slmult0 .o.. and so on\par
+\pard\fi10512\sb3984\sl-192\slmult0\f3\fs12 ,\\\par
+\pard\f0\par
+\pard\sl-120\slmult0\f1\par
+\pard\sl-201\slmult0\ul\f0\fs16 -\par
+\pard\fi216\sb1036\sl-201\slmult0\ulnone\f3 j\par
+\pard\fi1584\sb384\sl-220\slmult0\f1\fs18 12. The following is the classical insertion sort program:\par
+\pard\fi-72\li1944\sb168\sl-244\slmult0\f2\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\par
+\pard\fi1944\sl-244\slmult0\f1\fs18 insert_sort (E,[ ] ,[ E] ) .\par
+\pard\fi1944\sl-168\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\par
+\pard\fi-72\li1944\sb19\sl-196\slmult0\f2\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \f1 list_sort(L,NL):- sort(L,[],NL). -\par
+\pard\fi1944\sb100\sl-196\slmult0\fs18 sort (( ] , L, L) .\par
+\pard\fi1944\sb19\sl-196\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\par
+\pard\fi1944\sb24\sl-196\slmult0 list (( ] ) .\par
+list(( EIL] ):-element(E), list(L).\par
+\pard\fi1944\sb33\sl-196\slmult0\fs22 element (O) .\par
+\pard\fi1944\sl-196\slmult0\fs18 element (s (E) ) : -element (E) .\par
+\pard\fi1944\sb206\sl-196\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn't arrear in the head, hence it produces. universal\par
+\pard\fi1944\sb72\sl-196\slmult0 quantification\par
+\pard\fi1944\sb244\sl-196\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\par
+\pard\fi1944\sb38\sl-196\slmult0 the second list is not the ordering ofthe first one:\par
+\pard\fi3168\sb72\sl-196\slmult0 .11=[],12=[0];\par
+\pard\fi3168\sb153\sl-196\slmult0 .L1 = ( s (O)], L2 = [ ] ;\par
+\pard\fi3168\sb158\sl-196\slmult0 .11 = [ s (O)\}, L2 = [ O\} ;\par
+\pard\fi3168\sb168\sl-196\slmult0 .11 = [ ], L2 = ( S (O)\} ;\par
+\pard\fi3744\sb148\sl-196\slmult0 and so on\par
+\pard\fi1584\sb360\sl-196\slmult0 13. This program returns the maximum ora list ofnumbers:\par
+\pard\fi1944\sb211\sl-196\slmult0\f2\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\par
+\pard\fi1944\sb62\sl-196\slmult0 greater(E,O,E) .\par
+\pard\fi1944\sb4\sl-196\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\par
+\pard\fi1944\sb57\sl-196\slmult0\f1\fs18 max_list([] ,0).\par
+\pard\fi1944\sl-168\slmult0 max_list ([ EI;L\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\par
+\pard\fi1944\sb81\sl-168\slmult0 list (( \} ) .\par
+\pard\fi1944\sb52\sl-168\slmult0 list([EIL]):-element(E), list(L).\par
+\pard\fi1944\sb67\sl-168\slmult0\fs22 element(O) .\par
+\pard\fi1944\sb28\sl-168\slmult0\fs18 element (s (E) ) : -element (E) .\par
+\pard\fi1944\sb268\sl-168\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\par
+\pard\fi1944\sb4\sl-168\slmult0 quantification. -\par
+\pard\fi1944\sb302\sl-168\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\par
+\pard\fi1944\sb110\sl-168\slmult0 such that the number is not the maximum ofthe list:\par
+\pard\fi3168\sb81\sl-168\slmult0\f2\fs20 .1 = [], E = s(O);\par
+\pard\fi3168\sb192\sl-168\slmult0\f1\fs18 .1 = [ O], E = s (O);\par
+\pard\fi3168\sb206\sl-168\slmult0\f2\fs20 .1 = [], E = s(s(O\'bb);\par
+\pard\fi3168\sb182\sl-168\slmult0\f1\fs18 .L = ( O], E = s (s (O));\par
+\pard\fi3744\sb182\sl-168\slmult0 and so on\par
+\pard\fi11160\sb3067\sl-168\slmult0\ul\f3 ,-~ "..\par
+}
+^@
\ No newline at end of file

Copied: negation/Ejemplos_Negacion/Articuloparte3.rtf (from rev 93, negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf)
===================================================================
--- negation/Ejemplos_Negacion/Articuloparte3.rtf	                        (rev 0)
+++ negation/Ejemplos_Negacion/Articuloparte3.rtf	2010-12-15 16:51:29 UTC (rev 94)
@@ -0,0 +1,69 @@
+{\rtf1\ansi\ansicpg1252\deff0\deflang1034{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fprq2\fcharset0 Arial Narrow;}}
+\viewkind4\uc1\pard\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\fi1512\sl-220\slmult0\fs18 14. The following program computes the list difference operation:\par
+\pard\fi2016\sb196\sl-240\slmult0\f2\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\par
+\pard\fi2016\sb24\sl-220\slmult0\f1\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\par
+\pard\fi5472\sl-240\slmult0\f2\fs20 rernove_list (LAux, L2,NL) .\par
+\pard\fi2016\sl-220\slmult0\f1\fs18 rernove_elernent ([] ,-,[] ) .\par
+\pard\li2016\sl-216\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\par
+\pard\fi6120\sb43\sl-216\slmult0\f2\fs20 rernove_elernent(L,E2,NL) .\par
+\pard\fi2016\sl-201\slmult0 equal(E,E).\par
+\pard\fi2016\sb19\sl-201\slmult0\f1\fs18 list ([] ) .\par
+\pard\fi2016\sb24\sl-201\slmult0 list([ EIL]):- elernent(E), list(L).\par
+\pard\fi2016\sb9\sl-201\slmult0 elernent (O) .\par
+\pard\fi2016\sb24\sl-201\slmult0 elernent(s(E)):- elernent(E).\par
+\pard\fi1800\sb225\sl-201\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal quantification.\par
+\pard\fi2016\sb264\sl-201\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\par
+\pard\fi2016\sb28\sl-201\slmult0 tuples (L I,L2,L3) such that L3 is not \b Ll \b0 -L2.\par
+\pard\fi3096\sb67\sl-201\slmult0 .Ll=[],L2=[0],L3=[0];\par
+\pard\fi3096\sb144\sl-201\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\par
+\pard\fi3096\sb163\sl-201\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\par
+\pard\fi3096\sb158\sl-201\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\par
+\pard\fi3600\sb144\sl-201\slmult0 and so on\par
+\pard\fi1512\sb345\sl-201\slmult0 15. This program computes the sum of a list:\par
+\pard\fi2016\sb230\sl-201\slmult0\f2\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\par
+\pard\fi2016\sb48\sl-201\slmult0\f1\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\par
+\pard\fi2016\sb14\sl-201\slmult0 SuIn list ([ ] , O) .\par
+\pard\fi2016\sb28\sl-201\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\par
+\pard\fi2016\sb9\sl-201\slmult0 list ([ ] ) .\par
+\pard\fi2016\sb19\sl-201\slmult0 list([EIL]):- element(E), list(L).\par
+\pard\fi2016\sb9\sl-201\slmult0 elernent(O) .\par
+\pard\fi2016\sb19\sl-201\slmult0 elernent (s (E)) : -elernent (E) ,\par
+\pard\fi1800\sb220\sl-201\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\par
+\pard\fi2016\sb259\sl-201\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\par
+\pard\fi2016\sb57\sl-201\slmult0 such that the number is not the sum afilie list values:\par
+\pard\fi3096\sb38\sl-201\slmult0\f2 .L = [], E = s(O);\par
+\pard\fi3096\sb163\sl-201\slmult0\f1 .L = [ O], E = s (O);\par
+\f2\fs20 .L = [], E = s(s(O));\par
+\pard\fi3096\sb168\sl-201\slmult0\f1\fs18 .L=[O], E=s(s(O));\par
+\pard\fi3672\sb139\sl-201\slmult0 andsoon\par
+\pard\sb3859\sl-201\slmult0\f0\fs22 '-\par
+\pard\fi11016\sl-76\slmult0\ul\f3\fs10 ~--~---~-\par
+\pard\ulnone\f0\fs12\par
+\pard\sl-120\slmult0\f1\par
+\pard\fi10512\sl-158\slmult0\ul ,\par
+\pard\fi9864\sl-801\slmult0\ulnone\fs76 ,\par
+\pard\fi10152\sl-820\slmult0\fs78 ,\par
+\pard\sb744\sl-220\slmult0\fs18 16. The following program computes thejoint oftwo lists:\par
+\pard\fi504\sb163\sl-240\slmult0\f2\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\par
+\pard\fi432\sb38\sl-240\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\par
+\pard\fi504\sl-220\slmult0\f1\fs18 union([ EIL1\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\par
+\pard\fi504\sb14\sl-220\slmult0 member (E,[ El J ) .\par
+\pard\fi504\sl-220\slmult0 member (E,[ _1 L] ) : -member (E, L) .\par
+element (O) .\par
+\pard\fi504\sb4\sl-220\slmult0 element(s(E)):- element(E).\par
+\pard\fi504\sl-220\slmult0 list ([] ) .\par
+list([EIL]):- element(E), list(L).\par
+\pard\fi504\sb211\sl-220\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\par
+\pard\fi504\sb9\sl-220\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\}:\par
+\pard\fi1584\sb48\sl-220\slmult0 .Ll=[],L2=[]i\par
+\pard\fi1584\sb120\sl-220\slmult0 .Ll = [s (O)], L2 = [s(O)].;\par
+\pard\fi1584\sb144\sl-220\slmult0 .Ll = [ s (O)], L2 = [] i\par
+.Ll = [ ], L2 = [ s (O)] i\par
+\pard\fi1584\sb153\sl-220\slmult0 .Ll = [ ], L2 = [ O, O] i\par
+\pard\fi1584\sb134\sl-220\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\par
+\pard\fi1584\sb139\sl-220\slmult0 .= [ s ( O) , O] ;\par
+\pard\fi2160\sb124\sl-220\slmult0 and so on\par
+}
+^@
\ No newline at end of file

Deleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf
===================================================================
--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf	2010-12-14 12:00:54 UTC (rev 93)
+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte1.rtf	2010-12-15 16:51:29 UTC (rev 94)
@@ -1,120 +0,0 @@
-{\rtf1\ansi\ansicpg1252\deff0\deflang1034{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fprq2\fcharset0 Arial Narrow;}}
-\viewkind4\uc1\pard\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\sl-220\slmult0\ul\f0\fs18 ---,- \ulnone -\par
-\pard\fi504\sb62\sl-681\slmult0\fs64 /\par
-\pard\fi6048\sb710\sl-278\slmult0\b\f1\fs24 Examples\par
-\pard\fi-288\li1944\sb230\sl-196\slmult0\b0\fs18 l. The following program shows that constructive negation can finitely fails whereas the "delay technique" produces infinite computation\par
-\pard\fi1944\sb240\sl-196\slmult0\f2\fs20 p(a). % File delay.pnt in programs:zip\par
-\pard\fi1944\sb43\sl-196\slmult0\f1\fs18 p(f(X)):- p(X).\par
-\pard\fi2016\sb33\sl-196\slmult0 r (X) : -! s (X) .\par
-\pard\fi1944\sb28\sl-196\slmult0\f2\fs20 s(g(X)) .\par
-\pard\li1944\sb216\sl-230\slmult0\f1\fs18 Both questions: ! r (X) , P (X). and p (X) , ! r (X). produce an immediate fail in the BCN prototype. However. the "the delay technique" checks if each answer for p (X) is a finite failure of r (X) (which, indeed, is the case), producing an infinite number of checks.\par
-\pard\fi1584\sb211\sl-230\slmult0 2. The following program is a typical example of recursion through negation:\par
-\pard\fi1944\sb216\sl-230\slmult0\f2\fs20 even(O). % File even.pnt in programs.zip\par
-\pard\fi1944\sl-211\slmult0\f1\fs18 even(s(X) ).:- ! even(X).\par
-\pard\fi2808\sb124\sl-211\slmult0\fs12 .'\par
-\pard\li1944\sl-235\slmult0\fs18 Both questlons ! even ( Z) .and ! even (Z) , even (s (Z) ) ., conducted by the BCN prototype, produce the answers:\par
-\pard\fi3168\sb19\sl-235\slmult0\f2\fs20 .Z = s(O);\par
-\pard\fi3168\sb124\sl-235\slmult0 .Z = s(s(s(O)));\par
-\pard\fi3168\sb120\sl-235\slmult0 .Z = s(s(s(s(s(O)))));\par
-\pard\fi288\sb100\sl-235\slmult0\f1\fs18 j and so on\par
-\pard\fi72\li2088\sb350\sl-220\slmult0 However, the question ! even (Z) , ! even (s (Z)). produces infinite computation (without answers). This is the expected behaviour if we consider the declarative semantics given by the three-valued logical consequences of program completion.\par
-\pard\fi1584\sb225\sl-220\slmult0 3. A similar behaviour is shown by the following definite program:\par
-\pard\fi1944\sb216\sl-220\slmult0\f2\fs20 less(O,s(Y\}). %File less.pnt in programJ.zip\par
-\pard\fi1944\sb14\sl-220\slmult0\f1\fs18 less(s(X),s(Y)):- less(X,Y).\par
-\pard\fi1944\sb211\sl-220\slmult0 The BCN-answers for the question ! less (X, Y) are:\par
-\pard\fi3168\sb76\sl-220\slmult0 .X=O,Y=_A,_A~s(*B);\par
-\pard\li3168\sl-283\slmult0 .X = s (_A), Y = _B, _B ~ s (*-C) ; .X=s(s(_A)),Y=s(_B),_B~s(*C);\par
-\pard\fi3168\sl-216\slmult0 .X = s(O), Y = s(_A), _A ~ s(*B);\par
-\pard\fi3168\sb43\sl-216\slmult0 .X = s(s(s(_A))), y = s(s(_B))-, _B ~ s(*C);\par
-\pard\fi3168\sb28\sl-216\slmult0 .X = s (s (O)), y = s (s (~)), _A ~ s (*B);\par
-\pard\fi3168\sb38\sl-216\slmult0 .X = s(s(s(s(_A)))), y = s(s(s(_B))), _B ~ s(*C);\par
-\pard\fi3744\sb19\sl-216\slmult0 and so on\par
-\pard\fi2088\sb230\sl-216\slmult0 whereas the question ! less (X, s (X) ) produces (as expected) infinite computation (without answers).\par
-\pard\fi7560\sb2112\sl-216\slmult0\f3\fs36 .\par
-\pard\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\sl-259\slmult0\ul\f0\fs22 -\par
-\pard\fi1440\sb1632\sl-220\slmult0\ulnone\f1\fs18 4. The following is a definite program to compute even (and odd) numbers in a different way:\par
-\pard\li1800\ri1008\sb177\sl-220\slmult0\qj\f2 sum(O,X,X). % File evenbysum.pnt in programs.~ip\par
-\pard\fi-1800\li1800\ri5976\sb76\sl-206\slmult0\qj\f1 sum(s(X),Y,s(Z)):- sum(X,Y,Z). \f2 even_by_sum(X):- ' sum(Y,Y,X).\par
-\pard\fi1800\sb206\sl-206\slmult0\f1 Thequestion !sum\{Zl,Z2,Z3) gives:\par
-\pard\li3024\sl-403\slmult0\f2 .Zl = O, Z2 = _A, Z3 = _B, _B ;!: _A; \f1 .Zl=s(~),Z3=_B,_B;!:S(*C);\par
-\pard\fi3024\sl-336\slmult0 .Zl = s\{s(_A)), Z3 = s(_8), _B;!: s(*C);\par
-\pard\fi3024\sb28\sl-336\slmult0 .Zl = s(O), Z2 = _A, Z3 = s\{_B), _B ;!: _A;\par
-\pard\fi504\sb33\sl-336\slmult0 -.Zl = s\{s\{s\{_A))), Z3 = s\{s\{_B)), _B ~ s(*C);\par
-\pard\fi3096\sb33\sl-336\slmult0 .Zl = s\{s\{O)), Z2 = _A, Z3 = s\{s\{_B)), _8;!: _A;\par
-\pard\fi3096\sb38\sl-336\slmult0 .Zl";' s\{s(s\{s\{_A)))), Z3 = s(s\{s(_B))), _B;!: s(*C);\par
-\pard\fi3024\sb33\sl-336\slmult0 ..,. and so on\par
-\pard\fi1800\sb235\sl-336\slmult0 and the question ! even_by _sum ( Z ) gives:\par
-\pard\fi3096\sb33\sl-336\slmult0 .Z = _A, _A;!: s(s(*B)), _A;!: O; (equivalentto Z=s\{O\};)\par
-\pard\fi-576\li3672\sb4\sl-364\slmult0 .Z = s\{s(_A)), _A;!: O, _A;!: s\{s\{*B)); (equivalentto Z=s\{s\{s(O)));) and so on\par
-\pard\fi1512\sb196\sl-364\slmult0 5. The following program produces very big computation trees:\par
-\pard\fi-72\li1872\sb100\sl-283\slmult0\f2 evennumf(a) % File evennumf.pnt in programs.zip evennumf(f(X,Y)):- evennumf\{X),\par
-\pard\fi4104\sl-201\slmult0 ! evennumf(Y).\par
-\pard\fi1872\sb19\sl-201\slmult0 evennumf(f(X,Y)):- ! evennumf\{X),\par
-\pard\fi4104\sb9\sl-201\slmult0 evennumf(Y) .\par
-\pard\fi1872\sb235\sl-201\slmult0\f1 The question ! evennumf ( Z) has infinitely many answers. The BCN prototype produces them as tollows:\par
-\pard\fi3096\sb192\sl-201\slmult0\f2\fs20 .Z = f(a,a);\par
-\pard\fi3096\sb153\sl-201\slmult0\f1\fs18 .Z = f(f(a,a),f(a,a));\par
-.Z = f(f(a,a),f(f(a,a),f\{a,a)));\par
-\pard\fi3096\sb158\sl-201\slmult0 .Z = f\{f\{a,f\{a,a)),a);\par
-\f2 .Z = f(f\{f\{a,a),a),a);\par
-\f1 .Z = f(a,f\{f\{a,a),a));\par
-\pard\fi3096\sb163\sl-201\slmult0 .Z = f(a,f(a,f(a,a));\par
-.Z = f(f(f(a,a),f\{a,a)),f\{a,a));\par
-\pard\fi3096\sb158\sl-201\slmult0 .Z = f(f\{f\{a,a),f\{a,a)),f\{f\{a,a),f\{a,a)));\par
-.Z = f(f(f\{a,a),a),f(f(a,a),a));\par
-\pard\sb177\sl-201\slmult0 I and so on\par
-\pard\sb484\sl-201\slmult0\f0\fs34\'a1\par
-\pard\sb216\sl-201\slmult0\fs22 j ~\par
-\pard\sb297\sl-201\slmult0\fs14 I\par
-\pard\sb48\sl-201\slmult0\f3\fs20 I\par
-\pard\sl-115\slmult0\f1\fs8\'a1\par
-\pard\sb9\sl-86\slmult0\f0\fs10 I\par
-\pard\sb297\sl-86\slmult0\f3\fs14 1-\par
-\pard\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\fi1512\sl-220\slmult0\fs18 6. The following program was introduced in\par
-\pard\fi2736\sl-220\slmult0 W. Drabent., \i What is,failure?An approach to constructive negation,\par
-\i0 Acta lnformatica, 32:27-59,1995.\par
-\pard\fi1872\sb206\sl-220\slmult0\f2 r:- ! p(X),! q(X). % File Drabent.pnt in programs.zip\par
-\pard\fi1872\sl-220\slmult0\f0 p (X) : -p (X) .\par
-\f2 p(a) ,\par
-\f0 q (a) : -q(a).\par
-\f1 q(X):- !s\{X).\par
-\pard\fi1872\sb9\sl-240\slmult0\f2\fs20 s (a),\par
-\pard\fi1872\sl-220\slmult0\fs18 w(f(X)) " % We have added this clause to extend the signature with f/l, because\par
-\pard\fi2952\sl-220\slmult0 % the BCN prototype infers the signature from the program and the goal,\par
-\pard\fi1872\sb230\sl-220\slmult0\f1 It can be checked that:\par
-\pard\fi3096\sb19\sl-220\slmult0 .! r. One answer : True;\par
-\pard\fi3096\sb134\sl-220\slmult0 .r. fails\par
-\pard\fi1512\sb340\sl-220\slmult0 7. The following program was introduced in\par
-\pard\fi2736\sl-220\slmult0 R.Bart\'e1k, Constructive Negation in CLP(H) , Technical Report No 98/6,\par
-Dept. ofTheoretical Computer Science, Charles Univ., Prague, July 1998.\par
-\pard\fi2808\sb28\sl-220\slmult0 (http://kti. ms.mff.cuni.czJ ~bartak/html/negation.html)\par
-\pard\fi1872\sl-220\slmult0 where you can find a prototype for constructive negation restricted to the case of finite computation trees:\par
-\pard\li1872\sb168\sl-244\slmult0\f2 p(a,f(Z)):- t(Z). % File Bartak.pnt in prograrns,zip p(f(Z),b):- t(Z).\par
-\pard\fi1872\sl-230\slmult0\fs16 t (c) ,\par
-\pard\fi1872\sb216\sl-230\slmult0\f1\fs18 The question ! p (X, Y), in the BCN prototype produces the following five answers:\par
-\pard\fi3096\sb148\sl-230\slmult0 .X = a, Y = _A, _A * f(*B);\par
-\pard\fi3096\sb144\sl-230\slmult0\f2 .X = f(_A), y = _B, _B * b;\par
-.X = _A, _A * f'(*B), _A * a;\par
-\pard\fi3096\sb129\sl-230\slmult0 .X = a, Y = f(_A), _A * c;\par
-\pard\fi3096\sb139\sl-230\slmult0 .X = f(_A), Y = b, _A * c;\par
-\pard\fi1872\sb105\sl-230\slmult0\f1 whose disjunction is equivalent to the disjunction ofthe four answers produced by Bart\'e1k's prototype.\par
-\pard\li1872\sl-225\slmult0 Our answers are more general than Bart\'e1k's ones. This is a consequence ofthe fact that our procedural method works tor intinite computation trees, as well as for finite ones.\par
-\pard\fi288\sb446\sl-225\slmult0 , 8. The following program was introduced in\par
-\pard\li2736\sl-225\slmult0 A. Bossi, M. Fabris and M.C. Meo, \i A bottom-up semanticsforconstructive negation, \i0 In P."V. Hentenryck, editor, \i Proceedings ofthe 11th 1nternational Conference on Logic Programming (ICLP \i0 '94), pages 520-534, MIT Press, 1994.\par
-\pard\li2016\sb158\sl-249\slmult0\f2 p(f(V), Y):- q(V). % File in Bossietal.pnt in prograrns.zip \f1 p(X,g(W)):- !r(W).\par
-\pard\fi2016\sl-225\slmult0\fs14 cq.(a) ,\par
-\pard\li2016\ri6840\sb38\sl-216\slmult0\qj\fs18 r(b):- r(b). r(c):- r(c). \f2 r(c) .\par
-\pard\fi2088\sb201\sl-216\slmult0\f1 It can be checked that the BCN prototype behaves as foIlows:\par
-\pard\fi3096\sb28\sl-216\slmult0 .!p(f(a),Y). fails\par
-\pard\sl-216\slmult0\f0\fs14 I\par
-\pard\sb24\sl-110\slmult0\f1\fs18 , .!p(a,c). Oneanswer:True\par
-\pard\fi3096\sb273\sl-110\slmult0 .! r (c). fails '\par
-\pard\sb1886\sl-110\slmult0\ul\f0\fs26 -\par
-}
-^@
\ No newline at end of file

Deleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf
===================================================================
--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf	2010-12-14 12:00:54 UTC (rev 93)
+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte2.rtf	2010-12-15 16:51:29 UTC (rev 94)
@@ -1,121 +0,0 @@
-{\rtf1\ansi\ansicpg1252\deff0\deflang1034{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fprq2\fcharset0 Arial Narrow;}}
-\viewkind4\uc1\pard\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\sl-201\slmult0\ul\f0\fs16 -\par
-\pard\fi3024\sb1660\sl-220\slmult0\ulnone\f1\fs18 .! r (b). loops infinitely\par
-\pard\fi3024\sb139\sl-220\slmult0 .! r (X) .One answer: X = _A, _A ~ b, _A ~. c; and then, it loops infinitely\par
-\pard\fi3024\sb144\sl-240\slmult0\f2\fs20 .!p(X,Y). Four answers (the last two infinitely repeated);\par
-\pard\fi3744\sb172\sl-220\slmult0\f1\fs18 .X=_A, Y=_B, _B~g(*C), _A~f(*D);\par
-\pard\fi3744\sb105\sl-220\slmult0 .X = f (_A), Y = _B, _B ~ g (* C), _A ~ a;\par
-\pard\fi3744\sb192\sl-220\slmult0 .X=_A, Y=g(c), _A~f(*B);\par
-\pard\fi3744\sb86\sl-240\slmult0\f2\fs20 .X = f(_A), y = g(c), _A ~ a;\par
-\pard\fi3096\sb158\sl-220\slmult0\f1\fs18 .! q (Z). One answer: Z = _A, _A ~ a;\par
-\pard\fi3096\sb139\sl-220\slmult0 .Ip(g(Z),f(Z)),q(Z). Oneanswer: Z = a;\par
-.p(X, g(Y)), q(Y). Twoanswers:\par
-\pard\fi3744\sb120\sl-240\slmult0\f2\fs20 .X = f(a), Y = a;\par
-\pard\fi3744\sb91\sl-240\slmult0 .y = a;\par
-\pard\sb153\sl-220\slmult0\qc\f1\fs18 .! P (X, Y) , r (Y) .Two answers (infinitely repeated):_.\par
-\pard\sb177\sl-220\slmult0\qc .X=_A,Y=c,_A~f(*B);\par
-\pard\fi3744\sb100\sl-240\slmult0\f2\fs20 .X = f(_A), y = c, _A ~ a;\par
-\pard\fi1512\sb321\sl-220\slmult0\f1\fs18 9. The following is a definite program to compute symmetric (non-symmetric) terms (trees) ofthe signature\par
-\pard\fi1872\sb14\sl-220\slmult0\{ \i ala, f/2, \i0 gil) is:\par
-\pard\fi-72\li1872\sb172\sl-249\slmult0\f2\fs20 symmetric(a). % File synunetric.pnt in programs.zip symmetric(g(X));- symmetric(X).\par
-\pard\fi1872\sl-225\slmult0\f1\fs18 symmetric(f(X,Y)) :-mirror(X,Y)."\par
-\pard\fi1800\sb19\sl-225\slmult0\f2\fs20 mirror(a,a) .\par
-\pard\fi1800\sl-196\slmult0 mirror(g(X),g(Y)) :-mirror(X,Y).\par
-\pard\fi1872\sb28\sl-196\slmult0\f1\fs18 mirror(f(X,Y) ,f(Z,W)):- mirror(X,W) ,mirror(Y,Z).\par
-\pard\fi1800\sb230\sl-196\slmult0 The BCN-answers for the question I symmetric (Z) are:\par
-\pard\fi3096\sb182\sl-196\slmult0 .Z = f (a, A), A ~ a;\par
-\pard\fi4320\sl-153\slmult0\f0\fs12 --\'a1\par
-\pard\li3096\sl-360\slmult0\f1\fs18 .Z = f(f(_A,_B),_C), _C ~ f(*E,*D); \'a1 .Z = f(g(_A),_B), _B ~ g(*C); 1. .Z = g(f(a,_A)), -~ ~ a;\par
-\pard\fi3096\sb4\sl-360\slmult0 .Z = g(f(f(_A,_B),_C)), _C ~ f(*E,*D);\par
-\pard\fi3096\sb9\sl-360\slmult0 .Z=g(f(g(_A),_B)),_B~g(*C);\par
-\pard\fi3096\sb14\sl-360\slmult0 .Z = f(g(a),g(_A)), _A ~ a;\par
-\pard\fi3096\sb9\sl-360\slmult0 .Z = f(g(f(_A,_B)) ,g(_C)), _C ~ f(*E,*D);\par
-.Z = f(g(g(_A) ),g(_B)), _B ~ g(*C);\par
-\pard\fi3600\sl-360\slmult0 and so on\par
-\pard\fi2016\sl-326\slmult0 The question ! symmetric (f (X, X) ) also produces an infinite number of answers, whereas the question\par
-\pard\fi2016\sl-240\slmult0 ! symmetric (f (X, X) ) , mirror (X, X) produces (as expected) an infinite computation (without\par
-\pard\fi2016\sb43\sl-240\slmult0\fs20 answers).\par
-\pard\sb2198\sl-240\slmult0\f3\fs8 -~\par
-\pard\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\fi72\sl-220\slmult0\fs18 100 The following example is a variant of a program introduced in\par
-\pard\fi1296\sb28\sl-220\slmult0 DoChan, Constructive Negation Based On The Completed Database, in Ro Ao Kowalski and Ko Ao\par
-\pard\fi1224\sb9\sl-220\slmult0 Bowen, editors, \i Proceedings ofthe Fifth lnternational Conference and Symposium on Logic\par
-\pard\fi1224\sl-220\slmult0 Programming, \i0 pages 111-125, Seatle, 1988. The MIT presso\par
-\pard\li360\sb230\sl-206\slmult0 has_duplicates([ X!Y] );- member(X,Y). % File programs.zip has_duplicates ([ _1 Y] ) : -has_duplicates (Y) .\par
-\pard\fi288\sb38\sl-206\slmult0 member(X,[XI~).\par
-\pard\fi360\sl-201\slmult0 member (X,[ _1 Y] ) : -member1X, Y) .\par
-list_of_digi ts ([ ] ) .\par
-\pard\fi360\sb28\sl-201\slmult0 list_of_digi ts ([ XI Y] ) : -digit (X), list_of_digits (Y) .\par
-\pard\fi360\sl-192\slmult0 digit(l).\par
-\pard\fi360\sb28\sl-192\slmult0 digit(2)..\par
-\pard\fi288\sb38\sl-192\slmult0\f2\fs20 digit(3) .\par
-\pard\fi288\sb33\sl-192\slmult0\fs22 digit(4) .\par
-\pard\fi288\sb14\sl-192\slmult0\fs20 digit(5) .\par
-\pard\fi288\sb326\sl-192\slmult0\f1\fs18 The goal! has_duplicates ([ Xl, X2, X3] ), list_of_digi ts ([ Xl, X2, X3] ) .asks \i for \i0 all the\par
-\pard\fi360\sl-192\slmult0 list ofthree digits without repetitions and the prototype gives fue 60 possible combinations and then fails:\par
-\pard\li1512\ri6048\sl-360\slmult0\qj\f2\fs20 .Xl = 5, X2 = 2, X3 = 1; .Xl = 4, X2 = 2, X3 = 1; .Xl = 3, X2 = 2, X3 = 1; .Xl = 5, X2 = 3, X3 = 1;\par
-\pard\fi1584\sl-345\slmult0\f1\fs18 .o o. and so on\par
-\pard\sl-336\slmult0 11. The following is a program that computes pairs of disjoint lists ofnumbers:\par
-\pard\li288\sb264\sl-192\slmult0 list ([ ] ) .% File disjoint. pnt in programs. zip list([EIL):-element(E), list(L). ..\par
-\pard\fi288\sb57\sl-192\slmult0\f2\fs22 element(O).\par
-\pard\fi288\sb9\sl-192\slmult0\f1\fs18 element (s (E) ) : -element (E) .\par
-\pard\fi288\sb24\sl-192\slmult0 member (X,[ X.I_] ) .\par
-\pard\fi288\sb33\sl-192\slmult0 member (X,[ -' L] ) : -member (X, L) .\par
-\pard\fi288\sb28\sl-192\slmult0 disjoint ([] ,-),\par
-\pard\fi288\sb4\sl-192\slmult0 disjoint([ EfLl] ,L2);- ! member(E,L2), disjoint(Ll,L2).\par
-\pard\fi216\sb302\sl-192\slmult0 Thegoal! disjoint(Ll,L2), list(Ll), list(L2). asksforthepairsofdisjointlistsofnumbers:\par
-\pard\fi1512\sb38\sl-192\slmult0 .Ll = [ O), L2 = [ \i O] \i0 ;\par
-\pard\fi1512\sb177\sl-192\slmult0 .Ll = [ s (O)], L2 = [ s (O)] ;\par
-\pard\fi1512\sb168\sl-192\slmult0 .Ll = [ O, O], L2 = [ O] ;\par
-.Ll = [ O, O], L2 = [ O, O) ;\par
-\pard\fi1512\sb144\sl-192\slmult0 .o.. and so on\par
-\pard\fi10512\sb3984\sl-192\slmult0\f3\fs12 ,\\\par
-\pard\f0\par
-\pard\sl-120\slmult0\f1\par
-\pard\sl-201\slmult0\ul\f0\fs16 -\par
-\pard\fi216\sb1036\sl-201\slmult0\ulnone\f3 j\par
-\pard\fi1584\sb384\sl-220\slmult0\f1\fs18 12. The following is the classical insertion sort program:\par
-\pard\fi-72\li1944\sb168\sl-244\slmult0\f2\fs20 greater(s(_),O). % Filelist_sort.pnt in programs.zip greater(s(El),s(E2)):- greater(E1,E2).\par
-\pard\fi1944\sl-244\slmult0\f1\fs18 insert_sort (E,[ ] ,[ E] ) .\par
-\pard\fi1944\sl-168\slmult0 insert_sort(E1,[ E2IL] ,lE11[ E2IL]]):- ! greater(E1,E2).\par
-\pard\fi-72\li1944\sb19\sl-196\slmult0\f2\fs20 insert_sort(E1,[ E2IL],[ E2INL]):- greater(E1,E2), insert sort(E1,L,NL). \f1 list_sort(L,NL):- sort(L,[],NL). -\par
-\pard\fi1944\sb100\sl-196\slmult0\fs18 sort (( ] , L, L) .\par
-\pard\fi1944\sb19\sl-196\slmult0 sort(( EIL1] ,L2,NL):- insert_sort(E,L2,LAux), sort(L1,LAux,NL).\par
-\pard\fi1944\sb24\sl-196\slmult0 list (( ] ) .\par
-list(( EIL] ):-element(E), list(L).\par
-\pard\fi1944\sb33\sl-196\slmult0\fs22 element (O) .\par
-\pard\fi1944\sl-196\slmult0\fs18 element (s (E) ) : -element (E) .\par
-\pard\fi1944\sb206\sl-196\slmult0 Notice that the variable LAux in the predicate sort/ 3 doesn't arrear in the head, hence it produces. universal\par
-\pard\fi1944\sb72\sl-196\slmult0 quantification\par
-\pard\fi1944\sb244\sl-196\slmult0 Thegoal! list_sort(L1,12), list(11), list(12). givesallthepairsofnumberlistssuchthat\par
-\pard\fi1944\sb38\sl-196\slmult0 the second list is not the ordering ofthe first one:\par
-\pard\fi3168\sb72\sl-196\slmult0 .11=[],12=[0];\par
-\pard\fi3168\sb153\sl-196\slmult0 .L1 = ( s (O)], L2 = [ ] ;\par
-\pard\fi3168\sb158\sl-196\slmult0 .11 = [ s (O)\}, L2 = [ O\} ;\par
-\pard\fi3168\sb168\sl-196\slmult0 .11 = [ ], L2 = ( S (O)\} ;\par
-\pard\fi3744\sb148\sl-196\slmult0 and so on\par
-\pard\fi1584\sb360\sl-196\slmult0 13. This program returns the maximum ora list ofnumbers:\par
-\pard\fi1944\sb211\sl-196\slmult0\f2\fs20 greater(O,E,E). % File max_list.pnt in programs.zip\par
-\pard\fi1944\sb62\sl-196\slmult0 greater(E,O,E) .\par
-\pard\fi1944\sb4\sl-196\slmult0 greater(s(E1),s(E2),s(E3)):- greater(E1,E2,E3).\par
-\pard\fi1944\sb57\sl-196\slmult0\f1\fs18 max_list([] ,0).\par
-\pard\fi1944\sl-168\slmult0 max_list ([ EI;L\} , NE) : -max_list (L, EAux), greater (E, EAux, NE) .\par
-\pard\fi1944\sb81\sl-168\slmult0 list (( \} ) .\par
-\pard\fi1944\sb52\sl-168\slmult0 list([EIL]):-element(E), list(L).\par
-\pard\fi1944\sb67\sl-168\slmult0\fs22 element(O) .\par
-\pard\fi1944\sb28\sl-168\slmult0\fs18 element (s (E) ) : -element (E) .\par
-\pard\fi1944\sb268\sl-168\slmult0 Notice also in this program that the variable EAux in the predicate max list/2 produces universal\par
-\pard\fi1944\sb4\sl-168\slmult0 quantification. -\par
-\pard\fi1944\sb302\sl-168\slmult0 The goal! max_list (1, E), list (1), element (E) .gives all the pairs (Iist ofnumbers, number)\par
-\pard\fi1944\sb110\sl-168\slmult0 such that the number is not the maximum ofthe list:\par
-\pard\fi3168\sb81\sl-168\slmult0\f2\fs20 .1 = [], E = s(O);\par
-\pard\fi3168\sb192\sl-168\slmult0\f1\fs18 .1 = [ O], E = s (O);\par
-\pard\fi3168\sb206\sl-168\slmult0\f2\fs20 .1 = [], E = s(s(O\'bb);\par
-\pard\fi3168\sb182\sl-168\slmult0\f1\fs18 .L = ( O], E = s (s (O));\par
-\pard\fi3744\sb182\sl-168\slmult0 and so on\par
-\pard\fi11160\sb3067\sl-168\slmult0\ul\f3 ,-~ "..\par
-}
-^@
\ No newline at end of file

Deleted: negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf
===================================================================
--- negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf	2010-12-14 12:00:54 UTC (rev 93)
+++ negation/cneg_ciao_Chan/Ejemplos_Negacion/Articuloparte3.rtf	2010-12-15 16:51:29 UTC (rev 94)
@@ -1,69 +0,0 @@
-{\rtf1\ansi\ansicpg1252\deff0\deflang1034{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fmodern\fprq1\fcharset0 Courier New;}{\f3\fswiss\fprq2\fcharset0 Arial Narrow;}}
-\viewkind4\uc1\pard\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\fi1512\sl-220\slmult0\fs18 14. The following program computes the list difference operation:\par
-\pard\fi2016\sb196\sl-240\slmult0\f2\fs20 rernove_list(L,[] ,L). % File rernove_list.pnt in prograrns.zip\par
-\pard\fi2016\sb24\sl-220\slmult0\f1\fs18 rernove_list (Ll,[ El L2] , NL) : -rernove_elernent (Ll, E, LAux) ,\par
-\pard\fi5472\sl-240\slmult0\f2\fs20 rernove_list (LAux, L2,NL) .\par
-\pard\fi2016\sl-220\slmult0\f1\fs18 rernove_elernent ([] ,-,[] ) .\par
-\pard\li2016\sl-216\slmult0 rernove_elernent ([ El! L] , E2, NL) : -equal (El, E2), rernove_elernent (L, E2,NL) . rernove_elernent ([ Ell L] , E2, [ Ell NL] ) : -! equal (El, E2) ,\par
-\pard\fi6120\sb43\sl-216\slmult0\f2\fs20 rernove_elernent(L,E2,NL) .\par
-\pard\fi2016\sl-201\slmult0 equal(E,E).\par
-\pard\fi2016\sb19\sl-201\slmult0\f1\fs18 list ([] ) .\par
-\pard\fi2016\sb24\sl-201\slmult0 list([ EIL]):- elernent(E), list(L).\par
-\pard\fi2016\sb9\sl-201\slmult0 elernent (O) .\par
-\pard\fi2016\sb24\sl-201\slmult0 elernent(s(E)):- elernent(E).\par
-\pard\fi1800\sb225\sl-201\slmult0 Notice that the variable LAux in the predicate rernove_list/ 3 produces universal quantification.\par
-\pard\fi2016\sb264\sl-201\slmult0 Thegoal! rernove_list(Ll,L2,L3), list(Ll), list(L2), list(L3) , givesallthe3-\par
-\pard\fi2016\sb28\sl-201\slmult0 tuples (L I,L2,L3) such that L3 is not \b Ll \b0 -L2.\par
-\pard\fi3096\sb67\sl-201\slmult0 .Ll=[],L2=[0],L3=[0];\par
-\pard\fi3096\sb144\sl-201\slmult0 .Ll = [ ], L2 = [ ], L3 = [ O] ;\par
-\pard\fi3096\sb163\sl-201\slmult0 .Ll = [ O], L2 = [ ], L3 = [ ] ;\par
-\pard\fi3096\sb158\sl-201\slmult0 .Ll = [ ], L2 = [ s (O)], L3 = [ s (O)] ;\par
-\pard\fi3600\sb144\sl-201\slmult0 and so on\par
-\pard\fi1512\sb345\sl-201\slmult0 15. This program computes the sum of a list:\par
-\pard\fi2016\sb230\sl-201\slmult0\f2\fs20 surn_elernent(O,E,E). % File sUIn_list.pnt in programs.zip\par
-\pard\fi2016\sb48\sl-201\slmult0\f1\fs18 sUIn_elernent (s (El) ,E2, s (E3)):- sUIn_elernent (El,E2,E3) .\par
-\pard\fi2016\sb14\sl-201\slmult0 SuIn list ([ ] , O) .\par
-\pard\fi2016\sb28\sl-201\slmult0 surn=:list([ EIL] ,NE):- sUIn_list(L,EAux), sUIn_elernent(E,EAux,NE) ,\par
-\pard\fi2016\sb9\sl-201\slmult0 list ([ ] ) .\par
-\pard\fi2016\sb19\sl-201\slmult0 list([EIL]):- element(E), list(L).\par
-\pard\fi2016\sb9\sl-201\slmult0 elernent(O) .\par
-\pard\fi2016\sb19\sl-201\slmult0 elernent (s (E)) : -elernent (E) ,\par
-\pard\fi1800\sb220\sl-201\slmult0 Notice that the variable EAux in the predicate sUIn_list/2 produces universal quantification.\par
-\pard\fi2016\sb259\sl-201\slmult0 The goal! surn_list (L, E), list (L), elernent (E) .gives all the pairs (Iists ofnumbers, number)\par
-\pard\fi2016\sb57\sl-201\slmult0 such that the number is not the sum afilie list values:\par
-\pard\fi3096\sb38\sl-201\slmult0\f2 .L = [], E = s(O);\par
-\pard\fi3096\sb163\sl-201\slmult0\f1 .L = [ O], E = s (O);\par
-\f2\fs20 .L = [], E = s(s(O));\par
-\pard\fi3096\sb168\sl-201\slmult0\f1\fs18 .L=[O], E=s(s(O));\par
-\pard\fi3672\sb139\sl-201\slmult0 andsoon\par
-\pard\sb3859\sl-201\slmult0\f0\fs22 '-\par
-\pard\fi11016\sl-76\slmult0\ul\f3\fs10 ~--~---~-\par
-\pard\ulnone\f0\fs12\par
-\pard\sl-120\slmult0\f1\par
-\pard\fi10512\sl-158\slmult0\ul ,\par
-\pard\fi9864\sl-801\slmult0\ulnone\fs76 ,\par
-\pard\fi10152\sl-820\slmult0\fs78 ,\par
-\pard\sb744\sl-220\slmult0\fs18 16. The following program computes thejoint oftwo lists:\par
-\pard\fi504\sb163\sl-240\slmult0\f2\fs20 union([] ,L,L). % File union.pnt in prograrns.zip\par
-\pard\fi432\sb38\sl-240\slmult0 union([ EIL1] ,L2,NL):- member(E,L2), union(Ll,L2,NL).\par
-\pard\fi504\sl-220\slmult0\f1\fs18 union([ EIL1\},L2,[ EINL]):- ! member(E,L2), union(Ll,L2,NL).\par
-\pard\fi504\sb14\sl-220\slmult0 member (E,[ El J ) .\par
-\pard\fi504\sl-220\slmult0 member (E,[ _1 L] ) : -member (E, L) .\par
-element (O) .\par
-\pard\fi504\sb4\sl-220\slmult0 element(s(E)):- element(E).\par
-\pard\fi504\sl-220\slmult0 list ([] ) .\par
-list([EIL]):- element(E), list(L).\par
-\pard\fi504\sb211\sl-220\slmult0 Thegoal ! union([O,s(0),s(s(0))],Ll,L2), list(Ll), list(L2).givesallthepairs\par
-\pard\fi504\sb9\sl-220\slmult0 (L 1 ,L2) such that L2 is not the joint of L 1 and the list [O,s(O),s(s(O))\}:\par
-\pard\fi1584\sb48\sl-220\slmult0 .Ll=[],L2=[]i\par
-\pard\fi1584\sb120\sl-220\slmult0 .Ll = [s (O)], L2 = [s(O)].;\par
-\pard\fi1584\sb144\sl-220\slmult0 .Ll = [ s (O)], L2 = [] i\par
-.Ll = [ ], L2 = [ s (O)] i\par
-\pard\fi1584\sb153\sl-220\slmult0 .Ll = [ ], L2 = [ O, O] i\par
-\pard\fi1584\sb134\sl-220\slmult0 .Ll = [ s (O)], L2 = [ s (O), O] ;\par
-\pard\fi1584\sb139\sl-220\slmult0 .= [ s ( O) , O] ;\par
-\pard\fi2160\sb124\sl-220\slmult0 and so on\par
-}
-^@
\ No newline at end of file


--- end of email is here.


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (200, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages offlineimap depends on:
ii  python                  2.6.6-3+squeeze2 interactive high-level object-orie
ii  python-support          1.0.10           automated rebuilding support for P

offlineimap recommends no packages.

Versions of packages offlineimap suggests:
ii  doc-base                0.9.5            utilities to manage online documen
ii  python-kerberos         1.1+svn4895-1+b1 A GSSAPI interface module for Pyth

-- no debconf information



Reply to: