On Apr 11, 2011, at 4:28 PM, Alexey U. Gudchenko wrote: > 12.04.2011 02:20, Aaron S. Meurer пишет: >> On Apr 11, 2011, at 4:12 PM, Alexey U. Gudchenko wrote: >> >>> 12.04.2011 01:56, Ronan Lamy пишет: >>>> Le lundi 11 avril 2011 à 15:42 -0600, Aaron S. Meurer a écrit : >>>>> On Apr 11, 2011, at 2:25 AM, smichr wrote: >>>>> >>>>>> Should `Integral(x, (x, 1, 2)) == Integral(y, (y, 1, 2))` be True? If >>>>>> so, smichr branch 2068b has a commit that makes this testing possible. >>>>>> >>>>> This is a good question. For one thing, == is not mathematical >>>>> equality but exact equality, so there is no reason why it should have >>>>> to be True. So my initial response is that no, it should not. >>>>> >>>> I think it should. x and y are bound symbols that have no meaning >>>> outside the integrals, so their identity should be completely >>>> irrelevant. In fact, they should probably be replaced with dummies upon >>>> instantiation of the Integral. >>>> >>>> >>> >>> Mathematically equal. (especially when assumptions for symbols are equal >>> too). >>> >>> Another question what means "==" in SymPy: mathematical >>> or not (pythonic?). >>> >>> Aaron, what do you mean by "exact equality"? >>> E.g Does the "Max(1, 2, x)" exact equal to the "Max(2, x)" or not? >>> >>> >>> -- >>> Alexey U. >> >> "Exact" meaning it checks if the objects are equal. The usual example is >> that we have >> >>>>> (x + 1)**2 == x**2 + 2*x + 1 >> False >> >> I thought Max(1, 2, x) automatically reduced to Max(2, x). In that case, >> then, obviously they would be equal with ==. Also you would have Max(2, x) >> == Max(x, 2) because it internally uses a data structure that does not care >> about order (set or frozenset). > >> Whenever you see == in SymPy, it is specifically assuming this exact/object >> equality. >> >> Another thing to consider is: >> >> In [190]: hash(Integral(x, (x, 0, 1))) >> Out[190]: -9173880960074697984 >> >> In [191]: hash(Integral(y, (y, 0, 1))) >> Out[191]: −299967655319032172 >> >> A == B should imply hash(A) == hash(B). >> >> Aaron Meurer >> > > About Max, you are right exactly. > > But why not to use data structure in Integrals too (do not care about > dummy variable) ? > > -- > Alexey U.
Well, I guess it comes down to whether or not we should do that. By the way, for my hypothetical above, they should *not* compare equal (because even though the order of integration doesn't matter mathematically, it actually makes a difference computationally). What I am saying is that they should not compare equal unless we do that, though (for example, because of hashing). Aaron Meurer -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
