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. -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To post to this group, send email to sage-combinat-de...@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.