equals does a heuristic check using random floating point evaluation. That obviously doesn't fit for PermutationGroup or O, but I think it makes sense for an equals method on those objects to do mathematical equality. For regular expressions we also recommend checking if simplify(a - b) is 0, but that doesn't work in this case either.
For O(), I believe the best way to check equality is to check a.contains(b) and b.contains(a). For a permutation group I'd imagine there are different algorithms depending on the representation of the group so an equals method probably makes sense as an abstraction. The key thing with equals is that you either have to stipulate that a True answer could be wrong (which is what Expr.equals does, since random numerical testing doesn't prove two expressions are equal), or allow it to return True, False, or None, like the assumptions system does. Aaron Meurer On Sat, Jan 16, 2016 at 12:48 AM, Gaurav Dhingra <axyd0...@gmail.com> wrote: > Hi everyone, > > I was interested to know what would be a good answer to the question: > Q. How to check mathematical equality of objects in SymPy? (Here the object > is general, can be `PermutationGroup`, equality of `Order` or any other > object possible) > like mathematically `O( log(n!) , (n, oo) )` equals `O( n*log(n), (n, oo) > )`) -> currently not done in SymPy ) > > For above question i read some past archives, one of them being: > https://groups.google.com/forum/#!searchin/sympy/Mathematical$20equality/sympy/nK7UjJx28J4/LEsdy_Otl90J > Especially the @mrocklin 's comment. > I also beforehand thought of `.equals` method ( definetly not good to go > with `==` ). But i suspect, since the mathematical equality in Symbolic > system can be very difficult to check, > so defining `.equals` would be difficult for every object also, but for some > objects it can be possible. > > The other thing i thought of is `.rewrite` methods. > So in general what would be the answer to the above question? Perhaps some > light upon this will be helpful. > > Thanks > Gaurav Dhingra (gxyd) > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/5a91154a-eb2a-4b5f-ab6a-9dc32b4779eb%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6Lzm20ceHR_L1L946eENHs4LFknf27MbH%3DNHerbgcfYzQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.