Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #53744 > unrolled thread

ANN: Dogelog Player 1.3.5 (Cyclic Terms)

Started byMild Shock <janburse@fastmail.fm>
First post2025-08-02 15:44 +0200
Last post2025-08-20 15:12 +0200
Articles 3 — 1 participant

Back to article view | Back to comp.lang.java.programmer


Contents

  ANN: Dogelog Player 1.3.5 (Cyclic Terms) Mild Shock <janburse@fastmail.fm> - 2025-08-02 15:44 +0200
    Landin's Knot in Dogelog Player (Re: ANN: Dogelog Player 1.3.5 (Cyclic Terms)) Mild Shock <janburse@fastmail.fm> - 2025-08-15 19:57 +0200
      Program Sharing in Dogelog Player (Re: ANN: Dogelog Player 1.3.5 (Cyclic Terms)) Mild Shock <janburse@fastmail.fm> - 2025-08-20 15:12 +0200

#53744 — ANN: Dogelog Player 1.3.5 (Cyclic Terms)

FromMild Shock <janburse@fastmail.fm>
Date2025-08-02 15:44 +0200
SubjectANN: Dogelog Player 1.3.5 (Cyclic Terms)
Message-ID<106l4on$366q0$3@solani.org>
Dear All,

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

- Enhanced Core:
We provide internally unify_cyclic() which implements
Hopcroft & Karp (1971) algorithm and can deal with
cyclic terms. It is accessible via the built-in
predicate (=)/2 and also used by the Prolog interpreter
for solving clauses. Similar there is an enhanced
(==)/2 available to the end-user.

- Enhanced library(tools):
The debugger is now cyclic term aware and uses a term
factoring based on a new same_term/2 before printing
a goal. The display is simply a conjunction Equation_1,
.., Equation_n, Goal, where the equations are necessary
to break cycles. As before Prolog variables are still
printed by their serial number.

- Enhanced library(session):
The answer display is now cyclic term aware and uses
the same term factoring as the debugger. Answer
substitutions and cycle breaking equations are
interspersed. We tried hard to not break old features,
such as fresh singleton variable names, fresh multiton
variable names and marked variables suppression.

Have Fun!

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

[toc] | [next] | [standalone]


#53745 — Landin's Knot in Dogelog Player (Re: ANN: Dogelog Player 1.3.5 (Cyclic Terms))

FromMild Shock <janburse@fastmail.fm>
Date2025-08-15 19:57 +0200
SubjectLandin's Knot in Dogelog Player (Re: ANN: Dogelog Player 1.3.5 (Cyclic Terms))
Message-ID<107nse8$3cc5$4@solani.org>
In reply to#53744
Dogelog Player is a Prolog system written
in 100% Prolog for the target platforms JavaScript,
Python and Java. We recently introduced the
display of cyclic terms in the top-level.

As a next iteration we turned all built-ins
upside down, gave it either a visitor pattern
or union find, so that they can deal with cyclic
terms. The final step is then to untie Landin's Knot.

The new predicates term_decompose/2 and
term_canonical/2 have found applications in
library(sequence) and library(aggregate). The
result is primarily a structural compare among

cyclic terms, which the end-user can lift
to a canonical compare.

See also:

Landin's Knot in Dogelog Player
https://qiita.com/j4n_bur53/items/f096445f959998768316

Mild Shock schrieb:
> Dear All,
> 
> We are happy to announce a new edition
> of the Dogelog player:
> 
> - Enhanced Core:
> We provide internally unify_cyclic() which implements
> Hopcroft & Karp (1971) algorithm and can deal with
> cyclic terms. It is accessible via the built-in
> predicate (=)/2 and also used by the Prolog interpreter
> for solving clauses. Similar there is an enhanced
> (==)/2 available to the end-user.
> 
> - Enhanced library(tools):
> The debugger is now cyclic term aware and uses a term
> factoring based on a new same_term/2 before printing
> a goal. The display is simply a conjunction Equation_1,
> .., Equation_n, Goal, where the equations are necessary
> to break cycles. As before Prolog variables are still
> printed by their serial number.
> 
> - Enhanced library(session):
> The answer display is now cyclic term aware and uses
> the same term factoring as the debugger. Answer
> substitutions and cycle breaking equations are
> interspersed. We tried hard to not break old features,
> such as fresh singleton variable names, fresh multiton
> variable names and marked variables suppression.
> 
> Have Fun!
> 
> Jan Burse, https://www.herbrand.ai/ , 02.08.2025

[toc] | [prev] | [next] | [standalone]


#53746 — Program Sharing in Dogelog Player (Re: ANN: Dogelog Player 1.3.5 (Cyclic Terms))

FromMild Shock <janburse@fastmail.fm>
Date2025-08-20 15:12 +0200
SubjectProgram Sharing in Dogelog Player (Re: ANN: Dogelog Player 1.3.5 (Cyclic Terms))
Message-ID<1084hke$b2pf$3@solani.org>
In reply to#53745
Dogelog Player is a Prolog system for the
targets JavaScript, Python and Java. It is a mongrel,
half formerly Jekejeke Prolog and half X-Prolog ZIP.
Concerning program sharing (PS) it offers a
compromise between full sharing in Jekejeke Prolog
and no-sharing in X-Prolog ZIP.

Without extra syntax like tuple (x1,..,xn) versus
list [x1,..,xn] we now have frozen Prolog terms
in Dogelog Player. They are beneficial for the
garbage collector and provide safer mutations.
Regression testing shows that our compilation
schemes don’t affect the runtime.

See also:

Program Sharing in Dogelog Player
https://medium.com/@janburse_2989/7b0d9d13cc6f

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web