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


Groups > comp.lang.prolog > #14518

Prolog Development à la Sigmund Freud (Was: Ulrich Neumerkel is like Ozzy Osbourne)

From Mild Shock <janburse@fastmail.fm>
Newsgroups comp.lang.prolog
Subject Prolog Development à la Sigmund Freud (Was: Ulrich Neumerkel is like Ozzy Osbourne)
Date 2025-05-25 09:46 +0200
Message-ID <100uhte$8rfn$1@solani.org> (permalink)
References <virv4c$eoih$1@solani.org> <virvig$raf2$1@solani.org> <vis014$raku$1@solani.org> <vis06a$rapp$1@solani.org>

Show all headers | View raw


Hi,

The development of Trealla Prolog and Scryer Prolog
looks like a random search in a mental ocean.

It is like Prolog Development à la Sigmund Freud,
you have only to dig deep enough, and a solution

will pop up. Otherwise blame your mother or other
relatives that raised you for supression.

LoL

Bye

Examples: Still clueless how to detect singletons?
https://github.com/trealla-prolog/trealla/issues/743

Mild Shock schrieb:
> Hi,
> 
> But we will not promote this test cases as testing anything
> concering Precise Garbage collection. They are rather F.U.D.
> 
> There are other better test cases. See what Trealla Prolog was
> using to improve their Tail Call Optimization (TCO).
> 
> Bye
> 
> Mild Shock schrieb:
>> Hi,
>>
>> A further test case with choice points is this test case:
>>
>> run5(Z) :- p(_,_,Z).
>> p(X,Y,Z) :- (Z > 0-> f(X), g(Y), dummy ; g(Y), f(X), dummy).
>> g([g|X]) :- g(X).
>> dummy.
>>
>> But the choice points go away, if Z > 0 the then (->)/2 will
>> cut away any choice point. And if not Z > 0 the usual
>> optimization is anyway to have no choice point.
>>
>> So we are back to the problem of minor garbage collection.
>> If we attack the problems with major garbage collection,
>> we can run all examples indefinitely. We only need to
>>
>> find a high enough major garbage collection frequency.
>> Our usual setting is Period: 60, Dirty: 60. With changing
>> the setting to Period: 15, Dirty: 15 we can run the
>>
>> viable test cases for straight 5 minutes long:
>>
>> ?- suite.
>> % Zeit 300966 ms, GC 51595 ms, Lips 2026565, Uhr 04.12.2024 12:01
>> % Zeit 300622 ms, GC 59049 ms, Lips 1929996, Uhr 04.12.2024 12:06
>> % Zeit 301023 ms, GC 62909 ms, Lips 1911479, Uhr 04.12.2024 12:11
>> % Zeit 300192 ms, GC 58244 ms, Lips 1925432, Uhr 04.12.2024 12:16
>> % Zeit 300065 ms, GC 52253 ms, Lips 1944909, Uhr 04.12.2024 12:21
>> true.
>>
>> The test code was:
>>
>> suite :-
>>     time(sys_trap(time_out(run1, 300000), _, true)),
>>     time(sys_trap(time_out(run2, 300000), _, true)),
>>     time(sys_trap(time_out(run3, 300000), _, true)),
>>     time(sys_trap(time_out(run5(0), 300000), _, true)),
>>     time(sys_trap(time_out(run5(1), 300000), _, true)).
>>
>> Bye
>>
>> Mild Shock schrieb:
>>> Hi,
>>>
>>> This test case is also extremly cringe.
>>> In our Prolog system it conflicts with another
>>> optimization, that is in place to reduce the
>>>
>>> length of instantiation chains.
>>>
>>> run4 :- run(_).
>>> run(X) :- f(X).
>>> run(X) :- X == [].
>>>
>>> Our Prolog system doesn't create a variable
>>> at all for the first clause of run. It speculates
>>> that return value variables are passed around and
>>>
>>> thus resulting in no extra instantiation chains.
>>> So it passes the anonymous variable from run4
>>> to the call of f/1. But since the anonymous variable
>>>
>>> is from the run(_) call site, and since there is
>>> a choice point. The anonymous variable is always
>>> reachable never carbage collected, similarly chains
>>>
>>> _=[f,..,f|T] will never get garbage collected.
>>> In as far the test case fails after a while with
>>> memory overflow.
>>>
>>> Bye
>>>
>>> Mild Shock schrieb:
>>>> Hi,
>>>>
>>>> Ulrich Neumerkel is like Ozzy Osbourne.
>>>> He is making me paranoid. Especially this
>>>> F.U.D. here stole one week of my life.
>>>>
>>>> Precise Garbage Collection in Prolog
>>>> https://www.swi-prolog.org/download/publications/lifegc.pdf
>>>>
>>>> The test cases make no sense at all!
>>>> Take this test case run1, similar to run2
>>>> and run3:
>>>>
>>>> run1 :- f(_).
>>>> f([f|X]) :- f(X).
>>>>
>>>> You will never find this in real world.
>>>> Perpetual processes usually have a different
>>>> pattern of loop state transition.
>>>>
>>>> Also its virtually impossible to garbage collect
>>>> via minor incremental garbage collection. We
>>>> might find a chain X=[f,..,f,Y] and collect
>>>>
>>>> it. But Xn is then colored as old. And instantiation
>>>> of an old variable gets on the changed list, and
>>>> so a new chain Y=[f,..,f,Z] will not be reclaimed,
>>>>
>>>> so that the beast can be only reclaimed via
>>>> major garbage collection.
>>>>
>>>> Bye
>>>>
>>>> P.S.: Maybe there is a chance to solve it
>>>> nevertheless via minor garbage collection, but
>>>> its very difficult. I had something in
>>>>
>>>> formerly Jekejeke Prolog via reference counting.
>>>> But not sure how to bring it to a Prolog
>>>> system without reference counting.
>>>>
>>>>
>>>>
>>>
>>
> 

