How to project variables? [PIP-4711: Marked Variables]
Sujet : How to project variables? [PIP-4711: Marked Variables]
De : janburse (at) *nospam* fastmail.fm (Mild Shock)
Groupes : comp.lang.prologDate : 11. Apr 2025, 11:42:11
Autres entêtes
Message-ID : <vtarm5$11ove$1@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
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
Haut de la page
Les messages affichés proviennent d'usenet.
NewsPortal