Subject: Goal Outlining for Dogelog Player (Re: Just-in-Time Indexing in Dogelog Player)
Hi,
The handling of cyclic terms inside Dogelog
Player is relatively young, it only arrived
end of 2025, almost 4 years after the inception
of the Prolog system. We found a leftover
subsumes_term/2. Making it fit for cyclic terms
triggered an interesting venture
into negation as failure.
We found a charming implementation, not extremly
fast failure capable, but easy to bootstrap
from built-ins such as term_variables/2,
(=)/2 and (==)/2. To overcome some (\+)/1
performance limitation we introduced goal
inlining and outline to the clause
translation and untranslation.
Bye
See also:
Goal Outlining for Dogelog Player
https://medium.com/2989/f589172c7f8e
Mild Shock schrieb:
Hi,
Dogelog Player is a Prolog system for the
JavaScript, Python and Java target that borrows
much of its design from formerly Jekejeke Prolog.
While Dogelog Player shipped only with first
argument indexing for almost 4 years, we now added
multi-argument just-in-time indexing.
For programs one sees fewer spurious choice
points. For the dynamic database, in queries
one sees a speed-up of almost a factor M, where
M is the size of the index map. For updates the
speed-up materializes less, due to the overhead
of our 100% Prolog written insert operations.
Bye
See also:
Just-in-Time Indexing in Dogelog Player
https://medium.com/2989/69200b90ccec
Mild Shock schrieb:
Dear All,
We are happy to announce a new edition
of the Dogelog Player:
- Enhanced core (0rNaN):
Special values are numbers, but neither
integer nor float. We introduced a further
special value, namely 0rNaN which stands
for not a number. Unlike the IEEE proposal,
we didn't extend arithmetic comparisons such
as max/3, (<)/2, etc... Only parsing/unparsing
and foreign function interface (FFI)
support was introduced.
- Precomputed Hashes:
Java programmers are familiar with the
hashCode() contract and with the programming
pattern of a cached hash. We went a step further
and gave the already existing frozen compounds
of Dogelog player an additional precomputed
.hash field. With amazing speed-up for built-ins
such as term_hash/2, (==)/2, etc..
- Assertion Sharing:
Precomputed hashes shine when combined with
NO-COPY mechanisms in the dynamic database,
notoriously difficult for WAM machines but
easy for Heap based Prolog systems such as
Dogelog Player. So far we provided only
program sharing (PS), this release also
features assertion sharing (AS).
Have Fun!
Jan Burse, https://www.herbrand.ai/ , 20.03.2026
--- PyGate Linux v1.5.13
* Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)