# Revision history [back]

### matrix over symbolic ring to matrix over finite field

I have a bunch of ideals defined symbolically, that I would like to decompose over GF(101).

However I think that the only symbolic computation that's happening is when I define the matrices whose minors give me the ideals.

So, once a matrix is constructed, is it possible to reduce it mod p? Thanks for any help!

### matrix over symbolic ring to matrix over finite field

I have a bunch of ideals defined symbolically, that I would like to decompose over GF(101).

However I think that the only symbolic computation that's happening is when I define the matrices whose minors give me the ideals.

So, once a matrix is constructed, is it possible to reduce it mod p? Thanks for any help!

EDIT: I have a list of variables svs = x_{i}_{j}_{k} and it is used to define a ring

 R = PolynomialRing(GF(101),svs) R.inject_variables() 

Then I introduce the symbolic variables var('x,s') in order to form a list of companion matrices. For concreteness let's say I have two companion matrices, one for p = x**2*(x-s)**3 and one for q = x-s. I make a list

L = [companion_matrix(p.coefficients(x,sparse=False),format='bottom'),companion_matrix(q.coefficients(x,sparse=False),format='bottom')]

Finally I create a block matrix block_matrix(R['s'],L).

Next I look at ideals of minors of this matrix. So I might have a relation like rel = [x_1_2_1, x_1_2_1*s] that I use to define an ideal I = ideal(rel). I want to apply groebner_basis and primary_decomposition to these ideals but I run into errors like Ideal_generic' object has no attribute 'groebner_basis or Not implemented.

So the question is at what point and how should I tell sage that s is no longer to be treated as a symbolic variable. By the way I = R['s'].ideal(rel) also results in a class generic ideal.

I also tried S.<s> = PolynomialRing(R) and S.ideal([x_1_2_1, x_1_2_1*polynomial(s,base_ring = R)]) which did not work.

Sorry for being such a data types ignoramus! 3 None

### matrix over symbolic ring to matrix over finite field

I have a bunch of ideals defined symbolically, that I would like like to decompose over GF(101). GF(101).

However I think that the only symbolic computation that's happening happening is when I define the matrices whose minors give me the ideals. ideals.

So, once a matrix is constructed, is it possible to reduce it mod p? Thanks for any help!

EDIT: I have a list of variables svs = x_{i}_{j}_{k} and it is used to define a ring

 ring

 R = PolynomialRing(GF(101),svs) PolynomialRing(GF(101),svs) R.inject_variables() Then I introduce the symbolic variables var('x,s')var('x, s') in order to form form a list of companion matrices. matrices. For concreteness let's say I have two companion matrices, matrices, one for p = x**2*(x-s)**3x**2 * (x-s)**3 and one for q = x-sx - s. I make a list list 
L = [companion_matrix(p.coefficients(x,sparse=False),format='bottom'),companion_matrix(q.coefficients(x,sparse=False),format='bottom')][companion_matrix(p.coefficients(x, sparse=False), format='bottom'),
companion_matrix(q.coefficients(x, sparse=False), format='bottom')]


Finally I create a block matrix block_matrix(R['s'],L). block_matrix(R['s'], L).

Next I look at ideals of minors of this matrix. So I might have a relation like rel = [x_1_2_1, x_1_2_1*s] that I use to define an ideal I = ideal(rel). I want to apply groebner_basis and primary_decomposition to these ideals but I run into errors like Ideal_generic' object has no attribute 'groebner_basis or Not implemented. .

So the question is at what point and how should I tell sage that s is no longer to be treated as a symbolic variable. variable. By the way I = R['s'].ideal(rel) also results in a class generic ideal.

I also tried S.<s> = PolynomialRing(R) and S.ideal([x_1_2_1, x_1_2_1*polynomial(s,base_ring = R)]) x_1_2_1*polynomial(s, base_ring=R)]) which did not work. work.

Sorry for being such a data types ignoramus!

### matrix over symbolic ring to matrix over finite field

I have a bunch of ideals defined symbolically, that I would like to decompose over GF(101).

However I think that the only symbolic computation that's happening is when I define the matrices whose minors give me the ideals.

So, once a matrix is constructed, is it possible to reduce it mod p? Thanks for any help!

EDIT: EDIT 1: I have a list of variables svs = x_{i}_{j}_{k} and it is used to define a ring

R = PolynomialRing(GF(101),svs)
R.inject_variables()


Then I introduce the symbolic variables var('x, s') in order to form a list of companion matrices. For concreteness let's say I have two companion matrices, one for p = x**2 * (x-s)**3 and one for q = x - s. I make a list

L = [companion_matrix(p.coefficients(x, sparse=False), format='bottom'),
companion_matrix(q.coefficients(x, sparse=False), format='bottom')]


