• GENESIS MISSION: Loosing it over Deep Pokets [Business wants A-Life](Was: Prolog Education Group clueless about the AI Boom?)

    From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Wed Nov 26 18:07:13 2025
    From Newsgroup: comp.lang.prolog

    Hi,

    Ha Ha, USA is shitting once again its pants:

    New age of AI‑accelerated innovation and discovery
    that can solve the most challenging problems of this century.
    Executive Orders November 24, 2025
    https://www.youtube.com/watch?v=FQ92hV1R4TA

    Governement, acadamenia and standard bodies
    are loosing it over Deep Pokets. They will
    be the next savages in a land of humanoid

    robots and techno lords. This is just the
    after math of neo capitalism privatization
    in and out. So most of the Deep Pokets are

    even governement, academia fundeded. But the
    humanoid robots will make the Deep Pokets
    even more deeper.

    Bye

    P.S.: So whats the blind spot in this troubled
    times. Mentifex gave a glimps:

    // aLife() (artificial life) is the Robot AI Mind main loop.
    function aLife() { // ATM 27oct2002; or your ID & date.
    Security(); // For human control and operation of the AI.
    Sensorium(); // Audition; other human-robot input senses.
    Emotion(); // Quasi-physiological influence upon thought.
    Think(); // Syntax and vocabulary of natural languages.
    Volition(); // Contemplative selection of motor options.
    Motorium(); // Robotic activation of motor initiatives.
    if (life == true) { // If the AI has not met with misadventure,
    fyi = "aLife: calling itself; t = "+t+"; rejuvenations ="+rjc;
    Voice(); // Display the Voice:brain "For Your Information".
    TID=window.setTimeout("aLife();",rsvp); // Call aLife again. }
    // End of quasi-loop time-delay of rsvp-value milliseconds. }
    // End of one pass through the aLife Mind that repeats itself. https://mind.sourceforge.net/Mind.html

    Thats what business wants, this A-Life. And
    20-30 years a ago it was a blooming research
    field and you could toy around with genetic

    programming on a commodore C64. Now genetic programming
    is done in simulated 3D worlds, and Elon Optimus will
    soon be employed as hotel personell in the UAV.

    Mild Shock schrieb:
    Concerning this boring nonsense:

    https://book.simply-logical.space/src/text/2_part_ii/5.3.html#

    Funny idea that anybody would be interested just now in
    the year 2025 in things like teaching breadth first
    search versus depth first search, or even be “mystified”
    by such stuff. Its extremly trivial stuff:

    Insert your favorite tree traversal pictures here.

    Its even not artificial intelligence neither has anything
    to do with mathematical logic, rather belongs to computer
    science and discrete mathematics which you have in
    1st year university

    courses, making it moot to call it “simply logical”. It
    reminds me of the idea of teaching how wax candles work
    to dumb down students, when just light bulbs have been
    invented. If this is the outcome

    of the Prolog Education Group 2.0, then good night.


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Tue Feb 10 12:05:21 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    The WebPL shunting experiment still resonates. Dogelog
    Players assumption is implicit shunting through
    unification variable bind preferences, derived

    from how unification is called. So I rearranged
    the implementation of member/2 a little bit, and
    now I get, a less invasive version, doesn't modify L:

    /* Dogelog Player 2.1.5 Preview */

    /* Not Invasive */
    ?- T = T, L = [X,Y,Z], member(T, L), write(L), nl, fail; true.
    [_0, _1, _2]
    [_0, _1, _2]
    [_0, _1, _2]
    true.

    /* Not Invasive */
    ?- L = [X,Y,Z], T = T, member(T, L), write(L), nl, fail; true.
    [_3, _4, _5]
    [_3, _4, _5]
    [_3, _4, _5]
    true.

    We can compare with SWI-Prolog:

    /* SWI-Prolog 10.1.1 */
    /* Invasive */
    ?- T = T, L = [X,Y,Z], member(T, L), write(L), nl, fail; true. [_13280,_13294,_13300]
    [_13288,_13280,_13300]
    [_13288,_13294,_13280]
    true.

    /* Not Invasive */
    ?- L = [X,Y,Z], T = T, member(T, L), write(L), nl, fail; true. [_18762,_18768,_18774]
    [_18762,_18768,_18774]
    [_18762,_18768,_18774]
    true.

    And the result for Scryer Prolog:

    /* Scryer Prolog 0.10 */
    /* Invasive */
    ?- T = T, L = [X,Y,Z], member(T, L), write(L), nl, fail; true.
    [_112,_131,_138]
    [_123,_112,_138]
    [_123,_131,_112]
    true.

    /* Invasive */
    ?- L = [X,Y,Z], T = T, member(T, L), write(L), nl, fail; true.
    [_117,_125,_133]
    [_117,_120,_133]
    [_117,_125,_120]
    true.

    Bye

    Mild Shock schrieb:
    Hi,

    Here some test results when testing
    Desktop and not the Web. With Desktop
    Prolog versions I find:

    /* SWI-Prolog 9.3.28 */
    % 7,506,637 inferences, 0.578 CPU in 0.567 seconds

    /* Dogelog Player 1.3.6 for Java (16.08.2025) */
    % Zeit 803 ms, GC 0 ms, Lips 9367988, Uhr 17.08.2025 18:03

    /* Scryer Prolog 0.9.4-592 */
    % CPU time: 0.838s, 7_517_613 inferences

    /* Trealla Prolog 2.82.12 */
    % Time elapsed 2.315s, 11263917 Inferences, 4.866 MLips

    Bye

    Mild Shock schrieb:
    Hi,

    The paper by Shalin and Carlson from 1991
    did not yet ring a bell. But it suggest testing
    something with primes and freeze. Lets do

    primes as suggested but without freeze. SWI-Prolog
    seems not to the OG of GC. Putting aside Shalin
    and Carlson, its an typical example of a lot of

    intermediate results, that can be discarded by
    a garbage collection. Every candidate number that
    is not a prime number can be remove from the

    trail they get unreachable in the first clause
    of search/3. Besides this obvious unreachability
    task, I don't have statistics or don't see immediately

    where large variable instantiation chains are supposed
    to be created. At least not in my Prolog system, since
    a result variable is passed without binding it to a

    local variable, this "shunting" happens independent
    of neck tests and the "shunting" there. The result variable
    passing is extremly simple to implement and could

    be what is effective here besides the reachability thingy.
    At least the 1 ms GC time in Dogelog Player show that
    the reachability thingy is the minor effort or optimization

    to get nice performance:


    /* WebPL GC */
    (1846.1ms)

    /* Dogelog Player 1.3.6 for JavaScript (16.08.2025) */
    % Zeit 2992 ms, GC 1 ms, Lips 2514202, Uhr 17.08.2025 17:44

    /* SWI-Prolog WASM */
    (4204.2ms)

    /* Trealla Prolog WASM */
    (23568.9ms)

    The test code was:

    test :-
        len(L, 1000),
        primes(L, _).

    primes([], 1).
    primes([J|L], J) :-
        primes(L, I),
        K is I+1,
        search(L, K, J).

    search(L, I, J) :-
        mem(X, L),
        I mod X =:= 0, !,
        K is I+1,
        search(L, K, J).
    search(_, I, I).

    mem(X, [X|_]).
    mem(X, [_|Y]) :-
        mem(X, Y).

    len([], 0) :- !.
    len([_|L], N) :-
        N > 0,
        M is N-1,
        len(L, M).

    Bye


    --- Synchronet 3.21b-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Sat Mar 14 20:40:00 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    Somebody just changed the Vanilla Prolog
    meta interpreter from:

    solve(true) :- !.
    solve((A,B)) :- !, solve(A), solve(B).
    solve(H) :- clause(H, B), solve(B).

    Into a cycle checking interpreter. It makes
    certain Datalog programs and queries complete,
    but it doesn't make Horn clauses complete:

    solve(A) :- solve(A, []).

    solve(true, _) :- !.
    solve((A,B), L) :- !, solve(A, L), solve(B, L).
    solve(A, L) :- member(B, L), A =@= B, !, fail.
    solve(H, L) :- clause(H, B), solve(B, [H|L]).

    Bye

    P.S.: Here is a proof for Datalog:

    Since Datalog has only constants and variables,
    no function symbols at all, there are only finitely
    many literals at runtime modulo (=@=)/2.

    Q.E.D.

    dart200 schrieb:
    The following claim from p246 of Turing’s seminal paper On Computable
    Numbers is a fallacy:

    /the problem of enumerating computable sequences is equivalent to the
    problem of finding out whether a given number is the D.N of a circle-
    free machine, and we have no general process for doing this in a finite
    number of steps/

    For any given computable sequence, there are _infinite_ circle-free
    machines which compute that particular sequence. Not only can various
    machines differ significantly in the specific steps to produce the same output, machines can be changed in superficial ways that do not
    meaningfully affect the steps of computation, akin to modern no-op
    statements or unreachable code

    The problem of enumerating computable sequences, however, only
    depends on successfully identifying _one_ circle-free machine that
    computes any given computable sequences. While identifying more than one
    can certainly be done, it is _not_ a requirement for enumerating
    computable sequences, as _one_ machine computing a sequence /suffices to output any and all digits of that sequence/

    The problem of enumerating computable sequences is therefore _not_
    actually equivalent to a _general process_ of enumerating circle-free machines, as there is no need to identify all circle-free machines which compute any given computable sequence

    Said problem is only equivalent to a _limited process_ of enumerating
    circle-free machines. The machine which identifies circle-free machines
    only needs the limited power of determining _at least one_ circle-free
    machine for any given computable sequence, _not all_ machines for any
    given computable sequence

    Because of this fallacy, the proof found on the following p247, where
    an ill-defined machine 𝓗 (which attempts and fails to compute the
    direct diagonal β’) is found to be undecidable in respect to circle-free decider 𝓓; does not then prove an impossibility for enumerating
    computable sequences. As the problem of enumerating /all circle-free
    machines/ is _not_ equivalent to that of enumerating /just computable sequences/



    Mild Shock schrieb:
    Concerning this boring nonsense:

    https://book.simply-logical.space/src/text/2_part_ii/5.3.html#

    Funny idea that anybody would be interested just now in
    the year 2025 in things like teaching breadth first
    search versus depth first search, or even be “mystified”
    by such stuff. Its extremly trivial stuff:

    Insert your favorite tree traversal pictures here.

    Its even not artificial intelligence neither has anything
    to do with mathematical logic, rather belongs to computer
    science and discrete mathematics which you have in
    1st year university

    courses, making it moot to call it “simply logical”. It
    reminds me of the idea of teaching how wax candles work
    to dumb down students, when just light bulbs have been
    invented. If this is the outcome

    of the Prolog Education Group 2.0, then good night.


    --- Synchronet 3.21d-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to comp.lang.prolog on Mon Mar 16 11:01:10 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    For Datalog solve/2 will indeed always terminate.
    But it will be also utterly disappointing for
    left recursive problems:

    path(X, Y) :- path(X, Z), edge(Z, Y).
    path(X, Y) :- edge(X, Y).

    With traces/checking for cycles but without some
    fixpoint iteration, it would only compute the
    extension path = edge.

    What is the cure to this desease, if one wants to
    keep the body left to right computation sequencing?
    Well OLD resolution is one classic:

    OLD Resolution with Tabulation
    Sato et al. - July 1986
    https://www.researchgate.net/publication/220986525

    Bye

    Mild Shock schrieb:
    Hi,

    Somebody just changed the Vanilla Prolog
    meta interpreter from:

    solve(true) :- !.
    solve((A,B)) :- !, solve(A), solve(B).
    solve(H) :- clause(H, B), solve(B).

    Into a cycle checking interpreter. It makes
    certain Datalog programs and queries complete,
    but it doesn't make Horn clauses complete:

    solve(A) :- solve(A, []).

    solve(true, _) :- !.
    solve((A,B), L) :- !, solve(A, L), solve(B, L).
    solve(A, L) :- member(B, L), A =@= B, !, fail.
    solve(H, L) :- clause(H, B), solve(B, [H|L]).

    Bye

    P.S.: Here is a proof for Datalog:

    Since Datalog has only constants and variables,
    no function symbols at all, there are only finitely
    many literals at runtime modulo (=@=)/2.

    Q.E.D.

    dart200 schrieb:
    The following claim from p246 of Turing’s seminal paper On Computable
    Numbers is a fallacy:

    /the problem of enumerating computable sequences is equivalent to the
    problem of finding out whether a given number is the D.N of a circle-
    free machine, and we have no general process for doing this in a finite number of steps/

    For any given computable sequence, there are _infinite_ circle-free
    machines which compute that particular sequence. Not only can various machines differ significantly in the specific steps to produce the same output, machines can be changed in superficial ways that do not
    meaningfully affect the steps of computation, akin to modern no-op statements or unreachable code

    The problem of enumerating computable sequences, however, only
    depends on successfully identifying _one_ circle-free machine that
    computes any given computable sequences. While identifying more than one
    can certainly be done, it is _not_ a requirement for enumerating
    computable sequences, as _one_ machine computing a sequence /suffices to output any and all digits of that sequence/

    The problem of enumerating computable sequences is therefore _not_
    actually equivalent to a _general process_ of enumerating circle-free machines, as there is no need to identify all circle-free machines which compute any given computable sequence

    Said problem is only equivalent to a _limited process_ of enumerating
    circle-free machines. The machine which identifies circle-free machines
    only needs the limited power of determining _at least one_ circle-free machine for any given computable sequence, _not all_ machines for any
    given computable sequence

    Because of this fallacy, the proof found on the following p247, where
    an ill-defined machine 𝓗 (which attempts and fails to compute the
    direct diagonal β’) is found to be undecidable in respect to circle-free decider 𝓓; does not then prove an impossibility for enumerating computable sequences. As the problem of enumerating /all circle-free machines/ is _not_ equivalent to that of enumerating /just computable sequences/



    Mild Shock schrieb:
    Concerning this boring nonsense:

    https://book.simply-logical.space/src/text/2_part_ii/5.3.html#

    Funny idea that anybody would be interested just now in
    the year 2025 in things like teaching breadth first
    search versus depth first search, or even be “mystified”
    by such stuff. Its extremly trivial stuff:

    Insert your favorite tree traversal pictures here.

    Its even not artificial intelligence neither has anything
    to do with mathematical logic, rather belongs to computer
    science and discrete mathematics which you have in
    1st year university

    courses, making it moot to call it “simply logical”. It
    reminds me of the idea of teaching how wax candles work
    to dumb down students, when just light bulbs have been
    invented. If this is the outcome

    of the Prolog Education Group 2.0, then good night.



    --- Synchronet 3.21d-Linux NewsLink 1.2