Deutsch English Français Italiano |
<v6l429$devq$1@solani.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Mild Shock <janburse@fastmail.fm> Newsgroups: sci.logic Subject: --- OLCOTT BANNED --- Date: Wed, 10 Jul 2024 06:52:24 +0200 Message-ID: <v6l429$devq$1@solani.org> References: <v6iufa$cd7u$4@solani.org> <v6l2sg$deia$1@solani.org> <v6l3lv$deu2$1@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Wed, 10 Jul 2024 04:52:25 -0000 (UTC) Injection-Info: solani.org; logging-data="441338"; mail-complaints-to="abuse@news.solani.org" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.18.2 Cancel-Lock: sha1:SpuKUBj+yBBJ+i3mIG7UvF3TrmU= X-User-ID: eJwFwYEBwDAEBMCVeHwYRxP2H6F3YVTe4wx6bOyYlFZT+qavFUBwazpDF88nLEsz+D7QQUr6JMrlFFXxAypwE5w= In-Reply-To: <v6l3lv$deu2$1@solani.org> Bytes: 3964 Lines: 108 Hi, This one is also nice, succeeds as well, both: /* SWI-Prolog 9.3.2 */ ?- A = [f,g|A], B = [g,f|B], A = [f|B]. A = [f, g|A], B = [g, f|B]. ?- A = [f,g|A], B = [g,f|B], B = [g|A]. A = [f, g|A], B = [g, f|B]. You cannot use unify_with_occurs_check/2 in the above case, to ban it, since A and B are already cyclic. When the input is already cyclic, in SWI-Prolog, unify_with_occurs_check/2 lets pass the unification, turns it into a kind of bisimulation basically: ?- A = [f,g|A], B = [g,f|B], unify_with_occurs_check(A, [f|B]). A = [f, g|A], B = [g, f|B]. ?- A = [f,g|A], B = [g,f|B], unify_with_occurs_check(B, [g|A]). A = [f, g|A], B = [g, f|B]. The above two examples never lead to an instantiation, V = T, where an occurs check would be needed. Because A and B are already ground, they don't have any uninstantiated variables anymore: ?- A = [f,g|A], ground(A). A = [f, g|A]. ?- B = [g,f|B], ground(B). B = [g, f|B]. Bye Mild Shock schrieb: > Hi, > > Here you see SWI-Prolog deal with cyclic terms: > > /* SWI-Prolog 9.3.2 */ > ?- X = [f,f|X], Y = [f|Y], X = Y. > X = Y, Y = [f|Y]. > > Clocksin & Mellish refer to the formal > definition of Unification in Resolution Theorem > proving, and not in Prolog. They write: > > > According to the formal definition of Unification, > > this kind of "infinite term" should never come to exist. > > Thus Prolog systems that allow a term to match an > > uninstantiated subterm of itself do not act correctly > > as Resolution theorem provers. > > Thats from page 254 of this Clocksin and Mellish: > > Programming in Prolog - Using the ISO Standard > Fifth Edition - See PDF page 268 > Clocksin & Mellish - 2003 > https://athena.ecs.csus.edu/~mei/logicp/Programming_in_Prolog.pdf > > Bye > > Mild Shock schrieb: >> Hi, >> >> Pete Olcott is full of bullshit. He writes >> nonsense like for example: >> >> "According to the formal definition of Unification, this >> kind of “infinite term” should never come to exist" >> https://philarchive.org/archive/OLCPDPv4 >> >> Thats not true. There are different formal definitions >> of Unification. There is Unification with and without >> occurs check. >> >> There are algorithms that can make Unification without >> occurs check terminate, and such an algorithm is >> for example implemented in SWI-Prolog. >> >> They were pioneered by Alain Colmerauer himself, the >> co-inventor of Prolog, who even wrote a paper about >> the subject: >> >> PROLOG AND INFINITE TREES >> Alain Colmerauer - 1982 >> Universite Aix-Marseille >> https://www.softwarepreservation.org/projects/prolog/marseille/doc/Colmerauer-InfTree-1982.pdf >> >> Bye >> >> Mild Shock schrieb: >>> >>> The full time idiot olcott should be >>> put in jail, and the key should be thrown away. >>> All he can do is spam other peoples threads >>> with his crazy lovebird chirping. >> >