| Deutsch English Français Italiano |
|
<vtas0v$11p8c$1@solani.org> View for Bookmarking (what is this?) Look up another Usenet article |
Path: news.eternal-september.org!eternal-september.org!feeder3.eternal-september.org!2.eu.feeder.erje.net!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: Mild Shock <janburse@fastmail.fm>
Newsgroups: comp.lang.prolog
Subject: Elaboration Test 1 (Re: How to project variables? [PIP-4711: Marked
Variables])
Date: Fri, 11 Apr 2025 12:47:57 +0200
Message-ID: <vtas0v$11p8c$1@solani.org>
References: <vtarm5$11ove$1@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 11 Apr 2025 10:47:59 -0000 (UTC)
Injection-Info: solani.org;
logging-data="1107212"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101
Firefox/128.0 SeaMonkey/2.53.20
Cancel-Lock: sha1:0m15DLORRcZ3tlxE3cyXDzbLiww=
X-User-ID: eJwNwokRACEIBLCWWJ4VyxGU/ku4mySMYC9n0GN+OoIbvkvI6kzrc8tuxQM21izKweRWDYWeCbhYCu9kv5IPQeEU8Q==
In-Reply-To: <vtarm5$11ove$1@solani.org>
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
>
>