Back to comp.lang.prolog | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Ulrich Neumerkel is like Ozzy Osbourne Mild Shock <janburse@fastmail.fm> - 2024-12-05 11:26 +0100
  Re: Ulrich Neumerkel is like Ozzy Osbourne Mild Shock <janburse@fastmail.fm> - 2024-12-05 11:33 +0100
    Re: Ulrich Neumerkel is like Ozzy Osbourne Mild Shock <janburse@fastmail.fm> - 2024-12-05 11:41 +0100
      Re: Ulrich Neumerkel is like Ozzy Osbourne Mild Shock <janburse@fastmail.fm> - 2024-12-05 11:44 +0100
        Prolog Development à la Sigmund Freud (Was: Ulrich Neumerkel is like Ozzy Osbourne) Mild Shock <janburse@fastmail.fm> - 2025-05-25 09:46 +0200
          variable ordering guarantees in term_singletons/2 (Was: Prolog Development à la Sigmund Freud) Mild Shock <janburse@fastmail.fm> - 2025-05-25 09:57 +0200
            My stupid Dogelog Player falls back to _<number> (Was: variable ordering guarantees in term_singletons/2) Mild Shock <janburse@fastmail.fm> - 2025-05-25 10:18 +0200
            the desease of C code overkill (Was: variable ordering guarantees in term_singletons/2) Mild Shock <janburse@fastmail.fm> - 2025-05-28 16:12 +0200
              Quintus Folks were not hating Prolog that much (Was: the desease of C code overkill) Mild Shock <janburse@fastmail.fm> - 2025-05-28 16:32 +0200
  Ciao Prolog inspired Test Case (Re: Ulrich Neumerkel is like Ozzy Osbourne) Mild Shock <janburse@fastmail.fm> - 2025-05-27 07:45 +0200

csiph-web