> In the abstract sense, if you have a set of operators and states:
>
> A, B, C
> |a>, |b>, |c>
>
> you don't really know how to apply the operators until you choose a basis:
>
> A|a> = Sum(<n|A|m><m|a>, m)
>
> Thus, I think the base multiplication operations we are using should
> not apply the operators.  With that said, there *are* cases where a
> particular subclass of these objects would know how to carry out the
> multiplication.  Thus, I guess I think it depends.  I think the
> general rule should be this:
>
> If if is obvious how to carry out an operation (Mul, Sum, etc) *and*
> every user would always want it to be carried out, then we should do
> it automatically.  This is the approach in SymPy that is used in
> general and I think it applies here as well.
>
> But, I do agree that in some cases this rule will lead us to apply
> operations automatically.  How does that sound?

The way opeket works is that you define kets by an eigenvalue and an
operator for which the ket is an eigenvector. For example

Ket(2,'A')

is an eigenvector of operator 'A' with eigenvalue 2. Then, if you
define the operator 'A' with

A = Operator('A')

then

A*Ket(2,'A') = 2*Ket(2,'A').

In case you try to do something like

Operator('B')*Ket(2,'A')

the expression is left alone as is, since we don't know how to
evaluate it. Usually the label which is not the eigenvector can be
understood as the Hilbert space in which the ket lives.

> Here is a start...
>
> * Basic objects:
>
> Operator
> Ket
> Bra
> BasisSet
> DiscreteBasisSet
> ContinuousBasisSet
> Orthogonal/NonOrthogonal versions of basis sets.
>
> * Operations
>
> Dagger
> InnerProduct
> OuterProduct
> Sum, Mul of scalar vectors
> DirectProduct (|a>|b>)
> Representation of a Bra, Ket, Operator in a given basis.

With the scheme I mentioned above we'll only need...

*Basic Objects
Operator
Bra
Ket

I'm still not sure if Operator should be only one kind of thing or
maybe a couple of different things. For example, creation and
annihilation operators can be a kind of operators which is implemented
with a python function and we could have "symbolic" operators which
only hold the place of an operator.  This is not clear to me so I
still want to think about it and get back to you once I figure it out.

*Operatons
Dagger
Product (A single type of product can represent InnerProduct and
OuterProduct), it can be Mul or a special purpose product

What do you mean by Sum, Mul of scalar vectors?

The approach used in openket seems to be limited but really it is very
general and practical.


> Let me know if you want me to post a branch on git hub for this or if
> you want to do that and then we can get started.

I prefer it if you post the branch on git hub. I will send you my
github username by email.

> Out of curiosity, where are you located Asaf?
I'm an almost ex-(undergraduate student) of physics located in Mexico :)

Greetings,
Asaf

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sy...@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