next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Pullback :: pullback

pullback -- Compute the pullback of a diagram of rings

Synopsis

Description

The pullback functor in the category of rings. Given ring maps f : A →B and g : C →B, this tries to compute the pullback of {A →B ←C} in the category of rings. It requires that A →B is a surjective map of rings (otherwise it will give an error) and it requires that C →B is finite (otherwise it will never terminate). Currently, it requires that the variable names of the rings A and C are distinct and that the variable names of A are variable names of B and those variables get sent to one another. If the Verbose option is turned on, then certain steps in the process will be specified.We begin by doing a pullback which glues two lines together.
i1 : A = QQ[x];
i2 : I = ideal(x);

o2 : Ideal of A
i3 : B = A/I;
i4 : C = QQ[y];
i5 : f = map(B, A);

o5 : RingMap B <--- A
i6 : g = map(B, C, {0});

o6 : RingMap B <--- C
i7 : (pullback(f,g))#0

     QQ[IGen1, CGensInA1]
o7 = --------------------
        IGen1*CGensInA1

o7 : QuotientRing
We next construct the pinch point, otherwise known as Whitneys umbrella, by gluing.
i8 : A = QQ[x,y];
i9 : I = ideal(x);

o9 : Ideal of A
i10 : B = A/I;
i11 : C = QQ[u];
i12 : f = map(B, A);

o12 : RingMap B <--- A
i13 : g = map(B, C, {y^2});

o13 : RingMap B <--- C
i14 : (pullback(f,g))#0

      QQ[IGen1, CGensInA1, KGens1]
o14 = ----------------------------
             2                  2
        IGen1 CGensInA1 - KGens1

o14 : QuotientRing
We include a final example showing how to create a cusp.
i15 : A = QQ[x];
i16 : I = ideal(x^2);

o16 : Ideal of A
i17 : B = A/I;
i18 : C = QQ[]; 
i19 : f = map(B, A); 

o19 : RingMap B <--- A
i20 : g = map(B, C, {});

o20 : RingMap B <--- C
i21 : (pullback(f,g))#0

      QQ[IGen1, KGens1]
o21 = -----------------
            3         2
       IGen1  - KGens1

o21 : QuotientRing

Ways to use pullback :