Deutsch English Français Italiano |
<v6k2kf$dp3g$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: Re: --- OLCOTT BANNED --- Date: Tue, 9 Jul 2024 21:21:51 +0200 Message-ID: <v6k2kf$dp3g$1@solani.org> References: <v6iufa$cd7u$4@solani.org> <v6jk49$1ctoi$13@dont-email.me> <v6jkfa$1ctoi$14@dont-email.me> <v6jnhj$dij7$1@solani.org> <v6jp3e$1er0g$1@dont-email.me> <v6k1li$dolj$1@solani.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Tue, 9 Jul 2024 19:21:51 -0000 (UTC) Injection-Info: solani.org; logging-data="451696"; 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:maPulKCUCaxmGgBvMBQCyU4cwCs= X-User-ID: eJwFwQkBwDAIA0BLLYQAcjoe/xJ2Z8rLctAIW1v9MnJuPxFlXczMSRNfiDRaCK9z6Dt8kckxlLZHq2kS+gM/hRSP In-Reply-To: <v6k1li$dolj$1@solani.org> Bytes: 5971 Lines: 168 Only a complete nut head can write nonsense like: >> It detects cycles in the directed graph of the expression's >> evaluation sequence as a paraphrase of Clocksin & Mellish indicates. You can try yourself and see that it is a "prevent" and not a "detect" of cyclic terms. Just go online, and you will find: Example 02: Website Sandbox https://www.xlog.ch/runtab/doclet/docs/04_tutor/reference/example02/package.html And now you can try unify_with_occurs_check/2, it will never allow a cyclic structure in memory, if the two arguments are already acyclic, so it does a "prevent" and not a "detect": /* Import Richard O'Keefes METUTL */ :- ensure_loaded(library(compat)). /* Will not detect something but prevent something */ ?- unify_with_occurs_check(X, [f|X]). fail. On the other hand the predicate acyclic_term/1 is made to detect something, but and doesn't prevent something. You can try in the Website Sandbox: /* Will not prevent something but detect something */ ?- X = [f|X], \+ acyclic_term(X). X = <cyclic term> . Also to the best of my knowledge its not possible to bootstrap detect from prevention. So there is no way to define: /* not possible derive detect from prevent */ acyclic_term(X) :- ... /* make use of unify_with_occurs_check/2 */ ... Mild Shock schrieb: > In unification with occurs check cycles in a graph > are prevented before they happen. You are such a moron. > The "occurs check" does that. It checks V ∈ T, BEFORE > a variable V gets instantiated to T. > > On the other hand acyclic_term/1 can figure out whether > a term as variable V instantiated to T, where V ∈ T, > AFTER a cycle allowing unification has been performed, > i.e. the ordinary (=)/2. > > You are an idiot, you confuse these predicate: > > - acyclic_term/1 > > With this predicate: > > - unify_with_occurs_check/2. > > Usually unify_with_occurs_check/2 is not implemented as: > > /* not how it is done */ > unify_with_occurs_check(X,Y) :- > X = Y, > acyclic_term(X). > > The problem is the above wouldn't allow enough fast failure. > > Instead it is usually implemented as follows, > Just consult Rihcard O'Keefes File METUTL.PL : > > % unify(?X, ?Y) > % Try to unify X and Y, wih occurs check. > % Further down in this file is the Occurs Check. > > unify(X, Y) :- > var(X), > var(Y), > !, > X = Y. % want unify(X,X) > unify(X, Y) :- > var(X), > !, > occurs_check(Y, X), % X is not in Y > X = Y. > unify(X, Y) :- > var(Y), > !, > occurs_check(X, Y), % Y is not in X > X = Y. > unify(X, Y) :- > atomic(X), > !, > X = Y. > unify(X, Y) :- > functor(X, F, N), > functor(Y, F, N), > unify(N, X, Y). > > unify(0, _, _) :- !. > unify(N, X, Y) :- > arg(N, X, Xn), > arg(N, Y, Yn), > unify(Xn, Yn), > M is N-1, > !, > unify(M, X, Y). > > occurs_check(Term, Var) :- > var(Term), > !, > Term \== Var. > occurs_check(Term, Var) :- > functor(Term, _, Arity), > occurs_check(Arity, Term, Var). > occurs_check(0, _, _) :- !. > occurs_check(N, Term, Var) :- > arg(N, Term, Arg), > occurs_check(Arg, Var), > M is N-1, > !, > occurs_check(M, Term, Var). > > http://www.picat-lang.org/bprolog/publib/metutl.html > > Bye > > olcott schrieb: >> On 7/9/2024 11:12 AM, Mild Shock wrote: >>> >>> Fuck off asshole. Prolog is irrelevant for >>> the minimal logic posts. I only made this >>> joke, but it has nothing to do with occurs check: >>> >>> > Meanwhile I am going back to my tinkering with my >>> > Prolog system, which even provides a more primitive >>> > logic than minimal logic, pure Prolog is minimal >>> > >>> > logic without embedded implication. >>> >>> You even don't know what the occurs check is, >>> and for what it is used. >>> >> >> It detects cycles in the directed graph of the expression's >> evaluation sequence as a paraphrase of Clocksin & Mellish indicates. >> >>> If the occurs check is used, then >>> olcott schrieb: >>>> On 7/9/2024 10:14 AM, olcott wrote: >>>>> On 7/9/2024 4:04 AM, Mild Shock wrote: >>>>>> >>>>>> 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. >>>>> >>>>> I initially thought that you would agree with me >>>>> about Prolog and not dismiss what I said out-of-hand >>>>> without review. >>>>> >>>> >>> >> >