• Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    From Mild Shock@3:633/10 to All on Tue Aug 18 16:26:08 2026
    Hi,

    Sometimes I think the Loderunner Enemy AI
    was way ahead of its time:

    Lode Runner - Broderbund - 1983 - Apple II https://www.youtube.com/watch?v=pJZJepU8law

    Meanwhile SWI-Prolog Prologers even don't know
    whether a Prolog text is CNF or DNF:

    Sets of rules as conjunctions and/or disjunctions https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779

    No Wonder that the EyeProlog "why" feature produces
    nonsense. Even a Flea circus is less crazy.

    Bye

    P.S.: If only there would exist something like
    universities where one can take a basic course in
    FOL, and then a world wide web, where one can

    lookup clark equational theory, clark completion,
    curry howard correspondence, etc.. etc..

    Mild Shock schrieb:
    Hi,

    Obviously to generate AI Surprises,
    you have to stand on the shoulder of
    giants. Otherwise you will not discover

    surprises, right? Only mediocre deja vues.
    For this purpose, and maybe otherwise
    related, in a discussion concerning the future

    of the library, Marvin Minsky and Edward A.
    Feigenbaum endorsed the idea for books
    to ?talk to each other?:

    LET DOCUMENTS TALK TO EACH OTHER
    Z. CHEN - 1993
    doi.org/10.1108/eb026910

    Now we have:

    THE MACHINES ARE STUDYING
    THE HUMANS ARE SCROLLING
    https://9gag.com/gag/a9yQ16o

    Bye

    P.S.: But who was Marvin Minsky, and would it
    be important to use symbolic AI?

    The Perceptron Controversy
    Yuxi Liu - 2024
    https://yuxi.ml/essays/perceptron-controversy

    Mild Shock schrieb:
    Hi,

    How it started:

    Filming a vitamin B12 photoreceptor in action
    https://www.psi.ch/de/news/science-features/filming-a-vitamin-b12-photoreceptor-in-action


    How its going:

    Elon Musk's potential FEL route could challenge EUV lithography
    https://www.kucoin.com/news/flash/elon-musk-s-potential-fel-route-could-challenge-euv-lithography


    Who will win the Nano Atom mover race,

    will the USA OutChip its competitor China
    and its supplier Asia in the next years?

    Bye

    Mild Shock schrieb:
    Hi,

    Recently there was a paper somebody mentioning
    a flit doing a ACK or NACK, to express
    backpressure inside a Network on a Chip.

    But what is a flit? It seems multiple
    flits can be used to create the message
    passing in one directiob before the

    ACK or NACK in the other direction?

    "The growing need for performance from
    computing systems drove the industry into
    the multi-core and many-core arena. In this
    setup, the execution of a kernel (a program)
    is split across multiple processors and the
    computation happens in parallel

    Flits represent logical units of information,
    while phits represent the physical domain,
    that is, phits represent the number of bits
    that can be transferred in parallel in a
    single cycle. Consider the Cray T3D. It has
    an interconnection network which uses

    flit level message flow control wherein each
    flit is composed of eight 16-bit phits. That
    means its flit size is 128bits and phit size
    is 16bits. Also consider the IBM SP2 switch.
    It also uses the flit level message flow
    control, but its flit size is equal to its
    phit size, which is set to 8 bits."
    https://en.wikipedia.org/wiki/Flit_(computer_networking)#Example

    Well my idea how this is realized in silicon
    is rather foggy, I mean even the Hack project
    from Nand 2 Tetris, does not show some gate level
    schemes for flits and phits.

    Could be an interesting extension. But somehow
    the image of flits and phits inspired my channel
    objects here below. But I am afraid they are fire
    and forget, no ACK and NACK:

    ć-WAM Contest: 1 Million Packets with Prolog
    https://medium.com/2989/ec3e91551773

    Its amazing that a max_size(1) buffer
    can beat an unbounded buffer!

    LoL

    Bye

    Mild Shock schrieb:
    Hi,

    How it started, NVIDIA being cool:

    NCCL provides routines such as all-gather,
    all-reduce, broadcast, reduce, reduce-scatter,
    and point-to-point send and receive. These
    routines are optimized to achieve high
    bandwidth and low latency over PCIe,
    NVIDIA NVLink?, and other high-speed
    interconnects within a node and over
    NVIDIA networking across nodes.
    https://developer.nvidia.com/nccl

    How its going, vLLM trying to be cool:

    [RFC]: Native Weight Syncing APIs
    However, there are no standardized methods for
    performing online weight syncing. Open source projects
    like SkyRL, VeRL, and TRL need to include their
    own implementations of the weight syncing
    infrastructure, leading to added complexity
    for developers seeking to adopt vLLM as their
    inference server for post-training workloads.
    https://github.com/vllm-project/vllm/issues/31848

    How much Workers are enough? I guess it depends
    on I/O parallelism, CPU Memory parallelism, CPU
    Processing parallelism, and now also

    GPU Memory parallelism and GPU Processing
    parallelism, and last but least you might have
    a couple DMAs sitting here and there,

    or even invoking a sort of RDMA. Quite amazing!

    Bye

    Mild Shock schrieb:
    Hi,

    Well there are two viewpoint, the "client"
    of the GPU, which is the CPU, and the "server"
    of the GPU, which is the command processor

    queue of the GPU device. So basically as
    a CPU client I can write the memory area,
    that is later mapped to my GPU code storage.

    And this way have a compiler, even written
    in Prolog, that compiles pi-WAM to my Hack VM,
    that can then be then deployed to GPU.

    You could also try the same with a Tiny
    LISP VM. And a grown up LISP to act as
    the compiler. Would be a similar exercise.

    Have Fun!

    Bye

    Mild Shock schrieb:
    Hi,

    I've also added comp.theory so Mild Shock can comment.

    that has different
    *’ sizeof ( void * ), and
    *’ sizeof ( void (*)( void ) ),

    Could indicate a data RAM and code ROM model.
    Which has then the advantage of:

    Modern operating systems like Windows 11
    enforce strict Data Execution Prevention (DEP)
    (or NX/XD bit security features) to prevent
    malicious programs from injecting and executing
    code inside data-only memory regions.
    https://root-nation.com/en/soft-en/lifehacks/en-dep-windows-all-about/ >>>>>>

    I adopted data RAM and code ROM model for
    pi-WAM from Hack, which has the same separation:

    Slide 58, Hack Computer
    https://drive.google.com/file/d/1Z_fxYmmRNXTkAzmZ6YMoX9NXZIRVCKiw/view >>>>>>

    But my motivation was not Johnny Depp prevention.
    Rather the caching of GPUs. Because WGSL
    allows storage annotations read_write and

    read. I use read_write for the data RAM
    of my Hack VM variant, and read for the
    code ROM of my Hack VM variant. You can

    see that here, its open source:

    @group(0) @binding(0) var<storage, read> code: array<i32>;
    @group(0) @binding(1) var<storage, read_write> state: array<i32>;

    11.4 Giga Lips with a Budget Laptop
    https://github.com/Jean-Luc-Picard-2021/gigabudget

    Hope this Helps!

    Bye

    Johann 'Myrkraverk' Oskarsson schrieb:
    On 03/08/2026 6:28 PM, David Brown wrote:
    On 03/08/2026 11:41, Richard Harnden wrote:
    On 03/08/2026 09:16, David Brown wrote:

    On most targets, function pointers are the same size as void* >>>>>>>>>> pointers. But there are exceptions, with some small
    microcontrollers and DSPs having different kinds of pointers >>>>>>>>>> with different sizes, depending on the memory space involved. >>>>>>>>>> I have yet to see a situation where there was any reason for >>>>>>>>>> storing a function address in a "void*" rather than a more >>>>>>>>>> appropriate typedef, such as :

    ’’’’’typedef void (*FVoid)(void);

    dlsym requires that pointer-to-function is compatible with a void* >>>>>>>>>

    As I say, I have yet to see a situation where using void* for >>>>>>>> function pointers was more appropriate than using a function
    pointer type.’ If the OS system calls or standard OS libraries >>>>>>>> makes it a requirement that function pointers are converted to >>>>>>>> or from void* for some calls, then of course you need to follow >>>>>>>> those requirements - it's the people who designed the interfaces >>>>>>>> that made questionable design choices.


    Nope, you're wrong.’ You're dead wrong.’ The world isn't built on C, >>>>>>> even though here in comp.lang.c we like to pretend it is.

    Several language environments allow function generation on the fly, >>>>>>> these functions need to be garbage collected.’ Common Lisp is an >>>>>>> example, therefore comp.lang.lisp is added to this discussion.

    I've also added comp.theory so Mild Shock can comment.

    You will have to go out of your way to make a computer architecture >>>>>>> incompatible with garbage collected and heap allocated binary code, >>>>>>> something I've been told SBCL does internally [1] to create an
    archi-
    tecture that has different

    *’ sizeof ( void * ), and
    *’ sizeof ( void (*)( void ) ),

    and when you do that, I'll just claim you're making a /malicious >>>>>>> computer architecture/ and refuse to use it.


    [1] I've not looked at the code, but told the garbage collector can >>>>>>> and will at least move the code around, if not collect it.








    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Mild Shock@3:633/10 to All on Tue Aug 18 16:50:06 2026
    Subject: How to shoot yourself in the foot (Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    Hi,

    The biggest joke, is to have logic somewhere
    in procedure and somewhere in declarative, and
    try to see different takes on logic.

    They really don't know what this mantra means:

    Algorithm = Logic + Control

    And cannot relate it to the ideas of declarative
    reading and procedural reading. The problem is
    a too lax introduction of this notions,

    prematurely before the notion "logic" is
    even understood. But nobody understands the
    meaning of the term "logic", i.e. a set of

    supposedly tautological sentences, as under-
    stood by mathematical logic. There is a subtle
    error again to conflate it with a "calculus",

    so this website has a very misleanding title,
    although they try hard to not commit the fallacy,
    and have subtitles "Proof System" and "Logic Level":

    Welcome to LogicProof
    https://6ximik9.github.io/naturalDeduction/

    Then there is this moron:

    There is only one ?minimal logic?. The term denotes Johansson?s
    Minimalkalkl [1937] ? intuitionistic logic without ex falso quodlibet ?
    and nothing else. No rival system competes for the name. https://vidal-rosset.net/rule-correspondence-F.html

    Of course there are rival "Proof Systems" aka
    calculi, even when the "Logic Level" is minimal
    logic. It is as if Joseph Vidal-Rosset doesn't

    understand basic German. You have to look behind
    "Minimalkalkl" to find "Minimallogic". Right?
    To identify calculus with logic, is maybe a 1930's

    fallacy, but then we had model theory besides
    proof theory, and people should be more educated
    now. Model theory can be also expanded to

    non-classical logics and even minimal logic, to
    give a purely semantic reading. Ok some modern
    morons think they need to invoke the word "algebraic".

    Bye

    Mild Shock schrieb:
    Hi,

    Sometimes I think the Loderunner Enemy AI
    was way ahead of its time:

    Lode Runner - Broderbund - 1983 - Apple II https://www.youtube.com/watch?v=pJZJepU8law

    Meanwhile SWI-Prolog Prologers even don't know
    whether a Prolog text is CNF or DNF:

    Sets of rules as conjunctions and/or disjunctions https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779


    No Wonder that the EyeProlog "why" feature produces
    nonsense. Even a Flea circus is less crazy.

    Bye

    P.S.: If only there would exist something like
    universities where one can take a basic course in
    FOL, and then a world wide web, where one can

    lookup clark equational theory, clark completion,
    curry howard correspondence, etc.. etc..

    Mild Shock schrieb:
    Hi,

    Obviously to generate AI Surprises,
    you have to stand on the shoulder of
    giants. Otherwise you will not discover

    surprises, right? Only mediocre deja vues.
    For this purpose, and maybe otherwise
    related, in a discussion concerning the future

    of the library, Marvin Minsky and Edward A.
    Feigenbaum endorsed the idea for books
    to ?talk to each other?:

    LET DOCUMENTS TALK TO EACH OTHER
    Z. CHEN - 1993
    doi.org/10.1108/eb026910

    Now we have:

    THE MACHINES ARE STUDYING
    THE HUMANS ARE SCROLLING
    https://9gag.com/gag/a9yQ16o

    Bye

    P.S.: But who was Marvin Minsky, and would it
    be important to use symbolic AI?

    The Perceptron Controversy
    Yuxi Liu - 2024
    https://yuxi.ml/essays/perceptron-controversy

    Mild Shock schrieb:
    Hi,

    How it started:

    Filming a vitamin B12 photoreceptor in action
    https://www.psi.ch/de/news/science-features/filming-a-vitamin-b12-photoreceptor-in-action


    How its going:

    Elon Musk's potential FEL route could challenge EUV lithography
    https://www.kucoin.com/news/flash/elon-musk-s-potential-fel-route-could-challenge-euv-lithography


    Who will win the Nano Atom mover race,

    will the USA OutChip its competitor China
    and its supplier Asia in the next years?

    Bye

    Mild Shock schrieb:
    Hi,

    Recently there was a paper somebody mentioning
    a flit doing a ACK or NACK, to express
    backpressure inside a Network on a Chip.

    But what is a flit? It seems multiple
    flits can be used to create the message
    passing in one directiob before the

    ACK or NACK in the other direction?

    "The growing need for performance from
    computing systems drove the industry into
    the multi-core and many-core arena. In this
    setup, the execution of a kernel (a program)
    is split across multiple processors and the
    computation happens in parallel

    Flits represent logical units of information,
    while phits represent the physical domain,
    that is, phits represent the number of bits
    that can be transferred in parallel in a
    single cycle. Consider the Cray T3D. It has
    an interconnection network which uses

    flit level message flow control wherein each
    flit is composed of eight 16-bit phits. That
    means its flit size is 128bits and phit size
    is 16bits. Also consider the IBM SP2 switch.
    It also uses the flit level message flow
    control, but its flit size is equal to its
    phit size, which is set to 8 bits."
    https://en.wikipedia.org/wiki/Flit_(computer_networking)#Example

    Well my idea how this is realized in silicon
    is rather foggy, I mean even the Hack project
    from Nand 2 Tetris, does not show some gate level
    schemes for flits and phits.

    Could be an interesting extension. But somehow
    the image of flits and phits inspired my channel
    objects here below. But I am afraid they are fire
    and forget, no ACK and NACK:

    ć-WAM Contest: 1 Million Packets with Prolog
    https://medium.com/2989/ec3e91551773

    Its amazing that a max_size(1) buffer
    can beat an unbounded buffer!

    LoL

    Bye

    Mild Shock schrieb:
    Hi,

    How it started, NVIDIA being cool:

    NCCL provides routines such as all-gather,
    all-reduce, broadcast, reduce, reduce-scatter,
    and point-to-point send and receive. These
    routines are optimized to achieve high
    bandwidth and low latency over PCIe,
    NVIDIA NVLink?, and other high-speed
    interconnects within a node and over
    NVIDIA networking across nodes.
    https://developer.nvidia.com/nccl

    How its going, vLLM trying to be cool:

    [RFC]: Native Weight Syncing APIs
    However, there are no standardized methods for
    performing online weight syncing. Open source projects
    like SkyRL, VeRL, and TRL need to include their
    own implementations of the weight syncing
    infrastructure, leading to added complexity
    for developers seeking to adopt vLLM as their
    inference server for post-training workloads.
    https://github.com/vllm-project/vllm/issues/31848

    How much Workers are enough? I guess it depends
    on I/O parallelism, CPU Memory parallelism, CPU
    Processing parallelism, and now also

    GPU Memory parallelism and GPU Processing
    parallelism, and last but least you might have
    a couple DMAs sitting here and there,

    or even invoking a sort of RDMA. Quite amazing!

    Bye

    Mild Shock schrieb:
    Hi,

    Well there are two viewpoint, the "client"
    of the GPU, which is the CPU, and the "server"
    of the GPU, which is the command processor

    queue of the GPU device. So basically as
    a CPU client I can write the memory area,
    that is later mapped to my GPU code storage.

    And this way have a compiler, even written
    in Prolog, that compiles pi-WAM to my Hack VM,
    that can then be then deployed to GPU.

    You could also try the same with a Tiny
    LISP VM. And a grown up LISP to act as
    the compiler. Would be a similar exercise.

    Have Fun!

    Bye

    Mild Shock schrieb:
    Hi,

    I've also added comp.theory so Mild Shock can comment.

    that has different
    *’ sizeof ( void * ), and
    *’ sizeof ( void (*)( void ) ),

    Could indicate a data RAM and code ROM model.
    Which has then the advantage of:

    Modern operating systems like Windows 11
    enforce strict Data Execution Prevention (DEP)
    (or NX/XD bit security features) to prevent
    malicious programs from injecting and executing
    code inside data-only memory regions.
    https://root-nation.com/en/soft-en/lifehacks/en-dep-windows-all-about/ >>>>>>>

    I adopted data RAM and code ROM model for
    pi-WAM from Hack, which has the same separation:

    Slide 58, Hack Computer
    https://drive.google.com/file/d/1Z_fxYmmRNXTkAzmZ6YMoX9NXZIRVCKiw/view >>>>>>>

    But my motivation was not Johnny Depp prevention.
    Rather the caching of GPUs. Because WGSL
    allows storage annotations read_write and

    read. I use read_write for the data RAM
    of my Hack VM variant, and read for the
    code ROM of my Hack VM variant. You can

    see that here, its open source:

    @group(0) @binding(0) var<storage, read> code: array<i32>;
    @group(0) @binding(1) var<storage, read_write> state: array<i32>; >>>>>>>
    11.4 Giga Lips with a Budget Laptop
    https://github.com/Jean-Luc-Picard-2021/gigabudget

    Hope this Helps!

    Bye

    Johann 'Myrkraverk' Oskarsson schrieb:
    On 03/08/2026 6:28 PM, David Brown wrote:
    On 03/08/2026 11:41, Richard Harnden wrote:
    On 03/08/2026 09:16, David Brown wrote:

    On most targets, function pointers are the same size as void* >>>>>>>>>>> pointers. But there are exceptions, with some small
    microcontrollers and DSPs having different kinds of pointers >>>>>>>>>>> with different sizes, depending on the memory space involved. >>>>>>>>>>> I have yet to see a situation where there was any reason for >>>>>>>>>>> storing a function address in a "void*" rather than a more >>>>>>>>>>> appropriate typedef, such as :

    ’’’’’typedef void (*FVoid)(void);

    dlsym requires that pointer-to-function is compatible with a >>>>>>>>>> void*


    As I say, I have yet to see a situation where using void* for >>>>>>>>> function pointers was more appropriate than using a function >>>>>>>>> pointer type.’ If the OS system calls or standard OS libraries >>>>>>>>> makes it a requirement that function pointers are converted to >>>>>>>>> or from void* for some calls, then of course you need to follow >>>>>>>>> those requirements - it's the people who designed the
    interfaces that made questionable design choices.


    Nope, you're wrong.’ You're dead wrong.’ The world isn't built >>>>>>>> on C,
    even though here in comp.lang.c we like to pretend it is.

    Several language environments allow function generation on the fly, >>>>>>>> these functions need to be garbage collected.’ Common Lisp is an >>>>>>>> example, therefore comp.lang.lisp is added to this discussion. >>>>>>>>
    I've also added comp.theory so Mild Shock can comment.

    You will have to go out of your way to make a computer architecture >>>>>>>> incompatible with garbage collected and heap allocated binary code, >>>>>>>> something I've been told SBCL does internally [1] to create an >>>>>>>> archi-
    tecture that has different

    *’ sizeof ( void * ), and
    *’ sizeof ( void (*)( void ) ),

    and when you do that, I'll just claim you're making a /malicious >>>>>>>> computer architecture/ and refuse to use it.


    [1] I've not looked at the code, but told the garbage collector can >>>>>>>> and will at least move the code around, if not collect it.









    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Johann 'Myrkraverk' Oskarsson@3:633/10 to All on Wed Aug 19 03:21:23 2026
    Subject: Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    On 18/08/2026 10:26 PM, Mild Shock wrote:
    Hi,

    Sometimes I think the Loderunner Enemy AI
    was way ahead of its time:

    Lode Runner - Broderbund - 1983 - Apple II https://www.youtube.com/watch?v=pJZJepU8law

    Meanwhile SWI-Prolog Prologers even don't know
    whether a Prolog text is CNF or DNF:

    Are you coding the SWI interfaces in RISC OS in Prolog? Isn't it much
    more fruitful to code it in the /Acorn RISC Machine/ assembly?


    Sets of rules as conjunctions and/or disjunctions https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and- or-disjunctions/9779


    So, is this set of conjunctions and disjunctions about how to create set intersections and unions of windows on RISC OS? Why is that important?


    No Wonder that the EyeProlog "why" feature produces
    nonsense. Even a Flea circus is less crazy.


    Does wearing an eye patch help when writing Prolog? I ask because I
    have never coded any Prolog before.

    Corollary, since an eye patch would hide my central heterochromia, would
    that not hinder my ability to reason?


    Bye

    P.S.: If only there would exist something like
    universities where one can take a basic course in
    FOL, and then a world wide web, where one can

    What is F.O.L?


    lookup clark equational theory, clark completion,
    curry howard correspondence, etc.. etc..

    You can always complete your journey at the Clark International Airport
    in the Philippines. Let me know when you do.


    As always, you've been greatly helpful, and mildly amusing, Mild Shock!
    --
    Johann | email: invalid -> com | http://www.myrkraverk.com/blog/
    I'm not from the Internet, I just work there. | via Easynews.com https://bsky.app/profile/myrkraverk.bsky.social | for ( ;; ) _:;

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Johann 'Myrkraverk' Oskarsson@3:633/10 to All on Wed Aug 19 03:24:43 2026
    Subject: Re: How to shoot yourself in the foot (Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    On 18/08/2026 10:50 PM, Mild Shock wrote:
    Hi,

    The biggest joke, is to have logic somewhere
    in procedure and somewhere in declarative, and
    try to see different takes on logic.

    They really don't know what this mantra means:

    Algorithm = Logic + Control

    And cannot relate it to the ideas of declarative
    reading and procedural reading. The problem is
    a too lax introduction of this notions,

    prematurely before the notion "logic" is
    even understood. But nobody understands the
    meaning of the term "logic", i.e. a set of

    supposedly tautological sentences, as under-
    stood by mathematical logic. There is a subtle
    error again to conflate it with a "calculus",

    so this website has a very misleanding title,
    although they try hard to not commit the fallacy,
    and have subtitles "Proof System" and "Logic Level":

    Welcome to LogicProof
    https://6ximik9.github.io/naturalDeduction/

    Then there is this moron:

    There is only one ?minimal logic?. The term denotes Johansson?s Minimalkalkl [1937] ? intuitionistic logic without ex falso quodlibet ?
    and nothing else. No rival system competes for the name. https://vidal-rosset.net/rule-correspondence-F.html

    Of course there are rival "Proof Systems" aka
    calculi, even when the "Logic Level" is minimal
    logic. It is as if Joseph Vidal-Rosset doesn't

    understand basic German. You have to look behind
    "Minimalkalkl" to find "Minimallogic". Right?
    To identify calculus with logic, is maybe a 1930's

    fallacy, but then we had model theory besides
    proof theory, and people should be more educated
    now. Model theory can be also expanded to

    non-classical logics and even minimal logic, to
    give a purely semantic reading. Ok some modern
    morons think they need to invoke the word "algebraic".

    All my graphic art in CorelDRAW! is done with algebraic curves. I found
    the regular Bezier curves simply boring, and /upgraded/ my curvatures to /algebraic/.

    Do you also draw with algebraic curves in your vector drawing utility of choice? Is it Xfig?
    --
    Johann | email: invalid -> com | http://www.myrkraverk.com/blog/
    I'm not from the Internet, I just work there. | via Easynews.com https://bsky.app/profile/myrkraverk.bsky.social | for ( ;; ) _:;

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Aidan Kehoe@3:633/10 to All on Tue Aug 18 21:13:10 2026
    Subject: Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]


    Ar an nao£ l  d‚ag de m” L£nasa, scr”obh Johann Oskarsson:

    On 18/08/2026 10:26 PM, Mild Shock wrote:
    [...] No Wonder that the EyeProlog "why" feature produces
    nonsense. Even a Flea circus is less crazy.

    Does wearing an eye patch help when writing Prolog? I ask because I
    have never coded any Prolog before.

    I coded Prolog in 1998-1999. It is not oriented to the underlying machine in any useful way, and its syntax is not human-friendly. I don?t recommend it.

    Corollary, since an eye patch would hide my central heterochromia, would that not hinder my ability to reason?

    No comment.

    --
    ?As I sat looking up at the Guinness ad, I could never figure out /
    How your man stayed up on the surfboard after fourteen pints of stout?
    (C. Moore)

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Lawrence D?Oliveiro@3:633/10 to All on Tue Aug 18 22:49:18 2026
    Subject: Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    On Tue, 18 Aug 2026 21:13:10 +0100, Aidan Kehoe wrote:

    I coded Prolog in 1998-1999. It is not oriented to the underlying
    machine in any useful way, and its syntax is not human-friendly. I
    don?t recommend it.

    I did briefly flirt with it, a decade earlier. I found it ?very high
    level?, in that its brute-force pattern-matching-plus-backtracking
    execution paradigm was well-suited to solving certain kinds of logic
    problems (it?s in the name of the language after all). Though I guess
    you?d get a blowup in execution time and memory in more complex
    real-world situations.

    You know the old ?Who Owns The Zebra?? logic puzzle (or some variant
    thereof)? You basically code the given clues directly into Prolog, run
    the result as a program, and out pops the answer.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From George Neuner@3:633/10 to All on Fri Aug 21 02:08:12 2026
    Subject: Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    On Tue, 18 Aug 2026 22:49:18 -0000 (UTC), Lawrence D?Oliveiro
    <ldo@nz.invalid> wrote:

    On Tue, 18 Aug 2026 21:13:10 +0100, Aidan Kehoe wrote:

    I coded Prolog in 1998-1999. It is not oriented to the underlying
    machine in any useful way, and its syntax is not human-friendly. I
    don?t recommend it.

    I did briefly flirt with it, a decade earlier. I found it ?very high
    level?, in that its brute-force pattern-matching-plus-backtracking
    execution paradigm was well-suited to solving certain kinds of logic
    problems (it?s in the name of the language after all). Though I guess
    you?d get a blowup in execution time and memory in more complex
    real-world situations.

    You know the old ?Who Owns The Zebra?? logic puzzle (or some variant >thereof)? You basically code the given clues directly into Prolog, run
    the result as a program, and out pops the answer.

    If the task involves a rule-based decision system, then Prolog can be
    a reasonable tool for the job. But in my experience most Prologs
    don't interface well - to the world, or to libraries written in other languages.

    Prolog uses backward chaining Horn logic - essentially you start with
    a [generic] "answer" in the form of a rule and look to see if the rule
    can be supported by facts in your database.

    Sometimes you want to work the other way, ie. go forward from facts to
    rules that are supported by them. Prolog can't do that.


    There are plenty of problems that can benefit from a Prolog-style rule
    system, but if you need one I think it is better to use an embeddable implementation, and write your main program in a language that is more
    suitable to interfacing with the world.

    There are embeddable Prologs and [Horn logic] workalike libraries
    available for a number of languages.

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Johann 'Myrkraverk' Oskarsson@3:633/10 to All on Fri Aug 21 15:25:23 2026
    Subject: Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    On 21/08/2026 2:08 PM, George Neuner wrote:
    On Tue, 18 Aug 2026 22:49:18 -0000 (UTC), Lawrence D?Oliveiro <ldo@nz.invalid> wrote:

    On Tue, 18 Aug 2026 21:13:10 +0100, Aidan Kehoe wrote:

    I coded Prolog in 1998-1999. It is not oriented to the underlying
    machine in any useful way, and its syntax is not human-friendly. I
    don?t recommend it.

    I did briefly flirt with it, a decade earlier. I found it ?very high
    level?, in that its brute-force pattern-matching-plus-backtracking
    execution paradigm was well-suited to solving certain kinds of logic
    problems (it?s in the name of the language after all). Though I guess
    you?d get a blowup in execution time and memory in more complex
    real-world situations.

    You know the old ?Who Owns The Zebra?? logic puzzle (or some variant
    thereof)? You basically code the given clues directly into Prolog, run
    the result as a program, and out pops the answer.

    If the task involves a rule-based decision system, then Prolog can be
    a reasonable tool for the job. But in my experience most Prologs
    don't interface well - to the world, or to libraries written in other languages.

    Prolog uses backward chaining Horn logic - essentially you start with
    a [generic] "answer" in the form of a rule and look to see if the rule
    can be supported by facts in your database.

    Sometimes you want to work the other way, ie. go forward from facts to
    rules that are supported by them. Prolog can't do that.


    There are plenty of problems that can benefit from a Prolog-style rule system, but if you need one I think it is better to use an embeddable implementation, and write your main program in a language that is more suitable to interfacing with the world.

    There are embeddable Prologs and [Horn logic] workalike libraries
    available for a number of languages.

    Indeed. I recall reading a book that showed how to implement Prolog
    style logic reasoning in Lisp. Not sure if that was S.I.C.P.

    Or am I remembering the famous lectures, from the 80s?

    In any case, implementing Prolog-style rules and then just using them
    in a larger programming language seemed trivial at the time. I have
    no practical experience with this, however.
    --
    Johann | email: invalid -> com | http://www.myrkraverk.com/blog/
    I'm not from the Internet, I just work there. | via Easynews.com https://bsky.app/profile/myrkraverk.bsky.social | for ( ;; ) _:;

    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From George Neuner@3:633/10 to All on Fri Aug 21 16:28:29 2026
    Subject: Re: Loderunner Enemy AI better than SWI-Prolog? [Prolog Education Group]

    On Fri, 21 Aug 2026 15:25:23 +0800, Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.invalid> wrote:

    On 21/08/2026 2:08 PM, George Neuner wrote:

    There are embeddable Prologs and [Horn logic] workalike libraries
    available for a number of languages.

    Indeed. I recall reading a book that showed how to implement Prolog
    style logic reasoning in Lisp. Not sure if that was S.I.C.P.

    Yes, S.I.C.P. presents a simple implementation of logic processing.
    [It was targeted to Scheme though - not Lisp].

    Far better - and more on topic in C.L.L - is Tanimoto's "The Elements
    of Artificial Intelligence Using Common Lisp".


    Or am I remembering the famous lectures, from the 80s?

    No doubt you might be. Rule-based decision logic was a hot topic back
    then.


    In any case, implementing Prolog-style rules and then just using them
    in a larger programming language seemed trivial at the time. I have
    no practical experience with this, however.

    Horn logic is simple. 8-)

    What is not so simple is how best to organize the rule-base for rapid searching. Recall that the rule/fact-base is /content/ addressable
    memory, and that rules can modify it by adding or deleting facts and
    rules.
    You might immediately think "well, a hash table is a CAM" - and
    certainly hash tables will work - but any simple implementation is
    guaranteed to be poorly performing.

    Also implementing a fast unification style matcher is a PITA -
    fortunately there are good match libraries to use.

    The other hurdle is search backtracking /with cuts/. Backtracking is
    not difficult, but implementing cuts can be problematic.
    In Prolog, cuts (the ! operator) prevent backtracking from the cut
    point - it has the effect of constraining the search to trying to
    match the current rule
    [Note that searching / matching the "current rule" still may involve backtracking. Cuts don't stop backtracking, but rather they give the programmer some control over it.]


    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Mild Shock@3:633/10 to All on Sun Aug 23 01:48:10 2026
    Subject: William A. Howard solved all his 99 problems (Re: Loderunner Enemy AI better than SWI-Prolog?)

    Hi,

    Woa! I am impressed:

    Howard died in Chicago on March 13, 2026,
    at the age of 99.
    https://en.wikipedia.org/wiki/William_Alvin_Howard

    I recomend every body reading his original Curry-Howard
    Isomorphism paper. He even mentions sigma types,
    calling it Strong existence (choice operators):

    THE FORMULAE-AS-TYPES NOTION OF CONSTRUCTION https://www.cs.cmu.edu/~crary/819-f09/Howard80.pdf

    Can you derive a Prolog program for proof
    normalization? A good setting to read the paper
    is a greek FKK beach.

    Bye

    Mild Shock schrieb:
    Hi,

    Sometimes I think the Loderunner Enemy AI
    was way ahead of its time:

    Lode Runner - Broderbund - 1983 - Apple II https://www.youtube.com/watch?v=pJZJepU8law

    Meanwhile SWI-Prolog Prologers even don't know
    whether a Prolog text is CNF or DNF:

    Sets of rules as conjunctions and/or disjunctions https://swi-prolog.discourse.group/t/sets-of-rules-as-conjunctions-and-or-disjunctions/9779


    No Wonder that the EyeProlog "why" feature produces
    nonsense. Even a Flea circus is less crazy.

    Bye

    P.S.: If only there would exist something like
    universities where one can take a basic course in
    FOL, and then a world wide web, where one can

    lookup clark equational theory, clark completion,
    curry howard correspondence, etc.. etc..

    Mild Shock schrieb:
    Hi,

    Obviously to generate AI Surprises,
    you have to stand on the shoulder of
    giants. Otherwise you will not discover

    surprises, right? Only mediocre deja vues.
    For this purpose, and maybe otherwise
    related, in a discussion concerning the future

    of the library, Marvin Minsky and Edward A.
    Feigenbaum endorsed the idea for books
    to ?talk to each other?:

    LET DOCUMENTS TALK TO EACH OTHER
    Z. CHEN - 1993
    doi.org/10.1108/eb026910

    Now we have:

    THE MACHINES ARE STUDYING
    THE HUMANS ARE SCROLLING
    https://9gag.com/gag/a9yQ16o

    Bye

    P.S.: But who was Marvin Minsky, and would it
    be important to use symbolic AI?

    The Perceptron Controversy
    Yuxi Liu - 2024
    https://yuxi.ml/essays/perceptron-controversy

    Mild Shock schrieb:
    Hi,

    How it started:

    Filming a vitamin B12 photoreceptor in action
    https://www.psi.ch/de/news/science-features/filming-a-vitamin-b12-photoreceptor-in-action


    How its going:

    Elon Musk's potential FEL route could challenge EUV lithography
    https://www.kucoin.com/news/flash/elon-musk-s-potential-fel-route-could-challenge-euv-lithography


    Who will win the Nano Atom mover race,

    will the USA OutChip its competitor China
    and its supplier Asia in the next years?

    Bye

    Mild Shock schrieb:
    Hi,

    Recently there was a paper somebody mentioning
    a flit doing a ACK or NACK, to express
    backpressure inside a Network on a Chip.

    But what is a flit? It seems multiple
    flits can be used to create the message
    passing in one directiob before the

    ACK or NACK in the other direction?

    "The growing need for performance from
    computing systems drove the industry into
    the multi-core and many-core arena. In this
    setup, the execution of a kernel (a program)
    is split across multiple processors and the
    computation happens in parallel

    Flits represent logical units of information,
    while phits represent the physical domain,
    that is, phits represent the number of bits
    that can be transferred in parallel in a
    single cycle. Consider the Cray T3D. It has
    an interconnection network which uses

    flit level message flow control wherein each
    flit is composed of eight 16-bit phits. That
    means its flit size is 128bits and phit size
    is 16bits. Also consider the IBM SP2 switch.
    It also uses the flit level message flow
    control, but its flit size is equal to its
    phit size, which is set to 8 bits."
    https://en.wikipedia.org/wiki/Flit_(computer_networking)#Example

    Well my idea how this is realized in silicon
    is rather foggy, I mean even the Hack project
    from Nand 2 Tetris, does not show some gate level
    schemes for flits and phits.

    Could be an interesting extension. But somehow
    the image of flits and phits inspired my channel
    objects here below. But I am afraid they are fire
    and forget, no ACK and NACK:

    ć-WAM Contest: 1 Million Packets with Prolog
    https://medium.com/2989/ec3e91551773

    Its amazing that a max_size(1) buffer
    can beat an unbounded buffer!

    LoL

    Bye

    Mild Shock schrieb:
    Hi,

    How it started, NVIDIA being cool:

    NCCL provides routines such as all-gather,
    all-reduce, broadcast, reduce, reduce-scatter,
    and point-to-point send and receive. These
    routines are optimized to achieve high
    bandwidth and low latency over PCIe,
    NVIDIA NVLink?, and other high-speed
    interconnects within a node and over
    NVIDIA networking across nodes.
    https://developer.nvidia.com/nccl

    How its going, vLLM trying to be cool:

    [RFC]: Native Weight Syncing APIs
    However, there are no standardized methods for
    performing online weight syncing. Open source projects
    like SkyRL, VeRL, and TRL need to include their
    own implementations of the weight syncing
    infrastructure, leading to added complexity
    for developers seeking to adopt vLLM as their
    inference server for post-training workloads.
    https://github.com/vllm-project/vllm/issues/31848

    How much Workers are enough? I guess it depends
    on I/O parallelism, CPU Memory parallelism, CPU
    Processing parallelism, and now also

    GPU Memory parallelism and GPU Processing
    parallelism, and last but least you might have
    a couple DMAs sitting here and there,

    or even invoking a sort of RDMA. Quite amazing!

    Bye

    Mild Shock schrieb:
    Hi,

    Well there are two viewpoint, the "client"
    of the GPU, which is the CPU, and the "server"
    of the GPU, which is the command processor

    queue of the GPU device. So basically as
    a CPU client I can write the memory area,
    that is later mapped to my GPU code storage.

    And this way have a compiler, even written
    in Prolog, that compiles pi-WAM to my Hack VM,
    that can then be then deployed to GPU.

    You could also try the same with a Tiny
    LISP VM. And a grown up LISP to act as
    the compiler. Would be a similar exercise.

    Have Fun!

    Bye

    Mild Shock schrieb:
    Hi,

    I've also added comp.theory so Mild Shock can comment.

    that has different
    *’ sizeof ( void * ), and
    *’ sizeof ( void (*)( void ) ),

    Could indicate a data RAM and code ROM model.
    Which has then the advantage of:

    Modern operating systems like Windows 11
    enforce strict Data Execution Prevention (DEP)
    (or NX/XD bit security features) to prevent
    malicious programs from injecting and executing
    code inside data-only memory regions.
    https://root-nation.com/en/soft-en/lifehacks/en-dep-windows-all-about/ >>>>>>>

    I adopted data RAM and code ROM model for
    pi-WAM from Hack, which has the same separation:

    Slide 58, Hack Computer
    https://drive.google.com/file/d/1Z_fxYmmRNXTkAzmZ6YMoX9NXZIRVCKiw/view >>>>>>>

    But my motivation was not Johnny Depp prevention.
    Rather the caching of GPUs. Because WGSL
    allows storage annotations read_write and

    read. I use read_write for the data RAM
    of my Hack VM variant, and read for the
    code ROM of my Hack VM variant. You can

    see that here, its open source:

    @group(0) @binding(0) var<storage, read> code: array<i32>;
    @group(0) @binding(1) var<storage, read_write> state: array<i32>; >>>>>>>
    11.4 Giga Lips with a Budget Laptop
    https://github.com/Jean-Luc-Picard-2021/gigabudget

    Hope this Helps!

    Bye

    Johann 'Myrkraverk' Oskarsson schrieb:
    On 03/08/2026 6:28 PM, David Brown wrote:
    On 03/08/2026 11:41, Richard Harnden wrote:
    On 03/08/2026 09:16, David Brown wrote:

    On most targets, function pointers are the same size as void* >>>>>>>>>>> pointers. But there are exceptions, with some small
    microcontrollers and DSPs having different kinds of pointers >>>>>>>>>>> with different sizes, depending on the memory space involved. >>>>>>>>>>> I have yet to see a situation where there was any reason for >>>>>>>>>>> storing a function address in a "void*" rather than a more >>>>>>>>>>> appropriate typedef, such as :

    ’’’’’typedef void (*FVoid)(void);

    dlsym requires that pointer-to-function is compatible with a >>>>>>>>>> void*


    As I say, I have yet to see a situation where using void* for >>>>>>>>> function pointers was more appropriate than using a function >>>>>>>>> pointer type.’ If the OS system calls or standard OS libraries >>>>>>>>> makes it a requirement that function pointers are converted to >>>>>>>>> or from void* for some calls, then of course you need to follow >>>>>>>>> those requirements - it's the people who designed the
    interfaces that made questionable design choices.


    Nope, you're wrong.’ You're dead wrong.’ The world isn't built >>>>>>>> on C,
    even though here in comp.lang.c we like to pretend it is.

    Several language environments allow function generation on the fly, >>>>>>>> these functions need to be garbage collected.’ Common Lisp is an >>>>>>>> example, therefore comp.lang.lisp is added to this discussion. >>>>>>>>
    I've also added comp.theory so Mild Shock can comment.

    You will have to go out of your way to make a computer architecture >>>>>>>> incompatible with garbage collected and heap allocated binary code, >>>>>>>> something I've been told SBCL does internally [1] to create an >>>>>>>> archi-
    tecture that has different

    *’ sizeof ( void * ), and
    *’ sizeof ( void (*)( void ) ),

    and when you do that, I'll just claim you're making a /malicious >>>>>>>> computer architecture/ and refuse to use it.


    [1] I've not looked at the code, but told the garbage collector can >>>>>>>> and will at least move the code around, if not collect it.









    --- PyGate Linux v1.5.19
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)