# newRing -- make a copy of a ring, with some features changed

## Synopsis

• Usage:
S = newRing(R,options)
• Inputs:
• R, a polynomial ring or a quotient of a polynomial ring
• Optional inputs:
• Constants => ..., default value nothing
• DegreeLift => ..., default value nothing
• DegreeMap => ..., default value nothing
• DegreeRank => ..., default value nothing
• Degrees => ..., default value nothing
• Global => ..., default value nothing
• Heft => ..., default value nothing
• Inverses => ..., default value nothing
• Join => ..., default value nothing
• Local => ..., default value nothing
• MonomialOrder => ..., default value nothing
• MonomialSize => ..., default value nothing
• SkewCommutative => ..., default value nothing
• VariableBaseName => ..., default value nothing
• Variables => ..., default value nothing
• Weights => ..., default value nothing
• WeylAlgebra => ..., default value nothing
• Outputs:
• S, a ring, a new ring, constructed in the same way R was, over the same coefficient ring, but with the newly specified options overriding those used before. See monoid for a description of those options. If R was a quotient ring, then the number of variables must be the same, and S will be a quotient ring, too, with defining ideal obtained from the old by substituting the new variables for the old, preserving their order.

## Description

If a different number of variables is given with Variables, then the list of degrees in R will be ignored. If a new degree rank is specified with DegreeRank then the list of degrees and the heft vector of R will be ignored. If a new nonempty list of degrees is specified with Degrees, then the degree rank and and the heft vector of R will be ignored.

 i1 : R = QQ[x,y,MonomialOrder => Lex,Degrees=>{3,5}]; i2 : describe newRing(R,MonomialOrder => GRevLex) o2 = QQ[x..y, Degrees => {3, 5}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1] {GRevLex => {3, 5} } {Position => Up } i3 : describe newRing(R,Variables=>4) o3 = QQ[p ..p , Degrees => {4:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1] 0 3 {Lex => 2 } {Position => Up } {GRevLex => {2:1} } i4 : describe newRing(R,Heft=>{2}) o4 = QQ[x..y, Degrees => {3, 5}, Heft => {2}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1] {Lex => 2 } {Position => Up } i5 : S = R/(x^2+y^3); i6 : describe newRing(R,Variables=>2) o6 = QQ[p ..p , Degrees => {3, 5}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1] 0 1 {Lex => 2 } {Position => Up }

The default values for the options of newRing are all set to a non-accessible private symbol whose name is nothing.

## Ways to use newRing :

• "newRing(PolynomialRing)"
• "newRing(QuotientRing)"

## For the programmer

The object newRing is .