Opened 9 years ago

Closed 9 years ago

# allow maps between more coefficient domains

Reported by: Owned by: ren somebody minor 4-1-0 and higher dontKnow 3-1-6

### Description

It would be nice if maps between the coefficients domains like the following were allowed:

```ring r  = (0,a),(Y(1..3),b,c),dp;
ideal I = b;

ring s  = (0,a,c),Y(1..3),dp;
minpoly = -a^4+c^5;
ideal G = Y(1),Y(2),Y(3),-c^2,c;
map phi = r,G;

phi(I);
//->   ? can not map from ground field of r to current ground field
//->   ? error occurred in or before STDIN line 9: `phi(I);
```

Example: Given a prime ideal P in Q[a,b,c], to construct the polynomial ring Quot(Q[a,b,c]/P)[Y(1..3)], do...

1. move the variables of a maximal independent set into the transcendental extension to make P maximal (say a)
1. push the ideal into general position and compute the lexicographical standard basis (say <b-c2,c5-a4>)

The map in the example above would then be the canonical map Q(a)[b,c][Y(1..3)] ->> Quot(Q[a,b,c]/P)[Y(1..3)] with kernel P*Q(a)[b,c] which is a maximal ideal in Q(a)[b,c].

### comment:1 Changed 9 years ago by Oleksandr

Hmm, maybe we should introduce "number maps"? since we are going to introduce coeffs for the interpreter anyway...?

### comment:2 Changed 9 years ago by anonymous

This isn't even about a map between numbers, I am only mapping variables to numbers and restricted to the ground fields, the map is still identity. Singular is just frustrated that the target ring has both multiple parameters and a minimal polynomial. If there were just one parameter or no minimal polynomial, I could define the map.

As of right now, I circumvent this issue by mapping to an intermediate ring without minpoly, read the ideal out as string, switch to the target ring with minpoly and read the string in again (imap fails with some weird errors coming from omalloc, if I remember correctly).

### comment:3 follow-up:  4 Changed 9 years ago by ren

Resolution: → invalid new → closed

I will close this for now, apparently a ring of the form "ring s = (0,a,c),Y(1..3),dp;" is not allowed in Singular as of now in the first place as can be seen here: http://www.singular.uni-kl.de/Manual/latest/sing_439.htm#SEC478

Anybody wanting to work in such a ring should wait until coefficient rings become available.

### comment:4 in reply to:  3 ; follow-up:  5 Changed 9 years ago by Oleksandr

I will close this for now, apparently a ring of the form "ring s = (0,a,c),Y(1..3),dp;" is not allowed in Singular as of now in the first place as can be seen here: http://www.singular.uni-kl.de/Manual/latest/sing_439.htm#SEC478

Works for me. What is the problem with it?

Anybody wanting to work in such a ring should wait until coefficient rings become available.

### comment:5 in reply to:  4 Changed 9 years ago by ren

I will close this for now, apparently a ring of the form "ring s = (0,a,c),Y(1..3),dp;" is not allowed in Singular as of now in the first place as can be seen here: http://www.singular.uni-kl.de/Manual/latest/sing_439.htm#SEC478

Works for me. What is the problem with it?

Well, the ring is not officially supported and you cannot do anything in it. For example the following will not compute anything and terminate by complaining that the minimal polynomial is not univariate:

```ring s  = (0,a,c),Y(1..3),dp;
minpoly = -a^4+c^5;
ideal G = Y(1),a*Y(2),c*Y(3)+a2;
std(G);
```

### comment:6 Changed 9 years ago by Oleksandr

Now i see: you want an algebraic field extension with multiple variables...

AFAIK theoretically you can do with a single variable... is that right?

@Hans: I think Singular even had some support for that... do we have a way to recalculate minpoly in some lib or in the kernel?

### comment:7 Changed 9 years ago by ren

Hm, what do you mean with "recalculating minpoly"? I only have one minpoly (over a transcendental extension of Q) and it will stay the same throughout the whole examples I want to calculate.

The problem is that I have an algebraic extension over an transcendental extension of Q (minpoly will contain multiple parameters), which is not supported by Singular as far as I see, and not a transcendental extension over an algebraic extension of Q (minpoly contains only a single parameter).

### comment:8 Changed 9 years ago by Oleksandr

i mean that AFAIR any series of algebraic extensions can be build as a single one (single parameter and univariate minpoly).

Also yes, AFAIR Singular does not support tensor products of algebraic and transcendental field extensions yet :(

### comment:9 Changed 9 years ago by Oleksandr

Well, ok, it is theoretically possible with the Frank's code but AFAIK it was never finished. So one can try yo fix those extensions to actually work with towers of fields...

Last edited 9 years ago by Oleksandr (previous) (diff)

### comment:10 Changed 9 years ago by anne@…

@Olexander: Ren wants to construct an algebraic extension of a transcendental extension of Q, not a sequence of algebraic extensions of Q. The latter can of course be realised by means of the theorem of the primitive element (usually not very efficient though), whereas this does not help for the first situation.

@Ren: You can define a transcendental extension of Q and then add the parameter for the algebraic extension to the variables, choose an appropriate ordering and make sure that the 'minpoly' is added to the generators of your ideal. This is a workaround that can help in many explicit situations (Of course, the person working with it, needs to know how to interpret all results appropriately, e.g. not forget to reduce with the 'minpoly' whenever necessary!) - If you really need that, I can help you fiddle out the details for your situation.

hope that helps.

Best regards, Anne

Note: See TracTickets for help on using tickets.