Wait till they find out about compare/3 (Re: The headache an eGovernment might get from Prolog)

Liste des GroupesRevenir à s logic 
Sujet : Wait till they find out about compare/3 (Re: The headache an eGovernment might get from Prolog)
De : janburse (at) *nospam* fastmail.fm (Mild Shock)
Groupes : sci.logic
Date : 16. Jul 2025, 18:02:07
Autres entêtes
Message-ID : <1058luf$2cep9$3@solani.org>
References : 1
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 SeaMonkey/2.53.21
Hi,
Now somebody was so friendly to spear head
a new Don Quixote attempt in fighting the
windmills of compare/3. Interestingly my
favorite counter example still goes through:
?- X = X-0-9-7-6-5-4-3-2-1, Y = Y-7-5-8-2-4-1,
    compare_with_stack(C, X, Y).
X = X-0-9-7-6-5-4-3-2-1,
Y = Y-7-5-8-2-4-1,
C = (<).
?- H = H-9-7-6-5-4-3-2-1-0, Z = H-9-7-6-5-4-3-2-1, Y = Y-7-5-8-2-4-1,
    compare_with_stack(C, Z, Y).
H = H-9-7-6-5-4-3-2-1-0,
Z = H-9-7-6-5-4-3-2-1,
Y = Y-7-5-8-2-4-1,
C = (>).
?- H = H-9-7-6-5-4-3-2-1-0, Z = H-9-7-6-5-4-3-2-1, X = X-0-9-7-6-5-4-3-2-1,
    compare_with_stack(C, Z, X).
H = H-9-7-6-5-4-3-2-1-0,
Z = X, X = X-0-9-7-6-5-4-3-2-1,
C = (=).
I posted it here in March 2023:
Careful with compare/3 and Brent algorithm
https://swi-prolog.discourse.group/t/careful-with-compare-3-and-brent-algorithm/6413
Its based that rational terms are indeed in
some relation to rational numbers. The above
terms are related to:
10/81 = 0.(123456790) = 0.12345679(012345679)
Bye
Mild Shock schrieb:
Hi,
 That false/0 and not fail/0 is now all over the place,
I don't mean in person but for example here:
 ?- X=f(f(X), X), Y=f(Y, f(Y)), X = Y.
false.
 Is a little didactical nightmare.
 Syntactic unification has mathematical axioms (1978),
to fully formalize unifcation you would need to
formalize both (=)/2 and (≠)/2 (sic!), otherwise you
rely on some negation as failure concept.
 Keith L. Clark, Negation as Failure
https://link.springer.com/chapter/10.1007/978-1-4684-3384-5_11
 You can realize a subset of a mixture of (=)/2
and (≠)/2 in the form of a vanilla unify Prolog
predicate using some of the meta programming
facilities of Prolog, like var/1 and having some
 negation as failure reading:
 /* Vanilla Unify */
unify(V, W) :- var(V), var(W), !, (V \== W -> V = W; true).
unify(V, T) :- var(V), !, V = T.
unify(S, W) :- var(W), !, W = S.
unify(S, T) :- functor(S, F, N), functor(T, F, N),
      S =.. [F|L], T =.. [F|R], maplist(unify, L, R).
 I indeed get:
 ?- X=f(f(X), X), Y=f(Y, f(Y)), unify(X,Y).
false.
 If the vanilla unify/2 already fails then unify
with and without subject to occurs check, will also
fail, and unify with and without ability to
handle rational terms, will also fail:
 Bye

Date Sujet#  Auteur
16 Jul18:01 * The headache an eGovernment might get from Prolog7Mild Shock
16 Jul18:02 `* Wait till they find out about compare/3 (Re: The headache an eGovernment might get from Prolog)6Mild Shock
16 Jul18:02  `* Humans are just overwhelmed by computers (Re: Wait till they find out about compare/3)5Mild Shock
17 Jul09:50   +* Fishy 🐟 in Scryer Prolog and SWI-Prolog (Was: Humans are just overwhelmed by computers)2Mild Shock
17 Jul09:58   i`- So we are essentially all using Trojan Horses 🐎 daily? (Re: Fishy 🐟 in Scryer Prolog and SWI-Prolog)1Mild Shock
20 Jul13:38   `* SWI-Prolog as a Test Bed for Copilots (Re: Humans are just overwhelmed by computers)2Mild Shock
20 Jul14:11    `- Mathematics currently hates Computer Science because of AI (Was: SWI-Prolog as a Test Bed for Copilots)1Mild Shock

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal