Re: Porting Rubi

Henry Baker <[email protected]> Fri, 17 Jul 2026 02:53:52 +0000
Newsgroups gmane.comp.mathematics.maxima.general
Message-ID <[email protected]>
--===============7737338095550902112==
Content-Type: multipart/alternative;
 boundary="--_NmP-ec4cc0d88b42adfa-Part_1"

----_NmP-ec4cc0d88b42adfa-Part_1
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This appears to be a poor man's nondeterminism a la Prolog.
The arms which never terminate should be gc'd; if two arms produce =
different results, that's OK -- isn't that part of the definition of =
nondeterminism ?
-----Original Message-----
From: Raymond Toy <[email protected]>
Sent: Jul 16, 2026 7:17 PM
To: <[email protected]>
Subject: Re: [Maxima-discuss] Porting Rubi


                            On 7/16/26 2:57        PM, Dan Stanger wrote:
     =20
              I had a discussion with Rocky in NYC who works          on =
the Mathics Rubi code, and he pointed out that Rubi starts          =
multiple pattern matching threads and when one of them          finishes by=
 matching, the others are terminated. In which          lisps is this =
implementable ?
     =20
      Presumably sbcl. Maybe ccl and ecl?      So the first        one to =
finish is considered the right answer? Seems kinda odd.        It seems =
that for some integrals you can get different results        depending on =
which finishes first? Presumably they=E2=80=99re        equivalent?
      I certainly        wouldn=E2=80=99t want answers that could vary by =
chance.
      Isn=E2=80=99t this just        an optimization so it doesn=E2=80=99t =
take a long time to find a pattern        that matches?
   =20
    &amp;#8203;
 =20



----_NmP-ec4cc0d88b42adfa-Part_1
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<div style=3D"color:rgb(0, 0, 0);font-family:'Courier New', Courier, =
monospace;font-size:10pt"><p style=3D"line-height: 1;">This appears to be a=
 poor man's nondeterminism a la Prolog.</p><p style=3D"line-height: 1;">The=
 arms which never terminate should be gc'd; if two arms produce different =
results, that's OK -- isn't that part of the definition of nondeterminism ?=
</p><p style=3D"line-height: 1;"></p><br></div><div =
class=3D"elnk-inline-message-container" style=3D"border-left:1px solid =
#aaa;box-sizing:border-box;padding:10px 0 10px 15px;margin:0"><p =
style=3D"line-height: 1;">-----Original Message-----<br>From: Raymond Toy =
&lt;[email protected]&gt;<br>Sent: Jul 16, 2026 7:17 PM<br>To: =
&lt;[email protected]&gt;<br>Subject: Re: =
[Maxima-discuss] Porting Rubi</p><p style=3D"margin: 0; padding: 0; =
line-height: 1.5;"><br></p>

 =20

    <meta http-equiv=3D"content-type" content=3D"text/html; =
charset=3DUTF-8">
    <title></title>
    <meta charset=3D"utf-8">
 =20
 =20
    <div class=3D"markdown-here-wrapper">
      <p style=3D"margin-bottom: 19.2px; margin-top: 0px; line-height: =
1;">On 7/16/26 2:57
        PM, Dan Stanger wrote:<br>
      </p>
      <blockquote type=3D"cite" style=3D"border-block-color: rgb(119, 119, =
119); border-bottom-color: rgb(119, 119, 119); border-inline-color: rgb(114=
, 159, 207) rgb(119, 119, 119); border-inline-start: 2px solid rgb(114, 159=
, 207); border-left: 2px solid rgb(114, 159, 207); border-right-color: =
rgb(119, 119, 119); border-top-color: rgb(119, 119, 119); color: rgb(119, =
119, 119); column-rule-color: rgb(119, 119, 119); margin: 19.2px 0px; =
outline-color: rgb(119, 119, 119); padding-inline: 16px; padding-left: =
16px; padding-right: 16px; quotes: none; text-decoration-color: rgb(119, =
119, 119); text-emphasis-color: rgb(119, 119, 119);">
        <div dir=3D"auto">I had a discussion with Rocky in NYC who works
          on the Mathics Rubi code, and he pointed out that Rubi starts
          multiple pattern matching threads and when one of them
          finishes by matching, the others are terminated. In which
          lisps is this implementable ?</div>
      </blockquote>
      Presumably sbcl. Maybe ccl and ecl?
      <p style=3D"margin-bottom: 19.2px; margin-top: 0px; line-height: =
