Emmy uses a number of dynamic variables to tune the behavior of the simplifier without having to thread explicit maps of options through the rulesets. This design is not optimal; in a future version, we'll move any rules that depend on these out to their own rulesets, and move the configuration variables over to [[emmy.simplify]].
The following predicates are used to restrict bindings in the rules that follow. Bindings can take multiple predicates, but it reads a bit better to have them tightened up into a single predicate.
the following rules are used to convert all trig expressions to ones involving only sin and cos functions, and to make 1-arg atan into 2-arg atan.
we can eliminate sin and cos in favor of complex exponentials.
under favorable conditions, we can replace the trig functions.