The varieties of `is_lowercase` don't bother me as much: some are easy to 
compute independently (like `is_number`) whereas others are more 
complicated and depend on other attributes (like `is_real`).

/c

On Monday, September 13, 2021 at 1:22:38 PM UTC-5 asme...@gmail.com wrote:

> A glossary would be a great idea.
>
> By the way, I am going to start writing a lot of documentation in
> SymPy soon (see https://groups.google.com/g/sympy/c/vYsavewGj1w). If
> anyone has things in SymPy that they wish were documented better,
> particularly the sorts of things that would go in high-level
> explanations and how-to guides, please reach out to me. We will likely
> be running some sort of survey for the same so watch this space for
> more information in the coming months.
>
> On Mon, Sep 13, 2021 at 12:14 PM Oscar Benjamin
> <oscar.j....@gmail.com> wrote:
> >
> > There is also is_Number vs is_number. There is also is_comparable which 
> means can be evalf'd to a real number.
>
> As an aside, I really wish we didn't have the is_Uppercase attributes.
> They were implemented as a performance hack because attribute lookups
> are slightly faster than isinstance(). But the cost they have had in
> terms of user confusion greatly outweighs any performance gain they
> have produced. We should consider deprecating them, or at the very
> least, banning the creation of new ones on new classes. I think it's
> also unfortunate that we have is_ methods that aren't actually part of
> the assumptions system. But that's just something we'll just have to
> document and live with.
>
> Aaron Meurer
>
> >
> > There should be a glossary of all the different attributes that are used 
> throughout sympy:
> >
> > In [1]: for name in dir(x):
> >
> > ...: if name.startswith('is'):
> >
> > ...: print(name)
> >
> > ...:
> >
> > is_Add
> >
> > is_AlgebraicNumber
> >
> > is_Atom
> >
> > is_Boolean
> >
> > is_Derivative
> >
> > is_Dummy
> >
> > is_Equality
> >
> > is_Float
> >
> > is_Function
> >
> > is_Indexed
> >
> > is_Integer
> >
> > is_MatAdd
> >
> > is_MatMul
> >
> > is_Matrix
> >
> > is_Mul
> >
> > is_Not
> >
> > is_Number
> >
> > is_NumberSymbol
> >
> > is_Order
> >
> > is_Piecewise
> >
> > is_Point
> >
> > is_Poly
> >
> > is_Pow
> >
> > is_Rational
> >
> > is_Relational
> >
> > is_Symbol
> >
> > is_Vector
> >
> > is_Wild
> >
> > is_algebraic
> >
> > is_algebraic_expr
> >
> > is_antihermitian
> >
> > is_commutative
> >
> > is_comparable
> >
> > is_complex
> >
> > is_composite
> >
> > is_constant
> >
> > is_even
> >
> > is_extended_negative
> >
> > is_extended_nonnegative
> >
> > is_extended_nonpositive
> >
> > is_extended_nonzero
> >
> > is_extended_positive
> >
> > is_extended_real
> >
> > is_finite
> >
> > is_hermitian
> >
> > is_hypergeometric
> >
> > is_imaginary
> >
> > is_infinite
> >
> > is_integer
> >
> > is_irrational
> >
> > is_meromorphic
> >
> > is_negative
> >
> > is_noninteger
> >
> > is_nonnegative
> >
> > is_nonpositive
> >
> > is_nonzero
> >
> > is_number
> >
> > is_odd
> >
> > is_polar
> >
> > is_polynomial
> >
> > is_positive
> >
> > is_prime
> >
> > is_rational
> >
> > is_rational_function
> >
> > is_real
> >
> > is_scalar
> >
> > is_symbol
> >
> > is_transcendental
> >
> > is_zero
> >
> >
> >
> > On Mon, 13 Sept 2021 at 18:56, Aaron Meurer <asme...@gmail.com> wrote:
> >>
> >> This would be a good thing to have some standalone documentation on.
> >> There are also some related things like the functionality that is used
> >> by diff() to determine what can be used as a differentiation variable,
> >> which is a little more complex than just free_symbols in general
> >> because you can have things like derivatives with respect to indexed
> >> expressions.
> >>
> >> Aaron Meurer
> >>
> >> On Mon, Sep 13, 2021 at 11:48 AM Chris Smith <smi...@gmail.com> wrote:
> >> >
> >> > > can be evalf'ed
> >> >
> >> > That's a clear and good reminder.
> >> >
> >> > /c
> >> >
> >> > On Monday, September 13, 2021 at 12:10:50 PM UTC-5 asme...@gmail.com 
> wrote:
> >> >>
> >> >> is_number means "can be evalf'ed". So for example, we have the 
> following
> >> >>
> >> >> >>> f = Function('f')
> >> >> >>> f(0).is_number
> >> >> False
> >> >> >>> f(0).free_symbols
> >> >> set()
> >> >>
> >> >> So you should use is_number specifically if you are checking if you
> >> >> can evaluate the expression to a literal number.
> >> >>
> >> >> Aaron Meurer
> >> >>
> >> >> On Mon, Sep 13, 2021 at 10:21 AM Paul Royik <distan...@gmail.com> 
> wrote:
> >> >> >
> >> >> > Thanks to everybody!
> >> >> >
> >> >> > On Monday, September 13, 2021 at 3:56:47 PM UTC+3 Oscar wrote:
> >> >> >>
> >> >> >> Think about things that are literally not numbers:
> >> >> >>
> >> >> >> In [9]: Interval(1, 2).is_number
> >> >> >> Out[9]: False
> >> >> >>
> >> >> >> In [10]: ImmutableMatrix([[1, 2], [3, 4]]).is_number
> >> >> >> Out[10]: False
> >> >> >>
> >> >> >>
> >> >> >> On Mon, 13 Sept 2021 at 13:00, Chris Smith <smi...@gmail.com> 
> wrote:
> >> >> >>>
> >> >> >>> To confirm, if you mean that it is free from any Symbol (free or 
> bound) then `not expr.has(Symbol)` will be best. But if you consider 
> `Integral(x, (x, 1, 2))` as a number then you should use `is_number` or 
> `free_symbols`, with `expr.is_number` failing sooner than `not 
> expr.free_symbols` if the expression has a free symbol. (So if you suspect 
> the expression has free symbols then use `is_number`, else `free_symbols`).
> >> >> >>>
> >> >> >>> `f.is_number != (not bool(f.free_symbols))` should be an 
> invariant for Expr, but SymPy also deals with Booleans, so 
> `S.true.is_number` is False and `S.true.free_symbols` is empty.
> >> >> >>>
> >> >> >>> /c
> >> >> >>>
> >> >> >>> On Sunday, September 12, 2021 at 11:56:23 PM UTC-5 
> distan...@gmail.com wrote:
> >> >> >>>>
> >> >> >>>> Are there any cases when f.is_number != (not 
> bool(f.free_symbols))?
> >> >> >>>>
> >> >> >>>> If I have an arbitrary expression, what is the correct way to 
> check whether it has variables?
> >> >> >>>>
> >> >> >>>> Thank you.
> >> >> >>>
> >> >> >>> --
> >> >> >>> 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+un...@googlegroups.com.
> >> >> >>> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/9af46205-ce22-494c-a604-c27b6682fa96n%40googlegroups.com
> .
> >> >> >
> >> >> > --
> >> >> > 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+un...@googlegroups.com.
> >> >> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/8717be3c-0286-4741-900c-94e21573f3c5n%40googlegroups.com
> .
> >> >
> >> > --
> >> > 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+un...@googlegroups.com.
> >> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/69d8097b-b81b-4490-ae85-0dbb946346c1n%40googlegroups.com
> .
> >>
> >> --
> >> 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+un...@googlegroups.com.
> >> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/CAKgW%3D6LOouUDFL9eooBukJz5G%2BSSMOoFWkVBLvwbqjrbduSjkA%40mail.gmail.com
> .
> >
> > --
> > 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+un...@googlegroups.com.
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/CAHVvXxQeJ8eOdCpSKsiAXPjZKrd_jS2WRmfLdZS_Drjm377L5g%40mail.gmail.com
> .
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/50f5774b-7835-470c-8a08-57617910ec4en%40googlegroups.com.

Reply via email to