05.05.2011 23:18, Tom Bachmann пишет:

I think that my statement is true, or at least should be true.
Everything that is not a symbol (or involves a symbol) is some concrete
mathematical entity, and all of its properties are settled (in
principle, in practice it might be hard to find out if a certain number
is e.g. positive, even if it is specified uniquely).

So basically I'm saying that things like "I'm an integer" or "I'm
commutative" are not really assumptions, they are type information if
you will. Integer(1) is not the same as Rational(1) is not the same as
eye (identity matrx).


I have tried to classify assumptions (I oriented and based on the current usage of them, there is why I do not know what "are really assumptions" or not, but it has a sense to make more accurate with this question, of course):

"""
- related with symbols for simplification, e.g. Q.positive, Q.even.
- related with algebraic fields/rings, e.g. Q.real, Q.complex.
- related with some facts, e.g. .is_bounded, is_infinity, is_zero and so on. They are help us to operate with calculation in core. Apparently they are derived from the above other classes of assumptions (while start-upping of the objects) (in this case e.g. is_zero is means that it is a Zero for the ring). Or they can be derived from expression's analyze: in this case we can create some class of assumption that are calculated (in this case is_zero can be means but it this sort of calculation is a difficult so called "zero test" problem). In any case we can realize in mind with what we deal exactly (now in the core somewhere we used is_zero in second sense)."""

May be updates will be for this, but I can offhand to think about algorithms.

I see that the algorithm and syntax for the first class has no difficulties apparantly. It is convinient to describe them locally linked to symbols (or to the expression), and algorithm can be recurrent to transform expression.

Yes, the second class is a type of information. The variants are how to deal with this information. Obviously:
 - We can also recurently analize this type of information for symbols.
 - We can make automatic type conversion recurrently
        (in binary mode):
            Integer(1) + Integer(2) + Rational(7) ==>
            Integer(3) + Rational(7) =>
            Rational(10)
       (at whole ADD arguments):
            Integer(1) + Integer(2) + Rational(7) ==>
            Rational(1) + Rational(2) + Rational(7) ==>
            Rational(10)

- we can derive resulted field assumption/information of expression from arguments:
    (Integer(1) + Rational(1) is a Q.Rational)

(So we have field assumption/information attached to the expression, taking into account yours remark that "not all of whose properties are known")


So in particular ExtendedReal(1)/ExtendedReal(0) = oo,
ExtendedComplex(1)/ExtendedComplex(0) = zoo, Real(1)/Real(0) = nan, or
perhaps even an exception [unless we do some auto-conversion].

So we then have the following objects:

* algebras (or domains, or whatever) represent collections that are
typically manipulated together
* concrete elements of algebras. These are definite mathematical
objects, all of whose properties are known in principle.
* symbolic elements. These are elements which contain free symbols, and
not all of whose properties are known

For the last "not all of whose properties are known" I dont clear imagine an example though.


Notice that every element that we ever compute with belongs to some
algebra. All assumptions are about "symbolic elements". They can be used
to do transformations of the expressions that would not be allowed for
all possible values of the free symbols, usually with the intent of
giving the user a better answer to a query [actually this seems a bit
vacuous ...].

Notice also that not everyhing that looks like a symbol is a symbolic
element (this is probably obvious to everyone but me): in e.g. a
polynomial algebra the generator X is a definite entity and *not* a free
symbol. Every statement that makes sense in this algebra is known about
X. A symbolic element would be a parametric family of polynomials,
something like X**2 + p*X + q. Here the p and q are symbols that
represent elements of the coefficient ring. It is sensible to make
assumptions about them, e.g. p > 0 or "X**2 + p*X + q is irreducible" or
whatever.

Interesting (and with series the same I suppose), I suppose that this class of assumption related rather with first class/type of assumptions, Or should it be separated to other class/type in the classification of assumptions?

P.S.
I can read answers after May 10 only.


--
Alexey U.

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