[HN Gopher] Symbolica Computer Algebra System
___________________________________________________________________
Symbolica Computer Algebra System
Author : weinzierl
Score : 129 points
Date : 2024-05-08 12:41 UTC (1 days ago)
(HTM) web link (symbolica.io)
(TXT) w3m dump (symbolica.io)
| tlb wrote:
| What's the use case overlap between symbolic and huge? I might
| expect that with most huge expressions (they talk about disk
| space being the limit, not memory) you'd be satisfied with a
| numerical approximation. Does someone need to simplify a huge
| expression down to a small symbolic expression?
| okaleniuk wrote:
| The most obvious use case is to see that the expression does
| not simplify well and is inherently huge :-)
| SPACECADET3D wrote:
| One use case is in theoretical physics, where expressions that
| take up about a terabyte are generated when computing Feynman
| diagrams, but only in the intermediate stages. By the end of a
| two-month computation you get a result similar to equation 4.5
| in this paper: https://arxiv.org/pdf/1707.01044
|
| An exact answer is desired since the final result reveals some
| structure that can be studied, and because it is very hard to
| get a numerical result due to the occurrence of spurious poles.
| For example, evaluating
|
| (1-x)/x - 1/x
|
| numerically is challenging around x=0 even though symbolically
| it can be made regular.
| data_maan wrote:
| What do you mean by "symbolically it can be made regular"?
| eigenket wrote:
| (1-x)/x - 1/x =1/x - 1 - 1/x = -1
|
| Evaluating the expression naively near zero you're going to
| get wild numerical errors, but if you do the symbolic
| manipulation you're going to notice that it's just equal to
| -1.
|
| Edit: e.g. consider this interaction I just had with the
| python interpreter >>> x=1e-15
| >>> (1-x)/x - 1/x -1.0 >>> x=1e-16
| >>> (1-x)/x - 1/x 0.0
|
| you get completely the wrong answer when x = 1e-16
| okaleniuk wrote:
| Can confirm, it is fast. I've been struggling with a plane
| equation for a plane based on isotropic segments. 3 segments, 3
| complex points - only 6 equations. Almost every CAS can solve the
| system per se fast, it's the simplification process that costs
| time.
|
| On my machine, I managed to get a ~300KB long solution from SymPy
| in under a minute, and a comparable solution from Maxima in a few
| seconds. Symbolica found a ~84K long solution in about a
| second... in Colab. That's impressive.
| data_maan wrote:
| Wow.
|
| Could you share the equation/code you worked on?
|
| I can't imagine a mathematical object being 84KB long, that's
| insanely huge
| okaleniuk wrote:
| Sure! https://github.com/akalenuk/mesh-
| experiments/blob/master/eq/...
|
| It's not even a particularly large system. Only 6 linear
| equations.
| SPACECADET3D wrote:
| Author of Symbolica here: Symbolica is used in physics
| calculations to do arithmetic on rational polynomials that
| are hundreds of megabytes long.
|
| For my physics research I have worked with expressions that
| was just shy of a terabyte long and had > 100M terms. The way
| that works is that you stream terms from disk, perform
| manipulations on them and write them to disk again. Using a
| mergesort, terms that add up can be identified by sorting
| them to be adjacent.
| actionfromafar wrote:
| I love how merge-sort which was once used on punch cards
| because RAM was tight is still relevant. :)
| lanstin wrote:
| Knuth's section on sorting data on tape drives is
| surprisingly relevant to big data running over S3 buckets
| and streaming into compute.
| ThomasBHickey wrote:
| I can remember the days! I suppose as problems grow in
| size, it's not too surprising that older methods of
| coping with what seemed like lots of data are still
| applicable.
| glimshe wrote:
| This is fascinating. What is the real-world application of
| these polynomials? I mean, what technical-scientific
| problems can only be solved with such large objects? I love
| the thought of "if I don't solve this enormous polynomial,
| this solar panel won't have very good efficiency" or
| something like that.
| SPACECADET3D wrote:
| These polynomials appear when computing Feynman diagrams,
| which are used to make predictions for the Large Hadron
| Collider. The collider can measure collisions with such
| astonishing precision (<1% error) that predictions of the
| same order are also needed. The more precise you want to
| be, the more terms in a series approximation of the
| mathematical description of the collision you need to
| compute. For example, I computed the fifth-order
| approximation of the QCD beta function, which governs how
| intense the strong force affects matter. This takes 5
| days of symbolic manipulations (pattern matching,
| substitutions, rational polynomial arithmetic, etc) on 32
| cores.
|
| The large polynomials appear in the middle of the
| computation, often referred to as intermediate expression
| swell. This also happens when you do a Gaussian
| elimination or compute greatest common divisors: the
| final result will be small, but intermediately, the
| expressions can get large.
| eh_why_not wrote:
| Is there a document/book you can recommend that includes
| a simplified example/tutorial of this computation process
| from beginning to end? (Or, what are the right keywords
| to search for such a thing?)
|
| I'm looking for something like: here's the particle
| interaction we will work on, this is a very simple
| Feynman diagram, and here's the simplified data the LHC
| gave us about it, here's the resulting equation from
| which we'll derive a series, etc.
|
| Not looking for how to program it, but actually for
| seeing the problem structure, and the solution design
| from beginning to end. (Familiar with high level physics
| concepts, and comfortable with any math).
| lav42 wrote:
| I used polynomials and specifically special symmetric
| polynomials extensively during my Phd research
| (mathematical physics).
|
| For instance symmetric polynomials (x_1^2 + x_2^2 + ...)
| can describe the state of a system of particles where
| exchanging any 2 particles does not change the system at
| all (exchange x_1 and x_2 in the previous expression,
| same polynomial = same system & state).
|
| If you have a system of equation that you can solve
| exactly with special polynomials, you can approximate
| real world system governed by similar equations by using
| your special polynomials as a starting point and adding a
| correction to your solution.
|
| There's so much to say about polynomials, but I'll leave
| you with a basic example that shows how multiplying
| infinite polynomials allow you to count the number of
| ways there are to hand you back your change at the till:
|
| The basic units of change are 0.01$, 0.05$, 0.10$, 0.25$,
| 1$, 5$, 10$, ... For example, you can always give exact
| change back with only 0.01$.
|
| So the set of all the different amount of change you can
| produce with 0.01$ is given by the exponents in the
| following
|
| sum_n>=0 (q^(0.01))^n = q^0 + q^0.01 + q^0.02 + ...
| q^348.47 + ...
|
| Now we can get all the amounts you can generate with 5
| cents:
|
| sum_k>=0 (q^(0.05))^k = q^0 + q^0.05 + q^0.10 + .... and
| so on for 25cents, 1$, ...
|
| Notice now that given the multiplication properties of
| polynomials, that multiplying:
|
| (sum_n (q^0.01)^n) * (sum_k (q^0.05)^k) * (sum_l
| (q^0.10)^l) Will give you all the different amounts you
| can generate with 0.01, 0.05 and 0.10.
|
| For instance with n=5, k=1, l=0 you get 0.10$
|
| q^(0.01 ^ 5) * q^(0.05 * 1)
|
| You can get 0.10$ with n=10
|
| q^(0.01 * 10)
|
| You can get 0.10$ with l=1
|
| q^(0.10 * 1)
|
| Finally you can get 0.10$ with k=2 q^(0.05 * 2)
|
| So when you multiply
|
| (sum_n (q^0.01)^n) * (sum_k (q^0.05)^k) * (sum_l
| (q^0.10)^l)
|
| altogether, you get
|
| 1 + ... + q^(0.01 * 5) * q^(0.05 * 1) + q^(0.01 * 10) +
| q^(0.10 * 1) + q^(0.05 * 2) + ... = ... + 4 q ^ (0.10)
|
| There are thus 4 ways of handing back exactly 10 cents.
|
| So for any amount, you take the following: product(c in
| (0.01, 0.05, 0.10, 0.25,...) (sum_n (q^c)^n) = sum_(a >=
| 0.01) [Number Of Way To Give Back Change for amount `a`]
| * q^(a)
|
| So that would be the "generating series" of the number of
| ways to hand back change.
|
| In this context, polynomials bridge the gaps between
| combinatorics and analytical computation.
| anthk wrote:
| That an exercise on SICP, a Scheme learning book. And
| there are similar ones for Common Lisp.
| lav42 wrote:
| Say what? I'm always astounded that people think everyone
| knows all the acronyms for whatever field they're working
| in.
| amelius wrote:
| You can even make a toy-problem with large polynomials
| yourself.
|
| Just make a Taylor approximation of some e.g.
| transcendental function like sin(x) around some point,
| and use more and more terms to get a higher precision.
| jgalt212 wrote:
| Indeed, it's hard to me to imagine such an expression without
| any of the following qualities:
|
| - immediately converges to zero - immediately heads to
| infinity - is dominated by only a few terms (thus obviating
| the needs for the other X million terms)
| 6gvONxR4sf7o wrote:
| It sounds like the problem is that it's dominated by a few
| terms, but finding them is tricky. If you have 1.0 x + 2.0
| x - 3.0 x - 5/4 x + x - x + x - x ... (etc for a few GB)
| and then quadratic terms, it'll take work to figure out
| whether the dominant term is linear or quadratic.
| Cancelling out the potentially important intermediate terms
| (especially in higher dimensions) sounds like a mess.
| cha42 wrote:
| The largest fancy math object I know is probably the proof of
| the following theorem:
|
| https://link.springer.com/chapter/10.1007/978-3-030-51074-9_.
| ..
|
| The proof is 200Gb large. I am quiet sure now even larger
| proof exists, in particular thet exhaust some combinatorial
| property on graphs.
| gremgoth wrote:
| Name shared with https://www.symbolica.ai, a Vinod Khosla-backed
| start up.
| data_maan wrote:
| I was a t first also confused about this and thought they were
| the same.
|
| (Not sure though why you mention this Khosla guy, should I even
| know him?)
| T-A wrote:
| > this Khosla guy, should I even know him?
|
| https://en.wikipedia.org/wiki/Vinod_Khosla
| Der_Einzige wrote:
| Namespace conflicts from AI projects are annoying. Mamba was a
| damn reimplementation of the anaconda package manager, not a
| new NN architecture!
| medo-bear wrote:
| This only seems to focus on polynomial equations. If so it is a
| bit of a strech to call it a CAS
| okaleniuk wrote:
| There is also a linear solver in the Matrix.
| SPACECADET3D wrote:
| It has pattern matching, Groebner basis computations,
| expression simplification, series expansion, numerical
| integration, etc.
|
| Deep down every CAS is about manipulating polynomials :)
| medo-bear wrote:
| Compare it to a free CAS like Maxima for example,
| Maxima is a system for the manipulation of symbolic and
| numerical expressions, including differentiation,
| integration, Taylor series, Laplace transforms, ordinary
| differential equations, systems of linear equations,
| polynomials, sets, lists, vectors, matrices and tensors.
| SPACECADET3D wrote:
| Most of these features are included in Symbolica in some
| capacity (ODE solving is missing) and there are CAS
| features Symbolica has and that Maxima has not (like
| advanced pattern matching), even though it is only a year
| old.
|
| It is not just a matter of whether a feature is there, it
| needs to be usable in practice. You cannot use Maxima to do
| computation with large rational polynomials as this paper
| shows:
|
| https://arxiv.org/pdf/2304.13418
|
| Symbolica is 10 times faster and uses 60 times less memory
| than Maxima on a medium-sized problem. The larger sized
| problem does not run with Maxima. Note that this is tested
| with an older version of Symbolica, the latest version is
| even faster.
| anthk wrote:
| Use a different Common Lisp implementation. There's a
| huge difference between Clisp, ECL and SBCL.
|
| Sith SBCL, open maxima and run:
| load("maximalocal.mac"); :lisp (sb-ext:save-lisp-
| and-die "maxima-optimised" :toplevel #'run :executable t)
|
| Then you sould run maxima-optimized as the new executable
| image.
| tzs wrote:
| > Symbolica is 10 times faster and uses 60 times less
| memory than Maxima on a medium-sized problem. The larger
| sized problem does not run with Maxima
|
| Hah...change "Maxima" to "Macsyma" and "Symbolica" to
| "SMP" and that is close to a slide I remember seeing
| around 1980 in a presentation by Wolfram and Cole
| explaining why they had developed a new computer algebra
| system, SMP, instead of using one of the already
| available systems.
|
| I don't remember the exact numbers on their slide, but
| same situation. Existing systems could handle the medium
| problems that came up in their physics research but were
| slow and used a lot of memory, and could not do the large
| problems.
| Y_Y wrote:
| > Sometimes a Symbolica license key is needed on a machine that
| is not connected to the internet. For this purpose, an offline
| key that is valid for 24 hours can be generated from a valid
| license key on a machine that is connected to the internet.
|
| Even Mathematica doesn't pull shit like that.
| SPACECADET3D wrote:
| Author of Symbolica here: this may change in the future. Note
| that it is easy to do this, you just call the function
| from symbolica import \* set_license_key('YOUR_KEY')
| print(get_offline_license_key())
| Y_Y wrote:
| Hi. Nice work, I'm really glad to see a new CAS and this is
| an area that is close to my heart. The problem I have isn't
| so much that it's difficult to jump through the licensing
| hoops (although anything is more difficult that not using
| licenses), it is that you put restrictions on the user of the
| software that your competitors don't have.
|
| I make closed-source commercial software at my dayjob, I
| understand you want to get paid. The trouble is that a
| featureful CAS either takes decades to build by hand (e.g.
| Axiom) it relies on a huge amount of FOSS libraries (e.g.
| Sage), or both (e.g. Mathematica).
|
| Making me "phone home" to check I'm up to date on my
| subscription to some algebra manipulation algorithms is a
| non-starter, especially when even a PhD student has to pay.
| (I know you have a single-threaded free version, but that
| didn't make much sense when your USP is speed.)
| tverbeure wrote:
| Isn't this one of those cases where those who do it right get
| punished and others don't?
| okaleniuk wrote:
| There is a missing variable declaration in the Colab playground.
| y = Expression.var('y') e = 1/(x*y+1) e =
| e.derivative(x) md(e.to_latex())
|
| I suppose, the first line should be: x, y =
| Expression.var('x', 'y')
| SPACECADET3D wrote:
| Thanks, fixed it! It should be x, y =
| Expression.vars('x', 'y')
|
| indeed
| tdullien wrote:
| How does this compare to SAGE?
| kragen wrote:
| sage is free software, this is proprietary
| medo-bear wrote:
| Sage also seems to cover way more subject matter.
| SPACECADET3D wrote:
| Symbolica is only a year old, however most features are
| already in there. What is a Sage feature you'd like to see
| in Symbolica?
|
| Note that there are also features in Symbolica that are not
| in Sage, such as numerical integration, pattern matching
| and term streaming.
| kragen wrote:
| while i do not believe you have any obligation to license
| it under an open-source license, i think people who use
| it under a proprietary license are being foolish. a cas
| is an essential tool for day-to-day work, and becoming
| dependent on a proprietary software vendor for that
| usually ends badly
|
| so in a sense that's a 'sage feature i'd like to see'
| __MatrixMan__ wrote:
| I feel similarly. While I myself might gamble on learning
| a tool like this, I'd be reluctant to recommend it to
| students unless I was very confident that it would always
| be there when they reached for it. Source-available does
| scratch that itch more or less, but it creates some
| reluctance.
| kragen wrote:
| > _Students and hobbyists can use Symbolica for free. Once
| Symbolica is being used professionally, either in an academic
| context or in a commercial company, a license is required. The
| preferred license model for academic use is an institution-wide
| license._
| parl_match wrote:
| > a state-of-the-art commercial computer algebra system while
| being as open as possible
|
| > Get a license key for offline use, generated from a licensed
| Symbolica session. The key will remain valid for 24 hours.
|
| lmao
|
| This is a really impressive project, but the practically always-
| on requirement - including an internet connection to go offline -
| is absolutely hilarious.
|
| Also, the requirement for me to "get a quote" to get an idea of
| how much it'll cost me? I'm not going to even bother trying the
| free trial. I can tell you how much MatLab cost me for my
| personal projects - $149.
|
| Now I'm not saying MatLab and this are an apples to apples
| comparison (not even close), but y'all are chopping yourselves
| off at the knees.
| SPACECADET3D wrote:
| Author of Symbolica here: for your personal projects the cost
| is 0, as you'd be a hobbyist.
|
| Symbolica is developed by only one person, so forgive me if I
| can't get every aspect of the project right on the first try
| (especially the non-technical part) :) I will see about
| removing the online on start-up part. It's essentially the only
| anti-piracy step that I have.
|
| At the moment there is no fixed cost for use in industry, since
| the price will vary based on the amount of users and other
| factors.
| aardvark179 wrote:
| Give people a ballpark single user price, and a note that
| discounts can be given for multiple users etc. If you don't
| quote any price the assumption will be, "if you have to ask
| you can't afford it."
| auggierose wrote:
| That's probably how it is. Given that he sells only
| academic licenses, if he sells 3 site licenses for EUR6000
| each, that's a salary (a low one, but you can actually live
| from it).
|
| If he advertises a single-user license for EUR200, let's
| say, then each site has to have at least 30 users to make
| the same kind of money. Unlikely each current site has that
| many users, so it doesn't make sense to offer single-user
| licenses if there is the danger that sites will jump to
| that.
| blipmusic wrote:
| I don't mean to belittle your great achievement with license
| annoyances so forgive me if this sounds harsh, but I won't
| look twice at any software with an online requirement, if
| internet connectivity is not an integral part of the software
| itself. I do realise open source can be a dark, unthankful
| place that will not pay bills for most developers so this is
| not about the cost itself.
|
| Unfortunately, pirates almost always have it easier than
| paying customers, since license checks will probably be
| removed. Though this is hearsay (anyone?), there was "legal
| piracy" (no, there's no such thing :P) in the license-via-
| printer-port-dongle-era, since the dongles sometimes failed
| at the worst of times (e.g. live recording at a studio). So
| some users/studios bought a license to be legally covered on
| paper, but used a pirated version.
|
| I live in a "well-connected" country, but a traveling a few
| kilometers in the wrong direction leaves me in complete radio
| silence, and sometimes work (academia) has required me to
| stay at such places for a couple of days. Since you know
| Rust, I can (and have had the need to) add `--offline` when
| building, with required crates locally cached. I know many
| researchers with the need to bring high-tech equipment +
| software to remote locations for work over many weeks,
| sometimes months. The need to find a city just to do a
| software license check would be crazy.
|
| Unfortunately, I also don't have a good solution, other than
| trying to trust your customers. An online check once, at
| install, I can possibly live with, even if I've had to do
| reinstalls from local files in the field as well...
| Scarblac wrote:
| He's already said the fee for you is 0. It seems he's
| mostly going for the university side wide licenses, I don't
| think issues such as yours are very important for him.
|
| Most people at a university who want to run a computation
| for a few days will do it on a computer that's permanently
| connected to the net, I think. Not their laptop.
| krackers wrote:
| I feel like this is missing some comparisons to Sympy and
| Mathematica. Probably it's more polished than Sympy, but if I'm
| going to closed-software software why would I pick this over MMA?
| SPACECADET3D wrote:
| It depends on what you want to do. It should be much faster
| than Sympy and it is often much faster than Mathematica, for
| example if you do pattern matching or are manipulating rational
| polynomials.
|
| The idea of Symbolica is that you can use it as a library
| inside your existing projects, which is harder to do with MM
| since it is its own ecosystem.
|
| Moreover, for personal projects Symbolica is free.
| HiggsBozo1337 wrote:
| Despite Symbolica being licensed, its source code is still
| available which clearly shows the author's intent. It may be
| important in various contexts, e.g. security or satisfying
| certain grant requirements in academia, or whenever custom
| minor modifications are necessary.
| nullhole wrote:
| What intent do you infer from the fact that it's source-
| available instead of being FOSS?
| kragen wrote:
| cynically, one possibility is the intent to be able to sue
| open-source cas authors and distributors who had access to
| it and then wrote substantially similar code. charitably,
| it's intended to allow users to resolve whatever problems
| they have with the system, by debugging and, if necessary,
| patching it
| abdullahkhalids wrote:
| The most obvious comparison is in syntax. Easier syntax means
| less user time spent. In Symbolica, an example from the
| documentation from symbolica import
| Expression x = Expression.var('x') f =
| Expression.fun('f') e = x + f(x) + 5 e =
| e.replace_all(x, 6) print(e)
|
| In Mathematica, the same thing is e = x +
| f[x] + 5 e /. x -> 6
|
| What I find striking is that, we know that Python is the most
| popular language because you don't have to declare your
| variables or your function headers, and can just start writing
| the logic of your computation. Then, people keep inventing
| these mathematics programs in Python, that need you to declare
| your variables before using them.
| forgotpwd16 wrote:
| Should note the `/.` is syntactic sugar (or special syntax)
| for `ReplaceAll[]` function. And basically anything can be
| written as M-expressions. For any expression this form can be
| retrieved with `FullForm[expr]` (may have to use
| `Hold[expr]`). So for your example with no special syntax:
| Set[e,Plus[5,x,f[x]]] ReplaceAll[e,Rule[x,6]]
| SPACECADET3D wrote:
| You can also just use
| Expression.parse('x+f(x)+5')
|
| Of course, to refer to a specific variable of the CAS in
| Python, you need to bind it to a Python variable. There is no
| way around this.
|
| In the end most of the time of the user is not spent on
| syntax, but on designing algorithms. With Mathematica, you
| are locked into the Mathematica ecosystem. With Symbolica /
| sympy and other CASs that are libraries, you can use all the
| familiar data structures of the language you are coding in.
| sgdpk wrote:
| Does this handle elimination of variables in a polynomial system
| (using an eliminating order for Groebner basis)?
| SPACECADET3D wrote:
| Author here: you can generate the Groebner basis in lex order
| or compute a resultant, but it doesn't automatically
| backsubstitute the system at the moment. This is mostly because
| I haven't committed yet to a format to describe roots of
| polynomials. It's on the todo list though :)
| sgdpk wrote:
| Thank you for replying! The project seems promising, I'll
| follow with interest. Hope it goes well :)
| Aardwolf wrote:
| It is an interesting combination of open source yet paid.
|
| But the price is "Contact us for a quote"
|
| Can't they at least give a ballpark number of what the price is?
| Matlab and Mathematica are about $1000-3000 per year for
| commercial license, they aren't hiding their price.
| SPACECADET3D wrote:
| Author here: thanks for the feedback. I will add a price range
| soon. The reason why it is not there in the first place is
| because I am thinking about site-wide licenses, which are often
| quote-based (also for Mathematica). For universities site-wide
| licenses are common, but for industry maybe less so. For
| reference, a university site-wide license is about 6000 EUR per
| year at the moment.
| data_maan wrote:
| 6000 ... per month? Per Year? Lifelong?
| SPACECADET3D wrote:
| I have updated the post. It's an annual _site-wide_
| license, so not per user.
| mrob wrote:
| Open Source refers to software that meets the Open Source
| Definition:
|
| https://en.wikipedia.org/wiki/The_Open_Source_Definition
|
| This software is "Source Available":
|
| https://en.wikipedia.org/wiki/Source-available_software
| kragen wrote:
| it's not open source
| lifthrasiir wrote:
| (Ab)using `build.rs` for license checking is brilliant and
| horrible at once ;-) (Another argument for sandboxing build
| scripts?)
|
| By the way, `Cargo.toml` example in the installation section has
| a significant typo: symbolica = { "*" } #
| Should have been just `symbolica = "*"`.
| SPACECADET3D wrote:
| Thanks for reporting, I fixed the typo.
|
| I actually had an idea to do an OEM license check in build.rs
| that compiles out all license checks so that this version can
| be included in customers' software ^^
| arjvik wrote:
| I can't find this code - which build.rs file is it in?
| lifthrasiir wrote:
| See https://symbolica.io/docs/get_started.html#license for
| the context.
| MichaelMug wrote:
| I see all the license checking code in lib.rs but nothing
| in build.rs?
| vindex10 wrote:
| The idea reminds me of FORM, popular in Particle physics
| community:
|
| https://github.com/vermaseren/form
|
| http://www.nikhef.nl/~form/
|
| https://en.wikipedia.org/wiki/FORM_(symbolic_manipulation_sy...
| SPACECADET3D wrote:
| I've actually been a developer of FORM since my PhD (which I
| did with the author of FORM, Jos Vermaseren)! In Symbolica, I
| am taking the best features of FORM, while making it easier to
| use.
| vindex10 wrote:
| Exciting! I've never been an active user, but I always
| appreciated it as a core tool in QFT calculations.
|
| I even created a simple tool for squaring matrix elements
| based on FORM:
|
| https://github.com/vindex10/form-square
|
| Thank you for staying creative, for thinking big and
| expanding beyond HEP :)
| anthk wrote:
| I've never got to _solve_ a simple equation under Form.
| Everything else looks easy, as most of the answers are either
| tautological or factor arrangements without stating explicit
| units or magnitudes; but I didn 't know how to get
| _numerical_ answers.
|
| Even by defining functions equally to 0.
| anthk wrote:
| I was about to say that.
| JonChesterfield wrote:
| > Symbolica allows you to build and manipulate mathematical
| expressions through matching and replacing patterns, similar to
| regex for text
|
| Some details on this are at
| https://symbolica.io/docs/pattern_matching.html
| tempodox wrote:
| > In the case of halted development, existing and new users can
| buy a perpetual license for the most recent version.
|
| Promises, promises. I don't doubt the author's intentions, but
| then later the owner(s) get bought out and the new owner doesn't
| honor that promise. We've seen this kind of stuff way too often
| in the past.
| anonzzzies wrote:
| Impressive work, especially for one person!
| brcmthrowaway wrote:
| Can this be combined with LLMs somehow to creatte AGI?
| HiggsBozo1337 wrote:
| I am leading an academic research group with a site-wide
| Symbolica license.
|
| Because Symbolica is in early development and the work of a
| single person for now, one great benefit for us is the dedicated
| attention we receive. Any bug or feature we're particularly
| interested in gets immediate attention.
|
| And despite the product being licensed, Symbolica's source-
| available nature gives us full confidence in the author's long-
| term intent. We therefore trust that accepting Symbolica as a
| dependency of the framework we are building will never constitute
| a point of failure.
|
| Supporting Symbolica's nascent effort and having a direct line of
| contact with its single author also means it is easy to discuss
| particular arrangements specific to our use case, such as end-
| user license requirements.
| jiggawatts wrote:
| I'm not sure what I like the most: the positive collaborative
| attitude, or your user name!
| 6gvONxR4sf7o wrote:
| Cool stuff! One comment on the landing page: the slideshow view
| thingy of examples is fast, and when I click one to read it, it
| moves to the next one so fast again, so I can't really look at
| the demos.
|
| I also can't quickly find any details about what
| field/algebra/whatever these cover. If I make a Expression.var,
| what structure is it assumed to have?
|
| Great job on this project :)
| SPACECADET3D wrote:
| Thanks for the feedback! I will see if I can slow down the
| slideshow. You can see more demos in the docs and the live
| notebook.
|
| An expression is very general. Each variable and function is
| commutative and should hold for the complex numbers. For
| functions you can set if they are symmetric, linear or
| antisymmetric. Non-commutativity can be emulated by adding an
| extra argument that determines the ordering or by giving them
| different names.
|
| If you use the Polynomial class instead of Expression, you can
| choose the field yourself. This is especially the clear in Rust
| where most structures are generic over the field. For example:
|
| MultivariatePolynomial<AlgebraicNumberRing<RationalField>>
|
| or UnivariatePolynomial<FiniteField<u64>>
| 6gvONxR4sf7o wrote:
| Thanks for the quick answer! I had only looked at the python
| API docs, so I missed that. I've just been wrapping up
| learning a bunch of Lie theory and will keep symbolica in
| mind next time I want to play with some big nasty
| expressions!
|
| > Non-commutativity can be emulated by adding an extra
| argument that determines the ordering or by giving them
| different names.
|
| Would you mind giving an example? (or just tell me it's in
| the docs and i'll look deeper)
| SPACECADET3D wrote:
| It's not a language specific feature, but you can do the
| bookkeeping yourself. In the simplest form you can write:
| f(1,...)*f(2,...)
|
| Then when you do pattern matching with wildcards x_ and y_
| you can do f(x_,...)*f(y_,..)
|
| with the requirement that x_ < y_. This way you will know
| you match them in the expected order and not the other way
| around.
| k2enemy wrote:
| Yes, that is super annoying. I was trying to read the examples
| and they kept changing out from under me. To the developer:
| don't slow down the animation of the gallery. Make the examples
| static.
| auggierose wrote:
| How does source-available work together with license keys? Can I
| not just compile it myself and be done with the license key?
| ted_dunning wrote:
| It works by allowing the project to deal with honest people and
| ignore assholes efficiently.
|
| And for a small team (in this case, one person), getting rid of
| assholes who just want to rip the project off with minimal
| effort is a big win.
|
| After all, if you just want to play around with the system you
| are a hobbyist and can get it for free anyway. Why go to the
| extra effort of stealing the code?
|
| And if you actually are creating value with the system, don't
| you think you might want some support?
|
| If your answer in either case is that you would rather cheat
| the author then there is nothing tangible stopping you, but you
| just defined who you are and selected yourself out of the class
| of people the maintainer has to deal with.
| oxxoxoxooo wrote:
| Please, what do you use for bigints? GMP?
| SPACECADET3D wrote:
| I am using GMP indeed, through the Rust crate `rug`.
| kragen wrote:
| > _Students and hobbyists can use Symbolica for free. Once
| Symbolica is being used professionally, either in an academic
| context or in a commercial company, a license is required. The
| preferred license model for academic use is an institution-wide
| license._
|
| while i do not believe the author has any obligation to license
| it under an open-source license, i think people who use it under
| a proprietary license are being foolish. a cas is an essential
| tool for day-to-day work, and becoming dependent on a proprietary
| software vendor for that usually ends badly
|
| (repost from elsethread)
___________________________________________________________________
(page generated 2024-05-09 23:01 UTC)