Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.prolog > #14750
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Newsgroups | comp.lang.prolog |
| Subject | Scryer Prolog has the most useless max_depth (Re: Novacore goes Bisimulation: Scryer Prolog is Slow!) |
| Date | 2025-08-02 13:43 +0200 |
| Message-ID | <106ktkr$38lbm$1@solani.org> (permalink) |
| References | <105vr4s$2r116$1@solani.org> |
Take this cute example:
?- [user].
dfa(Q0, [Q3,Q4]) :-
Q0 = f(Q1, Q2),
Q1 = f(Q3, Q2),
Q2 = f(Q1, Q4),
Q4 = f(Q1, Q4),
Q3 = f(Q3, Q2).
Try this example in Scryer-Prolog:
/* Scryer Prolog 0.9.4-547 */
?- dfa(X, Y).
%%% tons and tons of print out
(...)))),f(f(f(...,f(...)),f(f(...),...)),f(f(...,...),
f(f(...),...)))),f(f(f(f(...,f(...)),f(...,...)),
f(f(...,f(...)),f(f(...),...))),f(f(f(...,f(...)),f(...,...)),
f(f(...,f(...)),f(f(...),...)))))))))))))))))))].
Was more expecting something like
/* SWI-Prolog 9.3.26 */
?- dfa(X, Y).
X = f(f(_S1, _S3), _S3), % where
_S1 = f(_S1, _S3),
_S2 = f(f(_S1, _S3), _S2),
_S3 = f(f(_S1, _S3), _S2),
Y = [_S1, _S2].
Mild Shock schrieb:
> Hi,
>
> Having fun with Bisimulation, and a new test
> suite of nasty circular pairs. But how store
> circular pairs, if clauses do not support
>
> circular terms. Well chop it up into equations,
> I create 1000 such equation pairs:
>
> test([A = c(A, B), C = c(A, D), E = n, _ = c(F, B),
> F = c(C, C), G = c(G, D), D = c(E, C), B = n],
> [H = c(H, I), J = c(K, I), L = c(L, I), I = c(M, N),
> O = c(K, J), N = n, K = c(K, J), M = c(K, O)]).
> Etc..
>
> The pairs are nasty because the usual compare_with_stack/2
> chokes on them. Here some results:
>
> /* SWI-Prolog 9.3.26 */
> ?- time((between(1,30,_), part, fail; true)).
> % 540,118 inferences, 0.047 CPU in 0.041 seconds (115% CPU, 11522517 Lips)
> true.
>
> /* Trealla Prolog 2.78.40 */
> ?- time((between(1,30,_), part, fail; true)).
> % Time elapsed 0.113s, 1143903 Inferences, 10.157 MLips
> true.
>
> /* Scryer Prolog 0.9.4-417 */
> ?- time((between(1,30,_), part, fail; true)).
> % CPU time: 0.226s, 1_117_809 inferences
> true.
>
> /* Dogelog Player 1.3.5 */
> ?- time((between(1,30,_), part2, fail; true)).
> % Zeit 309 ms, GC 0 ms, Lips 8693718, Uhr 25.07.2025 13:47
> true.
>
> The amazing thing is, I compared a 100% Prolog
> implementation, so there is a lot of head room
> for improvement:
>
> part2 :-
> bitest(X,Y), X ~~ Y, fail; true.
>
> The operator (~~)/2 is part of library(math),
> and has been implemented with same_term/2 so far.
>
> Bye
>
Back to comp.lang.prolog | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Novacore goes Bisimulation: Scryer Prolog is Slow! Mild Shock <janburse@fastmail.fm> - 2025-07-25 13:51 +0200
Is Mild Shock going rogue? (Was: Novacore goes Bisimulation: Scryer Prolog is Slow!) Mild Shock <janburse@fastmail.fm> - 2025-07-25 14:07 +0200
Is Mostowski Collapse a professional mathematician (Was: Is Mild Shock going rogue?) Mild Shock <janburse@fastmail.fm> - 2025-07-25 14:16 +0200
New Project Name: NovaCore becomes VibeCore (Re: Is Mostowski Collapse a professional mathematician) Mild Shock <janburse@fastmail.fm> - 2025-07-25 14:42 +0200
Nice Printing Error Scryer Prolog (Was: Novacore goes Bisimulation: Scryer Prolog is Slow!) Mild Shock <janburse@fastmail.fm> - 2025-07-26 21:33 +0200
Dynamic unify_with_occurs_check/2 speed-up (Was: Nice Printing Error Scryer Prolog) Mild Shock <janburse@fastmail.fm> - 2025-07-26 21:37 +0200
The End of Deutsch-Schorr-Waite [cycle_detection.rs] (Was: Novacore goes Bisimulation: Scryer Prolog is Slow!) Mild Shock <janburse@fastmail.fm> - 2025-07-28 10:50 +0200
Backtracking Branching Association List (Re: The End of Deutsch-Schorr-Waite [cycle_detection.rs]) Mild Shock <janburse@fastmail.fm> - 2025-07-28 11:02 +0200
Do it like in acyclic_decompose/3 (Re: Backtracking Branching Association List) Mild Shock <janburse@fastmail.fm> - 2025-07-28 11:38 +0200
Cache-Trashing vs Cache-Friendly [Code Example] (Re: Do it like in acyclic_decompose/3) Mild Shock <janburse@fastmail.fm> - 2025-07-28 17:27 +0200
Entering the Age of Rational Trees (2025) (Was: The End of Deutsch-Schorr-Waite [cycle_detection.rs]) Mild Shock <janburse@fastmail.fm> - 2025-08-16 13:02 +0200
The End of Debray Allocator (Was: The End of Deutsch-Schorr-Waite [cycle_detection.rs]) Mild Shock <janburse@fastmail.fm> - 2025-08-24 14:44 +0200
The pairs are nasty, otherwise not always slow! (Re: Novacore goes Bisimulation: Scryer Prolog is Slow!) Mild Shock <janburse@fastmail.fm> - 2025-07-30 14:45 +0200
It was painful for my GC, but fixed now (Re: The pairs are nasty, otherwise not always slow!) Mild Shock <janburse@fastmail.fm> - 2025-07-30 14:51 +0200
Scryer Prolog has the most useless max_depth (Re: Novacore goes Bisimulation: Scryer Prolog is Slow!) Mild Shock <janburse@fastmail.fm> - 2025-08-02 13:43 +0200
Novacore goes native (=)/2 and (==)/2 bisimulation (Was: Scryer Prolog has the most useless max_depth) Mild Shock <janburse@fastmail.fm> - 2025-08-02 14:45 +0200
csiph-web