1;">So the first
        one to finish is considered the right answer? Seems kinda odd.
        It seems that for some integrals you can get different results
        depending on which finishes first? Presumably they=E2=80=99re
        equivalent?</p>
      <p style=3D"margin-bottom: 19.2px; margin-top: 0px; line-height: =
1;">I certainly
        wouldn=E2=80=99t want answers that could vary by chance.</p>
      <p style=3D"margin-bottom: 19.2px; margin-top: 0px; line-height: =
1;">Isn=E2=80=99t this just
        an optimization so it doesn=E2=80=99t take a long time to find a =
pattern
        that matches?</p>
    </div>
    <div class=3D"mdhr-raw" style=3D"height:0;width:0;max-height:0;max-widt=
h:0;overflow:hidden;font-size:0;padding:0;margin:0;" aria-hidden=3D"true" =
title=3D"MDH:PGJyPjxicj48ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDcvMTYvMj=
YgMjo1NyBQTSwgRGFuIFN0YW5nZXIgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9I=
mNpdGUiIGNpdGU9Im1pZDpDQUZ5aHRUNWhCd0N3NVhPZGVocGozdzVySzBMK2FVcE4zMkI4VjMr=
PWFOejVMaTBMUXdAbWFpbC5nbWFpbC5jb20iPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR=
5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgIj48ZGl2IGRpcj0iYXV0byI+SSBoYWQgYSBkaXNjdX=
NzaW9uIHdpdGggUm9ja3kgaW4gTllDIHdobyB3b3JrcyBvbiB0aGUgTWF0aGljcyBSdWJpIGNvZ=
GUsIGFuZCBoZSBwb2ludGVkIG91dCB0aGF0IFJ1Ymkgc3RhcnRzIG11bHRpcGxlIHBhdHRlcm4g=
bWF0Y2hpbmcgdGhyZWFkcyBhbmQgd2hlbiBvbmUgb2YgdGhlbSBmaW5pc2hlcyBieSBtYXRjaGl=
uZywgdGhlIG90aGVycyBhcmUgdGVybWluYXRlZC4gSW4gd2hpY2ggbGlzcHMgaXMgdGhpcyBpbX=
BsZW1lbnRhYmxlID88L2Rpdj48L2Jsb2NrcXVvdGU+UHJlc3VtYWJseSBzYmNsLiZuYnNwOyBNY=
XliZSBjY2wgYW5kIGVjbD88YnI+PGJyPlNvIHRoZSBmaXJzdCBvbmUgdG8gZmluaXNoIGlzIGNv=
bnNpZGVyZWQgdGhlIHJpZ2h0IGFuc3dlcj8mbmJzcDsgU2VlbXMga2luZGEgb2RkLiZuYnNwOyB=
JdCBzZWVtcyB0aGF0IGZvciBzb21lIGludGVncmFscyB5b3UgY2FuIGdldCBkaWZmZXJlbnQgcm=
VzdWx0cyBkZXBlbmRpbmcgb24gd2hpY2ggZmluaXNoZXMgZmlyc3Q/Jm5ic3A7IFByZXN1bWFib=
HkgdGhleSdyZSBlcXVpdmFsZW50Pzxicj48YnI+SSBjZXJ0YWlubHkgd291bGRuJ3Qgd2FudCBh=
bnN3ZXJzIHRoYXQgY291bGQgdmFyeSBieSBjaGFuY2UuPGJyPjxicj5Jc24ndCB0aGlzIGp1c3Q=
gYW4gb3B0aW1pemF0aW9uIHNvIGl0IGRvZXNuJ3QgdGFrZSBhIGxvbmcgdGltZSB0byBmaW5kIG=
EgcGF0dGVybiB0aGF0IG1hdGNoZXM/PGJyPjxicj48dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgd=
GV4dGNvbXBsZXRlLWRyb3Bkb3duIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGFi=
c29sdXRlOyB6LWluZGV4OiAxMDAwOyIgY29udGVudGVkaXRhYmxlPSJmYWxzZSIgcG9wb3Zlcj0=
iYXV0byI+PC91bD4=3D">&amp;#8203;</div>
 =20

</div>
----_NmP-ec4cc0d88b42adfa-Part_1--


--===============7737338095550902112==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============7737338095550902112==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Maxima-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/maxima-discuss

--===============7737338095550902112==--