# CAS Best Practices

**URL:** https://discourse.julialang.org/t/cas-best-practices/58092
**Category:** Machine Learning
**Tags:** symbolic
**Created:** [March 27, 2021, 8:51pm UTC](https://discourse.julialang.org/t/cas-best-practices/58092 "2021-03-27T20:51:11Z")
**Posts on this page:** 1
**Showing post:** 88

<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: [April 6, 2021, 10:15am UTC](https://discourse.julialang.org/t/cas-best-practices/58092/88 "2021-04-06T10:15:08Z")

</div>

Yes, that’s why in the tracer it’s planned to not do automatic evaluation, as described in [Symbolic sqrt(2) and sin(pi) - #21 by ChrisRackauckas](https://discourse.julialang.org/t/symbolic-sqrt-2-and-sin-pi/58633/21), with dispatches for alternative constructor-based simplifications all being type based.

> [@Fredrik\_Johansson](#):
>
> To keep things convenient for users, you may want unique\_solution(), any\_solution() and all\_solutions() functions or something similar.

That’s a good idea.

> [@Fredrik\_Johansson](#):
>
> Simple, unevaluated expressions by default are a win-win: easier to implement, easier and more versatile to use (the user can decide precisely which transformations to apply), and more efficient (symbolic expressions are a terrible data structure for algebraic computation). Instead of performing clever and invariably buggy automatic “canonicalization” on expressions, a far better solution is to convert to specialized data structures internally for computations (e.g. polynomial types for expanding or factoring).

That is what we do. Sounds like Symbolics.jl is on the right path then, thanks.

---

_[View the full topic](https://discourse.julialang.org/t/cas-best-practices/58092)._
