# pullback -- Compute the pullback of a diagram of rings

## Synopsis

• Usage:
pullback(f,g)
• Inputs:
• f
• g
• Optional inputs:
• Verbose => ..., default value false
• Outputs:
• The pullback R of (f: A->B<-C :g) as a ring
• the induced map R->A
• the induced map R->C

## Description

The pullback functor in the category of rings. Given ring maps $f : A \to B$ and $g : C \to B$, this tries to compute the pullback of $\{A \to B \leftarrow C\}$ in the category of rings. It requires that $A \to B$ is a surjective map of rings (otherwise it will give an error) and it requires that $C \to 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 :

• "pullback(RingMap,RingMap)"

## For the programmer

The object pullback is .