Another argument for keeping it is that it works nicely with the
assumptions system. In the assumptions system, ~Q.positive means "not
positive", whereas Q.nonpositive means "real and not positive". The
former item means *anything* that is not a positive real number. It
could be a negative number, a complex number, a matrix, a set, etc. In
other words, negation in the assumptions implicitly means universal
complement. Therefore if we want there to be a one-to-one mapping
between assumptions and sets (and I think we do), we need to allow the
universal set, because that is the corresponding set to Q.is_true (or
more simply, S.true).

Aaron Meurer


On Sun, May 11, 2014 at 11:35 PM, Aaron Meurer <[email protected]> wrote:
> I am -1 to remove it. As I explained in the issue, universal set is
> analogous to infinity for regular numerical arithmetic. Not all
> mathematical operations make sense for it, but there are some that do,
> and they are useful to have.  Of course, sometimes you do want to
> specify your domain. It is similar with numbers: sometimes you want to
> specify explicitly that you are working with the reals or the
> rationals or whatever. But it is annoying to have to do this all the
> time.
>
> We should just fix code that assumes that the reals are the universal set.
>
> Aaron Meurer
>
> On Sat, May 10, 2014 at 12:35 PM, Sergey B Kirpichev
> <[email protected]> wrote:
>> On Sat, May 10, 2014 at 11:03:12AM -0700, Harsh Gupta wrote:
>>>    This comes from the discussions on this PR
>>>    https://github.com/sympy/sympy/pull/7462#issuecomment-42111992
>>>    We have a class called UniversalSet which is supposed to be *set* which
>>>    contains all the sets which we can define in Sympy. The problem is that 
>>> we
>>>    really don't "know" what our defined Universal Set is. It has been
>>>    proposed by Sergey that we wipe out the Universal Set class. We can
>>>    explicitly provide the the known defined universal set when situation 
>>> asks
>>>    for it, that set can be complex, real or real*real or anything. I'm +1 to
>>>    the proposal. I guess this goes with "Explicit is better than Implicit"
>>>    from the Zen of Python.  At places we are implicitly assuming 
>>> UniversalSet
>>>    to Interval(-oo, oo) which is clearly wrong. Then we cannot define
>>>    operations like PowerSet and cardinality on such sets. We can avoid the
>>>    problem by leaving PowerSet or cardinality undefined for UniversalSet, 
>>> but
>>>    not having an UniversalSet will be a better way to avoid unknown
>>>    inconsistencies.
>>
>> btw, some statistics:
>> $ fgrep -R UniversalSet sympy/|wc -l
>> 22
>> $ fgrep -R UniversalSet sympy/ 2>/dev/null|grep -v 'core/sets.py'|grep -v 
>> 'core/tests/test_sets.py'|wc -l
>> 8
>>
>> --
>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sympy.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sympy/20140510183503.GB18695%40debian.
>> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6Lha96FWMNbERHQM3GUBgKTfninNYR-3mpZbmveSY0mJA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to