Let A be some ambient space in Magma. For example, think of A as being the affine plane. Let k be its base ring and RA its coordinate ring. If m: k -> L is a map of rings (a coercion map, for instance) then there is a new ambient space denoted AL and called the base change of A to L which has coordinate ring RAL with coefficient ring L instead of k. (Mathematically, one simply tensors RA with L over k. In Magma the equivalent function at the level of polynomial rings is ChangeRing.) There is a base change function described below which takes A and L (or the map k -> L) as arguments and creates this new space AL. Note that there is a map from the coordinate ring of A to that of AL determined by the map m.
This operation is called base extension since one often thinks of the map m as being an extension of fields. Of course, the map m could be many other things. One key example where the name extension is a little unusual would be when m is the map from the integers to some finite field.
Now let X be a scheme in Magma. Thus X is defined by some polynomials f1, ..., fr on some ambient space A. Given a ring map k -> L there is a base change operation for X which returns the base change of X to L, denoted XL. This is done by first making the base change of A to L and then using the map from the coordinate ring of A to that of AL to translate the polynomials fi into polynomials defined on AL. These polynomials can then be used to define a scheme in AL. It is this resulting scheme which is the base change of X to L.
If one has a number of schemes in the same ambient space and wants to base change them all at the same time, a little care is required. The function which takes a scheme and a map of rings as argument will create a new ambient space each time so is unsuitable. Better would be to base change the ambient space and then use the base change function which takes the scheme and the desired new ambient space as argument. (This latter base change function appears to be different from the other ones. In fact it is not. We described base change above as a function of maps of rings. Of course, there is a natural extension to maps of schemes. With that extension, this final base change intrinsic really is base change with respect to map of ambient spaces.)
If A is a scheme defined over a field k and K is an extension into which elements of k can be automatically coerced then this returns a new scheme AK defined over K. No cached data about A will be transferred to AK and coordinate names will have to be defined again on AK if needed.
If m is a map of rings whose domain is the base ring of the scheme A, this returns the base change of A to the codomain of m. The equations of A, if any, are mapped to the new ambient coordinate ring using m.
If F is a sequence of schemes lying in a common ambient space whose base ring admits automatic coercion to K or is the domain of a ring map m then this returns the base change of the elements of F as a new sequence.
If X is any scheme whose ambient space B is of the same type (affine or projective) and dimension as the ambient space A but either has a base ring which admits coercion to that of A or the map m is a ring map from the base ring of B to that of A then this returns a scheme with the equations of X as a subscheme of A. The equations are transferred to A using coercion or the map m.
The base change of the scheme X, where the base ring of X is a finite field to the finite field which is a degree n extension of the base field of X.
> A<x,y> := AffineSpace(Rationals(),2); > C := Curve(A,x^2 + y^2); > IsIrreducible(C); true > D := Curve(A,x - 1); > IntersectionPoints(C,D); > Qi<i> := QuadraticField(-1); > IntersectionPoints(C,D,Qi); { (0, i), (0, -i) }So we have found the intersection points (although we haven't explained how we chose the right field extension). Now we do the same calculation again but by making the base change of all schemes to the field Qi. Over this field the intersection points are immediately visible, but also the curve C splits into two components.
> B<u,v> := BaseChange(A,Qi); > C1 := BaseChange(C,B); > D1 := BaseChange(D,B); > IsIrreducible(C1); false > IntersectionPoints(C1,D1); { (0, i), (0, -i) } > PrimeComponents(C1); [ Scheme over Qi defined by u + i*v, Scheme over Qi defined by u - i*v ]