Finally I create a block matrix block_matrix(R['s'], L).

Next I look at ideals of minors of this matrix. So I might have a relation like rel = [x_1_2_1, x_1_2_1*s] that I use to define an ideal I = ideal(rel). I want to apply groebner_basis and primary_decomposition to these ideals but I run into errors like Ideal_generic' object has no attribute 'groebner_basis or Not implemented.

So the question is at what point and how should I tell sage that s is no longer to be treated as a symbolic variable. By the way I = R['s'].ideal(rel) also results in a class generic ideal.

I also tried S.<s> = PolynomialRing(R) and S.ideal([x_1_2_1, x_1_2_1*polynomial(s, base_ring=R)]) which did not work.

Sorry for being such a data types ignoramus!

EDIT 2: Here's a non-minimal example of how the x_i_j_k end up in my (block) matrices.

Use inputs

t1 = Tableau([,])
t2 = t1
mu1, mu2, mu = [1,1],[1,1],[2,2]


on

def mu_vars(t1,t2):
svs = []
for i in range(1,2):
for j in range(i+1,2+1):
for k in range(0,mu[j-1]):
svs.append('x_{}_{}_{}'.format(i,j,k+1))
return svs

svs = mu_vars(t1,t2)
R = PolynomialRing(GF(101),svs)
R.inject_variables()

def insert_row(mat,row):
return matrix(mat.rows()[:mat.nrows()]+[row]+mat.rows()[mat.nrows():])

def upper_row_matrix(row):
symbMat = []
for i in range(row,2):
mat = matrix(mu[row-1]-1,mu[i])
v = [var(v) for v in svs if v.startswith('x_{}_{}'.format(row,i+1))]
d = insert_row(mat,v)
symbMat.append(d)
return symbMat

var('x,s')

def mu_matrix(mu1,mu2):
symbMat = []
for i in range(0,2):
row = [] + *i
p = x**(mu1[i])*(x-s)**(mu2[i])
row.append(companion_matrix(p.coefficients(x,sparse=False),format='bottom'))
row += upper_row_matrix(i+1)
symbMat.append(row)
return block_matrix(R['s'],symbMat)


Run m = mu_matrix(mu1,mu2) to get

[      0       1|      0       0]
[      0       s|x_1_2_1 x_1_2_2]
[---------------+---------------]
[      0       0|      0       1]
[      0       0|      0       s]


consider m.minors(2) which is x_1_2_1*s. Then for example the ideal ideal(m.minors(2)) does not have a groebner basis.

### matrix over symbolic ring to matrix over finite field

I have a bunch of ideals defined symbolically, that I would like to decompose over GF(101).

However I think that the only symbolic computation that's happening is when I define the matrices whose minors give me the ideals.

So, once a matrix is constructed, is it possible to reduce it mod p? Thanks for any help!

EDIT 1: I have a list of variables svs = x_{i}_{j}_{k} and it is used to define a ring

R = PolynomialRing(GF(101),svs)
R.inject_variables()


Then I introduce the symbolic variables var('x, s') in order to form a list of companion matrices. For concreteness let's say I have two companion matrices, one for p = x**2 * (x-s)**3 and one for q = x - s. I make a list

L = [companion_matrix(p.coefficients(x, sparse=False), format='bottom'),
companion_matrix(q.coefficients(x, sparse=False), format='bottom')]


Finally I create a block matrix block_matrix(R['s'], L).

Next I look at ideals of minors of this matrix. So I might have a relation like rel = [x_1_2_1, x_1_2_1*s] that I use to define an ideal I = ideal(rel). I want to apply groebner_basis and primary_decomposition to these ideals but I run into errors like Ideal_generic' object has no attribute 'groebner_basis or Not implemented.

So the question is at what point and how should I tell sage that s is no longer to be treated as a symbolic variable. By the way I = R['s'].ideal(rel) also results in a class generic ideal.

I also tried S.<s> = PolynomialRing(R) and S.ideal([x_1_2_1, x_1_2_1*polynomial(s, base_ring=R)]) which did not work.

Sorry for being such a data types ignoramus!

EDIT 2: Here's a non-minimal example of how the x_i_j_k end up in my (block) matrices.

Use inputs

t1 = Tableau([,])
t2 = t1
mu1, mu2, mu = [1,1],[1,1],[2,2]


on

def mu_vars(t1,t2):
mu_vars(mu):
svs = []
for i in range(1,2):
for j in range(i+1,2+1):
for k in range(0,mu[j-1]):
svs.append('x_{}_{}_{}'.format(i,j,k+1))
return svs

svs = mu_vars(t1,t2)
R = PolynomialRing(GF(101),svs)
R.inject_variables()

