Hello,

As often in algebraic combinatoric, I compute very very huge
FreeModule/VectorSpace... Let's me give some examples :

- I have a Matrix algebra (Hecke like) defined by a set of 5 matrices
of size factorial(5)*factorial(5) and I want to get a basis this
algebra as a VectorSpace over Q. For that, I start with the
VectorSpace empty and I had the generator, thus the product of length
2 over the generators, product on length 3, ... I stop when I have
stability of the product. (I won't speak about the optimizations of
this problem)

- Currently, for the ring of invariants multivariate polynomials under
the action of a permutation group.
For the cyclic group of order 8, I have a Vector space of dimension
factorial(7) with a number of generators close to factorial(7) and
whose coefficients leave in a cyclotomic field of degree(8). The point
of the problem is : you have a graded algebra in which you know the
generators as VectorSpace degree by degree and now, you want the
generator as an algebra...
degree 0 : just the one --> one algebra generator
degree 1 : I take a basis --> new algebra generators
degree 2 : I compute all product v_1*v_2 with the algebra generator of
degree 1. I make a gauss reduction and to complete this degree, I take
a basis of this degree and check each vector is already inside,
otherwise I have to add them as algebra generators.
...
degree n : All products of generators less than n, first gauss
reduction and a search of missing generators for this degree.

Sorry for this two technical examples, The point is, in this case of
problems, the elementary operation (And very very expansive operation)
is the following one :

K is any field. and n an integer. (mind n is very big)

Data : A subspace `E` of K^n with a basis already echelonized and a
vector `v` of K^n.

What I want :
if `v` in `E` --> the coordinates of `v` in `E`
if `v` not in `E` --> I want to add it in `E` and I want to get back
the transformation of `v` once it is echelonized in `F` = `E`+<v>.

Mathematically : It is possible to do that with a single
echelonization of `v`. I want also a possibility to skip the tests.

***************************************
My first code was:
if v in E:
    F = Ambient.Subspace(E.basis()+[v])
else:
    E.coordinates(v)

# How many echelonization ? How many checks over an already
echelonized vector?
***************************************
And now:
***************************************
dimE = E.dimension()
F = Ambient.Subspace(E.basis()+[v])
if F.dimension() > DimE:
    --> Some job
Else:
    --> Other Job

# How many echelonization ? How many checks over an already
echelonized vector?
***************************************

I need some advises about :
- How to do that in Sage ?
- Does I miss it ? perhaps it is already in sage...
- Advises for describing a ticket (if needed) and name of a such
method (E.add_new_generator(v), check=False) ?

Thanks in advanced,
Cheers,
Nicolas the little.

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to