Operations on Structures

Contents

AssignNames(~L, S) : RngPad, SeqEnum ->
AssignNames(~L, S) : RngPadResExt, SeqEnum ->
AssignNames(~L, S) : FldPad, SeqEnum ->
Assign a name to the generator of L. The sequence must have only one element, which must be a string. This element is assigned to be the name of the generator when L is considered as a linear associative algebra over its base ring.
Characteristic(L) : RngPad -> RngIntElt
Characteristic(L) : RngPadRes -> RngIntElt
Characteristic(L) : RngPadResExt -> RngIntElt
Characteristic(L) : FldPad -> RngIntElt
The characteristic of the local ring or field L.
# L : RngPad -> RngIntElt
The number of elements in the local ring or field L. The cardinality is finite only if L is a quotient ring or a bounded free precision ring.

Iterating over the elements of a local ring is possible if it is bounded, but it will take time in proportion to the cardinality of L. It is recommended only in the case of "small" local rings (i.e., rings for which the precision is be very small).

Name(L, k) : RngPad, RngIntElt -> RngPadElt
Name(L, k) : RngPadRes, RngIntElt -> RngPadResElt
Name(L, k) : RngPadResExt, RngIntElt -> RngPadResExtElt
Name(L, k) : FldPad, RngIntElt -> FldPadElt
Given a local ring or field L and an integer k, return the generator of L if k is 1; otherwise, raise an error.
ChangePrecision(L, k) : RngPad, Any -> RngPad
ChangePrecision(L, k) : RngPad, Infty -> RngPad
ChangePrecision(~L, k) : RngPad, Infty -> RngPad
ChangePrecision(L, k) : RngPad, RngIntElt -> RngPad
ChangePrecision(~L, k) : RngPad, RngIntElt -> RngPad
ChangePrecision(L, k) : RngPadRes, RngIntElt -> RngPadRes
ChangePrecision(~L, k) : RngPadRes, RngIntElt -> RngPadRes
ChangePrecision(L, k) : RngPadResExt, RngIntElt -> RngPadResExt
ChangePrecision(~L, k) : RngPadResExt, RngIntElt -> RngPadResExt
ChangePrecision(L, k) : FldPad, RngIntElt -> FldPad
ChangePrecision(~L, k) : FldPad, RngIntElt -> FldPad
ChangePrecision(L, k) : FldPad, Any -> FldPad
ChangePrecision(L, k) : FldPad, Infty -> FldPad
ChangePrecision(~L, k) : FldPad, Infty -> FldPad
Given a local ring or field L and a non-negative single precision integer k, change the maximum precision with which elements can be created to be k. Depending on how L and its subrings have been constructed, there may be an upper bound (possibly infinite for free structures) on the precision to which L can be changed. For instance, the precision to which a defining polynomial has been given places a bound on the precision of the extension --- no defining polynomial can be expanded beyond the precision with which it was originally specified.
L eq K : RngPad, RngPad -> BoolElt
L eq K : RngPadRes, RngPadRes -> BoolElt
L eq K : RngPadResExt, RngPadResExt -> BoolElt
L eq K : FldPad, FldPad -> BoolElt
Given local rings or fields L and K, return whether or not L and K are the same object.
L ne K : RngPad, RngPad -> BoolElt
L ne K : RngPadRes, RngPadRes -> BoolElt
L ne K : RngPadResExt, RngPadResExt -> BoolElt
L ne K : FldPad, FldPad -> BoolElt
Given local rings or fields L and K, return whether or not L and K are different objects.

Example RngLoc_strop (H48E8)

> Zp := pAdicRing(5, 20);
> I<a> := UnramifiedExtension(Zp, 3);
> R<x> := PolynomialRing(I);
> L<b> := ext<I | x^3 + 5*a*x^2 + 5>;
> ChangePrecision(Zp, Infinity());
5-adic ring
> L;
Totally ramified extension defined by the polynomial x^3 + 5*a*x^2 + 5
 over Unramified extension defined by the polynomial x^3 + 3*x + 3
 over 5-adic ring mod 5^20
> ChangePrecision(~L, 50);
> L;
Totally ramified extension defined by the polynomial x^3 + 5*$.1*x^2 + 5
 over Unramified extension defined by the polynomial x^3 + 3*x + 3
 over 5-adic ring mod 5^17
> #L;
8758115402030106693273309895561975820501\
6371367282235734816767743111942667866287\
592914886772632598876953125
> AssignNames(~L, ["t"]);
> L.1;
t
> b;
b
> L eq ChangePrecision(L, 10);
false
Note that b is an element of the original ring L with precision 60 which is why it retains its print name.

Ramification Predicates

IsRamified(R) : RngPad -> BoolElt
IsRamified(R) : FldPad -> BoolElt
IsUnramified(R) : RngPad -> BoolElt
IsUnramified(R) : FldPad -> BoolElt
IsTotallyRamified(R) : RngPad -> BoolElt
IsTotallyRamified(R) : FldPad -> BoolElt
Return whether the local ring or field extension R is ramified, unramified or totally ramified.
IsTamelyRamified(R) : RngPad -> BoolElt
IsTamelyRamified(R) : FldPad -> BoolElt
IsWildlyRamified(R) : RngPad -> BoolElt
IsWildlyRamified(R) : FldPad -> BoolElt
Return whether the local ring or field extension R is tamely ramified (the prime does not divide the ramification degree) or wildly ramified (the prime does divide the ramification degree).
V2.28, 13 July 2023