Elaboration Test 3 (Re: How to project variables? [PIP-4711: Marked Variables])

Liste des GroupesRevenir à cl prolog 
Sujet : Elaboration Test 3 (Re: How to project variables? [PIP-4711: Marked Variables])
De : janburse (at) *nospam* fastmail.fm (Mild Shock)
Groupes : comp.lang.prolog
Date : 11. Apr 2025, 11:59:12
Autres entêtes
Message-ID : <vtasmn$11lt5$1@solani.org>
References : 1 2 3
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0 SeaMonkey/2.53.20
Hi,
We can also make a test case where both SWI-Prolog
and Trealla Prolog fail. Still Dogelog Player does
it as specified.
It is only the following query:
q(Y, Z, _X) :- _X = Y, Z = f(Y,Y).
The projection would be:
p(Y, Z) :- q(Y, Z, _X).
?- p(Y, Z).
Z = f(Y,Y).
Here are the testing results:
Trealla Prolog 2.68.11-5: Fail
?- _X = Y, Z = f(Y,Y).
    Z = f(_X,_X).    %%% expected Z = f(Y,Y)
?- Y = _X, Z = f(Y,Y).
    Z = f(Y,Y).
SWI-Prolog 9.3.21: Fail
?- _X = Y, Z = f(Y,Y).
Z = f(Y,Y).
?- Y = _X, Z = f(Y,Y).
Y = _X,
Z = f(_X,_X).    %%% expected Z = f(Y,Y)
Dogelog Player 1.3.2: Pass
?- _X = Y, Z = f(Y,Y).
Z = f(Y, Y).
?- Y = _X, Z = f(Y,Y).
Z = f(Y, Y).
Bye
Mild Shock schrieb:
Test 2 is only minorly more complex than Test 1.
It is only the following query:
 q(Y, Z, _X) :- _X = Y, _X = Z.
 The projection would be:
 p(Y, Z) :- q(Y, Z, _X).
 ?- p(Y, Z).
Y = Z.
 Here are the testing results:
 Trealla Prolog 2.68.11-5: Fail
 ?- _X = Y, _X = Z.
    true.    %%% expected Z = Y
?- Y = _X, _X = Z.
    Z = Y.
?- _X = Y, Z = _X.
    true.    %%% expected Z = Y
?- Y = _X, Z = _X.
    Z = Y.
 SWI-Prolog 9.3.21: Pass
 ?- _X = Y, _X = Z.
Y = Z.
?- Y = _X, _X = Z.
Y = Z.
?- _X = Y, Z = _X.
Y = Z.
?- Y = _X, Z = _X.
Y = Z.
 Dogelog Player 1.3.2: Pass
 ?- _X = Y, _X = Z.
Y = Z.
?- Y = _X, _X = Z.
Y = Z.
?- _X = Y, Z = _X.
Y = Z.
?- Y = _X, Z = _X.
Y = Z.
 Mild Shock schrieb:
Test 1 is probably the most simple test case.
It is only the following query:
>
q(Y, _X) :- _X = Y.
>
The projection would be:
>
p(Y) :- q(Y, _X).
>
?- p(Y).
true.
>
Here are the testing results:
>
Trealla Prolog 2.68.11-5: Pass
>
?- _X = Y.
    true.
?- Y = _X.
    true.
>
SWI-Prolog 9.3.21: Fail
>
?- _X = Y.
true.
?- Y = _X.
Y = _X.    %%% expected true
>
Dogelog Player 1.3.2: Pass
>
?- _X = Y.
true.
?- Y = _X.
true.
>
Mild Shock schrieb:
Hi,
>
Now I am writing a new Prolog Improvement Proposal
(PIP), which is PIP-4711: Marked Variables. Can
we easily specify what marked variables should
>
do in the top-level? Oh yes. If you have a query
that contains unmarked and marked variables,
just like this here:
>
?- q(N1, .., Nn, _M1, .., _Mm)
>
Then the above query should work as:
>
p(N1, .., Nn) :- q(N1, .., Nn, _M1, .., _Mm).
>
?- p(N1, .., Nn).
>
The above specification assures that no information
is lost, because it relies on the existential
quantifier of Clark Completion. One can read the
>
definition of q/n logically in first order logic
as follows, namely with existential quantifiers:
>
p(N1, .., Nn) <=> EXISTS(_M1, .., _Mm):q(N1, .., Nn, _M1, .., _Mm)
>
Do some Prolog systems satisfy the above specification.
Amazingly most Prolog systems cannot do it. They
have problems archiving the above result, in very
>
small test cases. The main problem is some permutation
dependency, how the query q/n+m is formulated. It
seems most Prolog systems do not use a
>
permutation agnostic algorithm, whereas the
first order logic specification doesn't have some
permutation dependency and should be immune.
>
                 Test1   Test2
Trealla Prolog  Pass    Fail
SWI-Prolog      Fail    Pass
Dogelog Player  Pass    Pass
>
Bye
>
>
>
 

Date Sujet#  Auteur
11 Apr 25 * How to project variables? [PIP-4711: Marked Variables]4Mild Shock
11 Apr 25 `* Elaboration Test 1 (Re: How to project variables? [PIP-4711: Marked Variables])3Mild Shock
11 Apr 25  `* Elaboration Test 2 (Re: How to project variables? [PIP-4711: Marked Variables])2Mild Shock
11 Apr 25   `- Elaboration Test 3 (Re: How to project variables? [PIP-4711: Marked Variables])1Mild Shock

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal