• Does it have a declarative reading? (Re: Doing uux with pi-calculus and WAM)

    From Mild Shock@janburse@fastmail.fm to sci.physics.relativity,comp.lang.prolog on Mon Aug 24 20:44:22 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    Sorry I forget to specify the site for wc.
    Lets just write it as follows, the site
    somehow encoded in a the predicate name,

    and forget about a lot of (!)/2 details:

    ?- prepare(merlin(X,Y)), [in(X), out(Y)], P),
    venus(X),
    run(P),
    mars(Y).

    Does it have a declarative reading? Besides
    the benefit of shipping merlin/1 only once?
    Of course we can interpret it as follows:

    ?- venus(X),
    merlin(X,Y),
    mars(Y).

    This would be much more also in the spirit of a
    Jens Ottens theorem provers, that ultimately end
    in connection proof problems, when they have

    decended down. Maybe the Trinity system can
    somehow avoid the multiple shipping of the merlin
    payload through caching. But the problem is it

    will see merlin(foo, Y), merlin(bar, Y),
    merlin(baz, Y). So it doesn't know what was
    the input. It cannot create a single logical

    thread on the executing site.

    Bye

    Mild Shock schrieb:
    Hi,

    I find an early precendent of a command
    in a unix system, which has an interesting
    flavor, that goes beyond Web Prolog Trinity

    RPC nonsense. Take this command:

    uux merlin!wc < venus!/paper/*.tex > mars!/stats/*.txt https://www.ibm.com/docs/en/aix/7.1.0?topic=u-uux-command

    So basically wc, i.e. word count is executed
    on merlin, takes data from venus and moves it
    to marks. We can do the same with pi-WAM,

    currently experimenting with a non-blocking
    execute/1 built-in, spawn/2:

    ?- chan(In), chan(Out),
    -a-a spawn((recv(3,[Z]), wc(Z,T), send(4,[T])), [comm([In,Out])]),
    -a-a venus(X),
    -a-a send(In,[X]), repeat, recv(Out,[Y]),
    -a-a mars(Y).

    But maybe introducing in/1 and out/1 options
    to spawn/2, would be more easier to write,
    now I have split spawn/2 into prepare/3 and run/1.

    ?- chan(In), chan(Out),
    -a-a prepare(wc(X,Y)), [in(X), out(Y)], P),
    -a-a venus(X),
    -a-a run(P),
    -a-a mars(Y).

    But the point is to do prepare/3 only once,
    and do mars and venus later. It also reflects
    the ordering on a uux command:

    1-a-a-a-a-a-a-a-a-a-a-a-a-a-a 2-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a 3
    uux merlin!wc < venus!/paper/*.tex > mars!/stats/*.txt

    But we wouldn't do it alone for this cosmetic.
    The idea is that the spawned process is using
    its channels, to do more than only one job.

    Bye


    Mild Shock schrieb:
    Hi,

    Hi take Robin Milners fickle:

    ?- emulate((between(1,2,Y),in(X),out(Y))).
    : 0
    1
    : 0
    2
    fail.

    If I use NUM=3, number of logical threads,
    and common input [0, 0, 0, 0, 0, 0].

    I might get this common output:

    [1, 2, 1, 2, 1, 2]

    Or this common output:

    [1, 1, 2, 2, 1, 2]

    Or this common output:

    [1, 1, 1, 2, 2, 2]

    What else? Did I miss some case?

    Can be seen on GPU and CPU backend, depending
    on launch parameters. (*)

    Bye

    (*) If logical threads are executed together in
    work groups, certain guarantees of determinism
    might hold. But modern GPUs usually support

    multiple independent work groups, also my CPU
    backend does support a notion of multiple
    independent work groups. So that the determinism

    guarantees only hold inside the work group.

    Mild Shock schrieb:
    Hi,

    Probably blinded by some academic remoteness
    from the real world, some people really believe
    nonsense like the following:

    Deterministic Concurrency - Edward Lee
    deterministic models as a central part of the engineering toolkit
    https://icfp26.sigplan.org/track/icfp-2026-icfp-keynotes#event-overview

    But hey Aristoteles present us already with
    modal logic to talk about the future. So
    if I have a process calculus, with expressions

    -C, that capture all my processes of interest,
    I can have a modal logic of with modal operators
    [-C] and <-C> that give necessity and possibility,

    the simplest first order bootstrapped types are:

    Product Type:
    A -> [-C]B

    Sum Type:
    A /\ <-C>B

    So we need more than only a ->-C type? But even
    with two types, is there an easy equivalent of
    Curry Howard isomorphism?

    In contrast Amir Pnueli's 1977 system of temporal
    logic, another variant of modal logic sharing many
    common features with dynamic logic, differs from all
    of the above-mentioned logics by being what Pnueli
    has characterized as an "endogenous" logic,
    the others being "exogenous" logics.
    https://en.wikipedia.org/wiki/Dynamic_logic_%28modal_logic%29

    The Sea Battle and the Master Argument
    Aristotle and Diodorus Cronus on the Metaphysics of the Future
    https://www.degruyterbrill.com/de/document/doi/10.1515/9783110866346/html >>>



    Mild Shock schrieb:
    Hi,

    For marketing purposes people
    typically look at the race towards
    2nm, and we find:

    A month ago, Apple lost its exclusivity
    on 3 nm smartphone processors with
    MediaTekrCOs Dimensity 9400 chip, integrated
    in the Vivo X200 Pro smartphone. Qualcomm
    is also in the race with its recently
    unveiled Snapdragon 8 Elite and set to
    power the Xiaomi 15 Pro in 2025. However,
    Apple should regain its position as innovation
    leader in 2026 with the release of the
    iPhone 18, which should feature the A20
    chip built on TSMCrCOs 2 nm process."

    But there is a vertical vias revolution
    going on as well, some SOCs typically
    being at 18 layers now:

    Zooming Into a CPU (It's Incredible)
    https://www.youtube.com/watch?v=Bez-2cvYja0

    imec has coined the term CMOS 2.0:

    LEUVEN (Belgium), MARCH 12th, 2026 rCo Imec,
    a world-leading research and innovation hub
    in advanced semiconductor technologies, has
    launched a first-of-its-kind consortium with
    26 European university groups that will jointly
    work on the technology roadmap beyond
    CMOS scaling (CMOS 2.0).
    https://www.imec-int.com/en/press/imec-launches-university-consortium-around-next-generation-chips


    So we might see more mobile grade GPUs.

    Bye




    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Mild Shock@janburse@fastmail.fm to sci.physics.relativity,comp.lang.prolog on Mon Aug 24 22:28:08 2026
    From Newsgroup: comp.lang.prolog

    Hi,

    Amazing turn of events, Model Context Protocol
    (MCP) can be viewed as uux using streaming
    JSON, so as to obtain message boundaries

    even on stdin/stdout:

    **Newline-delimited JSON**
    {"some":"thing\n"}rAA {"may":{"include":"nested","objects":["and","arrays"]}}rAA https://en.wikipedia.org/wiki/JSON_streaming#Newline-delimited_JSON

    Well if we ignore some SOAP add on, i.e.
    JSON-RPC envelopes, but I guess they are not
    mandatory on the transport level to

    keep this level lean?

    Bye

    Mild Shock schrieb:
    Hi,

    Sorry I forget to specify the site for wc.
    Lets just write it as follows, the site
    somehow encoded in a the predicate name,

    and forget about a lot of (!)/2 details:

    ?- prepare(merlin(X,Y)), [in(X), out(Y)], P),
    -a-a venus(X),
    -a-a run(P),
    -a-a mars(Y).

    Does it have a declarative reading? Besides
    the benefit of shipping merlin/1 only once?
    Of course we can interpret it as follows:

    ?- venus(X),
    -a-a merlin(X,Y),
    -a-a mars(Y).

    This would be much more also in the spirit of a
    Jens Ottens theorem provers, that ultimately end
    in connection proof problems, when they have

    decended down. Maybe the Trinity system can
    somehow avoid the multiple shipping of the merlin
    payload through caching. But the problem is it

    will see merlin(foo, Y), merlin(bar, Y),
    merlin(baz, Y). So it doesn't know what was
    the input. It cannot create a single logical

    thread on the executing site.

    Bye

    Mild Shock schrieb:
    Hi,

    I find an early precendent of a command
    in a unix system, which has an interesting
    flavor, that goes beyond Web Prolog Trinity

    RPC nonsense. Take this command:

    uux merlin!wc < venus!/paper/*.tex > mars!/stats/*.txt
    https://www.ibm.com/docs/en/aix/7.1.0?topic=u-uux-command

    So basically wc, i.e. word count is executed
    on merlin, takes data from venus and moves it
    to marks. We can do the same with pi-WAM,

    currently experimenting with a non-blocking
    execute/1 built-in, spawn/2:

    ?- chan(In), chan(Out),
    -a-a-a spawn((recv(3,[Z]), wc(Z,T), send(4,[T])), [comm([In,Out])]),
    -a-a-a venus(X),
    -a-a-a send(In,[X]), repeat, recv(Out,[Y]),
    -a-a-a mars(Y).

    But maybe introducing in/1 and out/1 options
    to spawn/2, would be more easier to write,
    now I have split spawn/2 into prepare/3 and run/1.

    ?- chan(In), chan(Out),
    -a-a-a prepare(wc(X,Y)), [in(X), out(Y)], P),
    -a-a-a venus(X),
    -a-a-a run(P),
    -a-a-a mars(Y).

    But the point is to do prepare/3 only once,
    and do mars and venus later. It also reflects
    the ordering on a uux command:

    1-a-a-a-a-a-a-a-a-a-a-a-a-a-a 2-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a 3
    uux merlin!wc < venus!/paper/*.tex > mars!/stats/*.txt

    But we wouldn't do it alone for this cosmetic.
    The idea is that the spawned process is using
    its channels, to do more than only one job.

    Bye

    --- Synchronet 3.22a-Linux NewsLink 1.2