# \[ANN\] Symbolics.jl: A Modern Computer Algebra System for a Modern Language

**URL:** https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251
**Category:** Package Announcements
**Created:** [March 1, 2021, 2:59pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251 "2021-03-01T14:59:40Z")
**Posts on this page:** 20
**Page:** 7

<div class="post-metadata">

### Author: ![nandoconde](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nandoconde/32/19497_2.png) [@nandoconde](https://discourse.julialang.org/u/nandoconde)
#### Post date: [March 16, 2021, 9:42am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/123 "2021-03-16T09:42:44Z")

</div>

Welcome to Julia, and thanks for dropping by to help!

I’d say that if you feel comfortable with the syntax of the language, you could just immerse yourself in the related packages:

- [Symbolics.jl](https://github.com/JuliaSymbolics/Symbolics.jl/) has all the saucy CAS stuff
- [SymbolicUtils.jl](https://github.com/JuliaSymbolics/SymbolicUtils.jl) for expression rewriting and simplification
- [ModellingToolkit.jl](https://github.com/SciML/ModelingToolkit.jl) is the package where it all came from. Used as modelling framework to solve all kind of equations that describe physical systems by means of ODEs, PDEs, and such.

If you find yourself more comfortable directly talking with the people involved in the project, you could drop by the Zulip conversation and engage with them there: [Zulip Symbolic Programming Chat](https://julialang.zulipchat.com/#narrow/stream/236639-symbolic-programming/)

Thanks for your advice!

---

<div class="post-metadata">

### Author: ![KZiemian](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kziemian/32/9020_2.png) [@KZiemian](https://discourse.julialang.org/u/KZiemian)
#### Post date: [March 16, 2021, 12:37pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/124 "2021-03-16T12:37:46Z")

</div>

Since this discusion already deal with some many topics around computer algebra systems, I hope this question have its place hear.

Among other things, I’m interested in symbolic computing for general relativity usage. Case and point, I want to write down symbolic expression for [metric tensor](https://en.wikipedia.org/wiki/Metric_tensor) and get out [Christoffel symbols](https://en.wikipedia.org/wiki/Christoffel_symbols) (this is only tip of the iceberg, but already quit a computation).

Ideal test case for me is [Schwarzschild metric](https://en.wikipedia.org/wiki/Schwarzschild_metric), for which most of the Christoffel symbols should be equal to 0. Is using Symbolics.jl for this problem now or in the future is reasonable thing?

---

<div class="post-metadata">

### Author: ![Syx\_Pek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/syx_pek/32/6364_2.png) [@Syx\_Pek](https://discourse.julialang.org/u/Syx_Pek)
#### Post date: [March 16, 2021, 2:27pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/125 "2021-03-16T14:27:25Z")

</div>

I am currently preparing a notebook for PlutoCon, using `Symbolics.jl` to explain Gaussian curvature. I think it is possible to do what you suggest, but my experience is that “simplifying expressions” (a difficult problem in CAS) to display is not really there, but if using Symbolics.jl to output programs that compute Christoffel symbols is definitely possible already.

---

<div class="post-metadata">

### Author: ![KZiemian](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kziemian/32/9020_2.png) [@KZiemian](https://discourse.julialang.org/u/KZiemian)
#### Post date: [March 16, 2021, 2:57pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/126 "2021-03-16T14:57:34Z")

</div>

Thank you, I now have another motivation to learn Symbolics.jl. This be quite a ride. 😄

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [March 16, 2021, 3:04pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/127 "2021-03-16T15:04:43Z")

</div>

Let’s take new feature discussions to issues and new threads. The release post is 125 responses already, and I want everything to get its own visibility.

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [March 16, 2021, 3:17pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/128 "2021-03-16T15:17:46Z")

</div>

Yes welcome! Let’s take the implementation discussions to the repo.

---

<div class="post-metadata">

### Author: ![KZiemian](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kziemian/32/9020_2.png) [@KZiemian](https://discourse.julialang.org/u/KZiemian)
#### Post date: [March 16, 2021, 10:37pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/129 "2021-03-16T22:37:42Z")

</div>

> [@rfateman](#):
>
> To do that relying on the fundamental theorem of calculus is not a great idea, since the interesting tasks require contour integration. Paul Wang’s MIT thesis worried about that.

Thank you for mentioning that work. Due to blessings of MIT and internet I download Wang’s thesis and I hope I will read it in following weeks.

---

<div class="post-metadata">

### Author: ![greatpet](https://avatars.discourse-cdn.com/v4/letter/g/e495f1/32.png) [@greatpet](https://discourse.julialang.org/u/greatpet)
#### Post date: [March 17, 2021, 9:39pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/130 "2021-03-17T21:39:13Z")

</div>

How do the term rewriting capabilities of SymbolicUtils.jl compare with Wolfram Mathematica’s pattern matching / replacement?

---

<div class="post-metadata">

### Author: ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)
#### Post date: [March 18, 2021, 1:21am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/131 "2021-03-18T01:21:29Z")

</div>

Please do not feel restricted by the current implementation. It has gone through a number of revisions – including revisions of approaches essential to CAS aspects. We still are quite interested in best guidance from those who have worked hard to accrue it.

---

<div class="post-metadata">

### Author: ![shashi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shashi/32/1824_2.png) [@shashi](https://discourse.julialang.org/u/shashi)
#### Post date: [March 24, 2021, 12:26am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/132 "2021-03-24T00:26:07Z")

</div>

yeah the documentation is wrong here. Default is `polynorm=false`.

---

<div class="post-metadata">

### Author: ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)
#### Post date: [March 24, 2021, 5:03am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/133 "2021-03-24T05:03:31Z")

</div>

> [@dimpase](#):
>
> I also don’t see why dependence of external libraries differently licensed is a problem. E.g. you have [gmp.jl](https://github.com/JuliaLang/julia/blob/master/base/gmp.jl) in Julia base, and nobody is worried that GMP is under GPL, right? Then, if GMP is OK, then why MPFR etc is not?

GMP is dual licensed LGPL3+ or GPL2+ so it’s not really an issue. The only GPL-only dependency of Julia itself is SuiteSparse, which is a significant annoyance quite often but at least a commercial license can be purchased if necessary. In particular, the SuiteSparse dependency means that we cannot ship a version of Julia that uses MKL as its BLAS library, which many people have wanted over the years.

---

<div class="post-metadata">

### Author: ![dimpase](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dimpase/32/22644_2.png) [@dimpase](https://discourse.julialang.org/u/dimpase)
#### Post date: [March 24, 2021, 8:39am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/134 "2021-03-24T08:39:17Z")

</div>

all the libraries I kept in mind are available under LGPL 2+, that is, like GMP.

---

<div class="post-metadata">

### Author: ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)
#### Post date: [March 24, 2021, 4:57pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/135 "2021-03-24T16:57:07Z")

</div>

I don’t know what you have in mind, but the practical difference between LGPL and GPL is so large that lumping them all under “GPL” strikes me as quite misleading: LGPL libraries have no impact on what other libraries you can use whereas GPL libraries prevent redistributing an application that is not fully open source. For some that is fine, for others it’s a show stopper.

---

<div class="post-metadata">

### Author: ![gbaraldi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gbaraldi/32/22101_2.png) [@gbaraldi](https://discourse.julialang.org/u/gbaraldi)
#### Post date: [March 24, 2021, 5:12pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/136 "2021-03-24T17:12:48Z")

</div>

Is there an effort to make a julia implementation of something like suitesparse? I know it is a very optimized library so it might not be worth it

---

<div class="post-metadata">

### Author: ![dimpase](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dimpase/32/22644_2.png) [@dimpase](https://discourse.julialang.org/u/dimpase)
#### Post date: [March 24, 2021, 6:39pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/137 "2021-03-24T18:39:57Z")

</div>

> I don’t know what you have in mind, but the practical difference between LGPL and GPL is so large that lumping them all under “GPL” strikes me as quite misleading: LGPL libraries have no impact on what other libraries you can use whereas GPL libraries prevent redistributing an application that is not fully open source. For some that is fine, for others, it’s a show stopper.

Sorry for being careless here (although LGPL is relatively recent -  
when in 1994 I wrote my 1st code using GMP, version 1.3, it was still  
GPL only, only few years after LGPL appeared :-))

---

<div class="post-metadata">

### Author: ![miguelraz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miguelraz/32/631_2.png) [@miguelraz](https://discourse.julialang.org/u/miguelraz)
#### Post date: [March 25, 2021, 1:55am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/138 "2021-03-25T01:55:35Z")

</div>

Yes - [SymbolicTensors.jl](https://github.com/rjrosati/SymbolicTensors.jl) exists already (currently calls out to Sympy), and is due for a SymbolicUtils.jl backend soon.

---

<div class="post-metadata">

### Author: ![idontgetoutmuch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/idontgetoutmuch/32/321_2.png) [@idontgetoutmuch](https://discourse.julialang.org/u/idontgetoutmuch)
#### Post date: [April 3, 2021, 12:03pm UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/139 "2021-04-03T12:03:52Z")

</div>

I take it you are familiar with [https://sagemanifolds.obspm.fr/](https://sagemanifolds.obspm.fr/)?

---

<div class="post-metadata">

### Author: ![mlainz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mlainz/32/21183_2.png) [@mlainz](https://discourse.julialang.org/u/mlainz)
#### Post date: [April 5, 2021, 8:42am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/140 "2021-04-05T08:42:01Z")

</div>

Maple has similar (an in some cases more complete) functionality [DifferentialGeometry - Maple Help](https://www.maplesoft.com/support/help/maple/view.aspx?path=DifferentialGeometry)

---

<div class="post-metadata">

### Author: ![XVilka](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xvilka/32/7155_2.png) [@XVilka](https://discourse.julialang.org/u/XVilka)
#### Post date: [March 24, 2022, 3:14am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/141 "2022-03-24T03:14:03Z")

</div>

Was the SymPy feature parity issue not updated or it didn’t make any progress since? [https://github.com/JuliaSymbolics/Symbolics.jl/issues/59](https://github.com/JuliaSymbolics/Symbolics.jl/issues/59)

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [March 24, 2022, 8:47am UTC](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251/142 "2022-03-24T08:47:10Z")

</div>

That just hasn’t been updated. We need to do some issue triaging.

[Previous page](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251.md?page=6)

[Next page](https://discourse.julialang.org/t/ann-symbolics-jl-a-modern-computer-algebra-system-for-a-modern-language/56251.md?page=8)