def insert_row(mat,row):
return matrix(mat.rows()[:mat.nrows()]+[row]+mat.rows()[mat.nrows():])

def upper_row_matrix(row):
symbMat = []
for i in range(row,2):
mat = matrix(mu[row-1]-1,mu[i])
v = [var(v) for v in svs if v.startswith('x_{}_{}'.format(row,i+1))]
d = insert_row(mat,v)
symbMat.append(d)
return symbMat

var('x,s')

def mu_matrix(mu1,mu2):
symbMat = []
for i in range(0,2):
row = [] + *i
p = x**(mu1[i])*(x-s)**(mu2[i])
row.append(companion_matrix(p.coefficients(x,sparse=False),format='bottom'))
row += upper_row_matrix(i+1)
symbMat.append(row)
return block_matrix(R['s'],symbMat)


Run m = mu_matrix(mu1,mu2) to get

[      0       1|      0       0]
[      0       s|x_1_2_1 x_1_2_2]
[---------------+---------------]
[      0       0|      0       1]
[      0       0|      0       s]


consider m.minors(2) which is x_1_2_1*s. Then for example the ideal ideal(m.minors(2)) does not have a groebner basis.basis. In particular the call ideal(m.minors(2)).groebner_basis() ends in error.

### matrix over symbolic ring to matrix over finite field

I have a bunch of ideals defined symbolically, that I would like to decompose over GF(101).

However I think that the only symbolic computation that's happening is when I define the matrices whose minors give me the ideals.

So, once a matrix is constructed, is it possible to reduce it mod p? Thanks for any help!

EDIT 1: I have a list of variables svs = x_{i}_{j}_{k} and it is used to define a ring

R = PolynomialRing(GF(101),svs)
R.inject_variables()


Then I introduce the symbolic variables var('x, s') in order to form a list of companion matrices. For concreteness let's say I have two companion matrices, one for p = x**2 * (x-s)**3 and one for q = x - s. I make a list

L = [companion_matrix(p.coefficients(x, sparse=False), format='bottom'),
companion_matrix(q.coefficients(x, sparse=False), format='bottom')]


Finally I create a block matrix block_matrix(R['s'], L).

Next I look at ideals of minors of this matrix. So I might have a relation like rel = [x_1_2_1, x_1_2_1*s] that I use to define an ideal I = ideal(rel). I want to apply groebner_basis and primary_decomposition to these ideals but I run into errors like Ideal_generic' object has no attribute 'groebner_basis or Not implemented.

So the question is at what point and how should I tell sage that s is no longer to be treated as a symbolic variable. By the way I = R['s'].ideal(rel) also results in a class generic ideal.

I also tried S.<s> = PolynomialRing(R) and S.ideal([x_1_2_1, x_1_2_1*polynomial(s, base_ring=R)]) which did not work.

Sorry for being such a data types ignoramus!

EDIT 2: Here's a non-minimal example of how the x_i_j_k end up in my (block) matrices.

Use inputs

mu1, mu2, mu = [1,1],[1,1],[2,2]


on

def mu_vars(mu):
svs = []
for i in range(1,2):
for j in range(i+1,2+1):
for k in range(0,mu[j-1]):
svs.append('x_{}_{}_{}'.format(i,j,k+1))
return svs

svs = mu_vars(t1,t2) mu_vars(mu)
R = PolynomialRing(GF(101),svs)
R.inject_variables()

def insert_row(mat,row):
return matrix(mat.rows()[:mat.nrows()]+[row]+mat.rows()[mat.nrows():])

def upper_row_matrix(row):
symbMat = []
for i in range(row,2):
mat = matrix(mu[row-1]-1,mu[i])
v = [var(v) for v in svs if v.startswith('x_{}_{}'.format(row,i+1))]
d = insert_row(mat,v)
symbMat.append(d)
return symbMat

var('x,s')

def mu_matrix(mu1,mu2):
symbMat = []
for i in range(0,2):
row = [] + *i
p = x**(mu1[i])*(x-s)**(mu2[i])
row.append(companion_matrix(p.coefficients(x,sparse=False),format='bottom'))
row += upper_row_matrix(i+1)
symbMat.append(row)
return block_matrix(R['s'],symbMat)


Run m = mu_matrix(mu1,mu2) to get

[      0       1|      0       0]
[      0       s|x_1_2_1 x_1_2_2]
[---------------+---------------]
[      0       0|      0       1]
[      0       0|      0       s]


consider m.minors(2) which is x_1_2_1*s. Then for example the ideal ideal(m.minors(2)) does not have a groebner basis. In particular the call ideal(m.minors(2)).groebner_basis() ends in error.