Where is the best place to read about the new assumptions system?

On Thu, Jun 30, 2011 at 1:18 PM, Aaron Meurer <asmeu...@gmail.com> wrote:

> On Thu, Jun 30, 2011 at 7:17 AM, Matthew Rocklin <mrock...@gmail.com>
> wrote:
> > I agree that support for derivatives on matrices is important; I would
> like
> > this myself. I haven't thought much about it in the context of SymPy
> before
> > though so thank you for bringing it up.
> > I haven't solidified my understanding of this problem but it seems like
> > there are a few concepts of a derivative here.
> >
> > Given a matrix expression we can differentiate with respect to the
> various
> > matrices themselves. This is likely very similar to Aaron's example using
> > stock SymPy with non-commutative symbols. This should (I think) work out
> of
> > the box
> > Given a function on vector valued inputs with possible vector valued
> outputs
> > we can define directional derivatives. I think this is what Alan is
> talking
> > about. In this situation the objects can easily become high rank
> (Hessians
> > of vector-valued functions are not matrices). This leads me to the idea
> that
> > we should consider mathematical Tensors rather than matrices.
> >
> > The tensor vs matrix issue makes me nervous. There is a lot of special
> stuff
> > happening on rank two tensors (matrices) that we rarely care about at
> higher
> > ranks. Maybe this work should be done on a Tensor class and Matrices
> should
> > subclass Tensors? This is getting beyond the scope of what I was looking
> for
> > with a Matrix Symbol. I probably won't pursue this enhancement in the
> near
> > future but would be happy to support someone else's effort.
> > For the moment I'm not working on Matrix Expressions actually. I'm a bit
> > stuck on how to proceed and would welcome any suggestions. The best idea
> I
> > have now is to insert symbols into standard sympy Exprs and have aspects
> > like shape and is_invertible be functions which are called on the Expr
> tree
> > rather than fields or methods of the object. This will fail to raise
> > exceptions when illegal operations are performed but should get the job
> > done. The Indexed class is somewhat similar in flavor.
>
> This is something that you would (hopefully) be able to do with the
> new assumptions system.  In other words, without having to modify the
> core, you should be able to say ask(Q.invertable(A*B)) and it would
> determine it based on whether you set A and B to be invertible.  Shape
> should work too, though I'm not sure if the system can currently
> handle non-boolean assumptions (someone else will have to fill in
> here).
>
> By the way, is_invertible is perhaps something that could be
> implemented in the core directly, so you could have support for
> non-invertible symbols in any case.  It should just be a matter of
> making ._eval_power do the right thing in any case.
>
> Aaron Meurer
>
>
> >
> >
> > On Thu, Jun 30, 2011 at 7:05 AM, Alan Bromborsky <abro...@verizon.net>
> > wrote:
> >>
> >> Differentiation would only work with a scalar (communicative)
> >> differentiation operator.  If the matrix function is a function of a
> vector
> >> or matrix one would have to define the directional derivative for each
> case
> >> (which would be a scalar differential operator) and use the results of
> that
> >> operation to determine the properties of a vector or matrix derivative.
> >>  Note that determining the operator properties would also require a
> >> definition for the scalar product of vectors and matrices.
> >>
> >> Consider the vector directional derivative of a matrix M that is the
> >> function of a vector v, M(v), then if a is an arbitrary vector (LaTeX
> >> expression) the definition of the directional derivative would be
> >>
> >> a\cdot\nabla M(v) \equiv  \lim_{h \rightarrow 0}\frac{M(v+ha)-M(v)}{h}
> >>
> >>
> >> from this the properties of \nabla M(v) could be determined and if v is
> >> expanded in a arbitrary basis the \nabla operator could also be
> expanded.  A
> >> similar treatment is possible for a matrix that is a function of a
> matrix if
> >> the scalar product of two matrices is defined.
> >>
> >>
> >>
> >> On 06/30/2011 04:20 AM, Aaron Meurer wrote:
> >>>
> >>> As I pointed out in the other thread, non-commutative differentiation
> >>> already works in SymPy, so doing this should not be difficult.
> >>>
> >>> Aaron Meurer
> >>>
> >>> On Thu, Jun 30, 2011 at 1:58 AM, Amit<amiti...@gmail.com>  wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>> I am not familiar with the internals of sympy. But I suggest that if
> >>>> you start working on the implementation of symbolic matrices, you
> >>>> should take into consideration more complicated operators like
> >>>> differentiation.
> >>>> 'The Matrix Cookbook' has many matrix equalities that maybe can be
> >>>> implemented using some kind of pattern recognition.
> >>>>
> >>>> Amit
> >>>>
> >>>> On Jun 28, 8:16 pm, Matthew Rocklin<mrock...@gmail.com>  wrote:
> >>>>>
> >>>>> @Brian - Thanks for the heads up Brian. I'll see what I can do with
> >>>>> option
> >>>>> (1). My short term solution was to start a "matrixify" function a la
> >>>>> sympify. It would probably be too annoying to use everywhere though.
> >>>>>
> >>>>> @Vinzent - Where is a good place to start learning about the new
> >>>>> assumption
> >>>>> system (or the old one... I'm not up to speed on these)
> >>>>>
> >>>>> On Tue, Jun 28, 2011 at 11:36 AM, Vinzent Steinberg<
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> vinzent.steinb...@googlemail.com>  wrote:
> >>>>>>
> >>>>>> On Jun 28, 4:32 am, Matthew Rocklin<mrock...@gmail.com>  wrote:
> >>>>>>>
> >>>>>>> Yeah, definitely. I must confess that a hidden passion of mine is
> >>>>>>
> >>>>>> optimizing
> >>>>>>>
> >>>>>>> linear algebra (we all have our quirks). I was just looking at
> Theano
> >>>>>>> a
> >>>>>>> minute ago actually - I think it would be cool to easily dump
> Matrix
> >>>>>>> expressions onto them.
> >>>>>>> How should matrix expressions be represented in SymPy though? The
> way
> >>>>>>> I
> >>>>>>
> >>>>>> see
> >>>>>>>
> >>>>>>> it there are three options
> >>>>>>>    1. Leave it as a SymPy Expr, forget shape, transpose, rank,
> etc...
> >>>>>>> for
> >>>>>>>    now. Maybe future SymPy elegance will make clever things
> possible
> >>>>>>
> >>>>>> (such as
> >>>>>>>
> >>>>>>>    issue 1941)
> >>>>>>>    2. Enhance SymPy Expr's to play nice with Matrices
> >>>>>>>    3. Subclass a family of MatrixExpr classes that live outside the
> >>>>>>> core
> >>>>>>> Probably there are things I'm missing but this is how I separate
> >>>>>>> things.
> >>>>>>> Because I'd like this done sooner rather than later I'm obviously
> in
> >>>>>>
> >>>>>> favor
> >>>>>>>
> >>>>>>> of 2 or 3 with a preference for 3. I don't know enough about SymPy
> >>>>>>
> >>>>>> however
> >>>>>>>
> >>>>>>> to tell whether this is the "right way" and I'd rather not work on
> >>>>>>
> >>>>>> something
> >>>>>>>
> >>>>>>> unless it has a chance at getting in.
> >>>>>>> I'll push again for three by saying that there is a lot going on in
> >>>>>>
> >>>>>> Matrix
> >>>>>>>
> >>>>>>> Expressions other than just non-commutativity and shape. Inverses,
> >>>>>>> transposes, rank, symmetry, positive_definiteness, conditioning,
> >>>>>>> etc...
> >>>>>>
> >>>>>> all
> >>>>>>>
> >>>>>>> play a big role in computational decisions made on matrices.
> >>>>>>> Additionally
> >>>>>>> matrix expressions are ubiquitous and important in the scientific
> >>>>>>
> >>>>>> computing
> >>>>>>>
> >>>>>>> world. From my (strongly biased) perspective they deserve special
> >>>>>>> treatment.
> >>>>>>
> >>>>>> I think all this '.is_*' stuff should rather be implemented using
> the
> >>>>>> new assumption system (not sure about shape, maybe this should
> really
> >>>>>> go into the core). If we use noncommutative symbols, I think we can
> >>>>>> avoid messing around with Mul and friends.
> >>>>>> A.T could be implemented as a unary function.
> >>>>>> Vinzent
> >>>>>> --
> >>>>>> 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.
> >>>>
> >>>> --
> >>>> 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.
> >>>>
> >>>>
> >>
> >> --
> >> 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.
> >>
> >
> > --
> > 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.
> >
>
> --
> 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.
>
>

-- 
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