• ANN: Dogelog Player 2.2.1 (Just-in-Time Indexing)

    From Mild Shock@[email protected] to comp.lang.prolog on Thu Apr 9 19:59:42 2026
    From Newsgroup: comp.lang.prolog

    Dear All,

    We are happy to announce a new edition of
    the Dogelog Player:

    - Enhanced core (IEEE Comparisons):
    The special value 0rNaN received comparison
    drawn from IEEE. The built-in (=\=)/2 now
    implements not quiet, while the built-ins
    (=:=)/2, (<)/2, etc. now implement quiet.
    The built-ins (@<)/2, etc. now implement
    quiet ordered, while the built-ins min/3
    and max/3 now implement number.

    - Goal Inlining/Outlining:
    We noticed performance problems of negation
    as failure (\+)/2 when the argument is a
    complex goal. Many Prolog systems don't
    suffer from this problem. We implemented
    a form of goal expansion, but with reversibility,
    so that rewritten (\+)/2 calls are seen
    again in listing/[0,1] and trace/0.

    - Just-in-Time Indexing:
    The scope is currently MAX_INDEX = 2
    indiscriminantly for static and dynamic
    predicates. The system can dynamically
    allocate 1st or 2nd argument indexes when
    needed, and even create combined 1st+2nd
    argument indexes. The enhancement comes
    with a new jiti_list/[0,1] utilitiy.

    Have Fun!

    Jan Burse, https://www.herbrand.ai/ , 09.04.2026
    --- Synchronet 3.21f-Linux NewsLink 1.2
  • From Mild Shock@[email protected] to comp.lang.prolog on Thu Apr 16 12:36:39 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    Our new library silkworm for predicate tabling tries
    to do the same, as the library railgun for finite
    domain constraints. Namely provide a portable library
    that is only based on the ISO core standard. Due to
    a series of recent improvements of Dogelog Player
    the tabling directive is now competitive.

    While we reach similar performance like SWI-Prolog
    for Datalog examples, our system parallels the
    XSB-Prolog performance for non-Datalog examples.
    What is missing are non-wellfounded forms of
    recursion and polymorphic adornments. We are
    currently working on addressing both issues.

    Bye

    See also:

    Tabling Directive for Dogelog Player
    https://medium.com/2989/aa2f40a14b58

    Mild Shock schrieb:
    Dear All,

    We are happy to announce a new edition of
    the Dogelog Player:

    - Enhanced core (IEEE Comparisons):
    The special value 0rNaN received comparison
    drawn from IEEE. The built-in (=\=)/2 now
    implements not quiet, while the built-ins
    (=:=)/2, (<)/2, etc. now implement quiet.
    The built-ins (@<)/2, etc. now implement
    quiet ordered, while the built-ins min/3
    and max/3 now implement number.

    - Goal Inlining/Outlining:
    We noticed performance problems of negation
    as failure (\+)/2 when the argument is a
    complex goal. Many Prolog systems don't
    suffer from this problem. We implemented
    a form of goal expansion, but with reversibility,
    so that rewritten (\+)/2 calls are seen
    again in listing/[0,1] and trace/0.

    - Just-in-Time Indexing:
    The scope is currently MAX_INDEX = 2
    indiscriminantly for static and dynamic
    predicates. The system can dynamically
    allocate 1st or 2nd argument indexes when
    needed, and even create combined 1st+2nd
    argument indexes. The enhancement comes
    with a new jiti_list/[0,1] utilitiy.

    Have Fun!

    Jan Burse, https://www.herbrand.ai/ , 09.04.2026

    --- Synchronet 3.21f-Linux NewsLink 1.2
  • From Mild Shock@[email protected] to comp.lang.prolog on Sat Apr 18 16:14:33 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    Dogelog Player is a Prolog system for the JavaScript,
    Python and Java target. This is a further iteration
    of our new tabling directive. In this take we added
    deep indexing to the dynamic database, facing the
    question tries or not tries? With amazing results
    for a rewriting problem.

    The example is limited to xor, which has associativity
    (A xor B) xor C = A xor (B xor C) and commutativity
    A xor B = B xor A. We can demonstrate what a normal
    form delivers. The prehashes, and not some tries,
    lower the time complexity, but the XSB intern option
    is still 5x times ahead.

    Bye

    See also:

    Egg SAT in Dogelog Player
    https://medium.com/2989/7d309abcd835

    Mild Shock schrieb:
    Hi,

    Our new library silkworm for predicate tabling tries
    to do the same, as the library railgun for finite
    domain constraints. Namely provide a portable library
    that is only based on the ISO core standard. Due to
    a series of recent improvements of Dogelog Player
    the tabling directive is now competitive.

    While we reach similar performance like SWI-Prolog
    for Datalog examples, our system parallels the
    XSB-Prolog performance for non-Datalog examples.
    What is missing are non-wellfounded forms of
    recursion and polymorphic adornments. We are
    currently working on addressing both issues.

    Bye

    See also:

    Tabling Directive for Dogelog Player
    https://medium.com/2989/aa2f40a14b58

    Mild Shock schrieb:
    Dear All,

    We are happy to announce a new edition of
    the Dogelog Player:

    - Enhanced core (IEEE Comparisons):
    The special value 0rNaN received comparison
    drawn from IEEE. The built-in (=\=)/2 now
    implements not quiet, while the built-ins
    (=:=)/2, (<)/2, etc. now implement quiet.
    The built-ins (@<)/2, etc. now implement
    quiet ordered, while the built-ins min/3
    and max/3 now implement number.

    - Goal Inlining/Outlining:
    We noticed performance problems of negation
    as failure (\+)/2 when the argument is a
    complex goal. Many Prolog systems don't
    suffer from this problem. We implemented
    a form of goal expansion, but with reversibility,
    so that rewritten (\+)/2 calls are seen
    again in listing/[0,1] and trace/0.

    - Just-in-Time Indexing:
    The scope is currently MAX_INDEX = 2
    indiscriminantly for static and dynamic
    predicates. The system can dynamically
    allocate 1st or 2nd argument indexes when
    needed, and even create combined 1st+2nd
    argument indexes. The enhancement comes
    with a new jiti_list/[0,1] utilitiy.

    Have Fun!

    Jan Burse, https://www.herbrand.ai/ , 09.04.2026


    --- Synchronet 3.21f-Linux NewsLink 1.2