On Jul 31, 2009, at 8:42 PM, Marco wrote:

>
> Hi Aaron,
>
> The Set class is important to have as a master class for all kinds of
> other classes which should exist, such as Group, Field, Vector space,
> Algebra, etc.  As it is in Category theory.
>
> A Python set may indeed be a good place to start, but as you suggest,
> it would only be a finite set of objects.  There should be a more
> general Set class, so that for example we would have a set called the
> Rationals, which itself is a class, and this set would have properties
> such that 5/6 in Rationals would evaluate as True, even though 5/6 was
> not specifically instantiated beforehand.

This should be easy.  We have a Rational class that is what every  
rational number is an instance of.  For example, 5/6 as a rational  
number in SymPy would be represented as Rational(5, 6).  It would be  
easy to create a RationalSet class that checks to see if something is  
an instance of Rational or if it has Rational assumptions on it in  
RationalSet.__contains__().  So for example,
 >>> Rational(5, 6) in RationalSet
and
 >>> a = Symbol('a', rational=True)
 >>> a in RationalSet

would both return True.  This should work very nicely with our new  
assumptions system that we are getting.
>
> In terms of what I have in mind for calculations, there are so many!
>
> For example, out of a manifold one creates many vector bundles and
> vector spaces, such as the tangent bundle and the vector space of
> differential forms (these are possibly the most famous but there are
> many others)  There are many calculations which can be done with
> forms, taking interior and exterior products, derivatives, etc.  Most
> of the time we don't do these calculations in coordinates - they are
> coordinate-free (this is where their main power comes from).  Even
> when we work on specific manifolds like spheres or tori, we still do
> not do our calculations in coordinates except in the most necessary
> cases, and in this case we choose coordinates in special ways.
>
> As an example, you could calculate the following fact:  if X is a
> vector field and a is a 1-form, and p is a differential form (of mixed
> degree) then there is a universal identity
>
> (X + a)(X + a)p = a(X) p,
I am not familiar with the theory of manifolds, but I think I can see  
that there really are things to be calculated here.
>
> where the left hand side is interior product by X and exterior product
> by a,  done twice,  and the right hand side is just multiplication by
> a scalar a(X).
>
> This kind of calculation is usually done by hand, without coordinates,
> just using the intrinsic behaviour of the quantities X, a, p.
>
> Another issue is that we often combine vector spaces  - we take direct
> sums, tensor products, exterior products of vector bundles and of
> vector spaces... To extend all our operations to these spaces should
> be easy if they inherit from the right master classes... usually in
> the maple or mathematica packages i've used, the operations are not
> defined in this object-oriented way and so you have to teach the
> computer all your operations again, even though it should be obvious
> what they mean, because of inheritance.

I think having a master Set class would even help for some of the  
other thing that SymPy does.  For example, I would assume that Set  
would be able to easily represent that it is the union of two other  
sets, either by having that build in to the class or by having a Union  
subclass.  We could then make Interval a subclass of set and it would  
be easy to represent something like [1, 2]U[3, 4].  We could even have  
infinite union support and be able to easily represent something like  
R - Z as ...U(-1, 0)U(0, 1)U(1, 2)U....  It would fit in nicely if,  
for example, an object has the assumptions real=True and  
integer=False, if and only if it is a member of that set.

Great!  Looking forward.

Aaron Meurer

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com
To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to