If fUpper is given as a ring map, then a new method is created for the pullback, encapsulating this ring map. However, if fUpper is given as a MethodFunction, then this MethodFunction is used directly, and may have new methods installed on it.
If the DefaultPullBack => true option is set (this is the default setting), then a method for pulling back sheaves is installed in the method fUpper. The default behavior is to pull back both Chern classes and Chern characters via the supplied map.
If the DefaultPullBack => true option is set (this is the default setting), and if the calculation of sheaf pushforward is possible (i.e. either X and Y have supplied tangent bundles and fUpper can pull back sheaves, or the TangentBundle option is set), method for pulling back sheaves is installed in the method fUpper. The default behavior is to compute the pushforward of sheaves via Grothendieck-Riemann-Roch.
Typically it is inconvenient to have to use this function unless absolutely necessary. Consider whether the morphism you need may be built via one of the built-in maps, for example via map(FlagBundle,AbstractVariety,AbstractSheaf).
i1 : X = point o1 = point o1 : an abstract variety of dimension 0 |
i2 : RX = intersectionRing X o2 = RX o2 : PolynomialRing |
i3 : Y = abstractProjectiveSpace 3 o3 = Y o3 : a flag bundle with subquotient ranks {1, 3} |
i4 : RY = intersectionRing Y o4 = RY o4 : QuotientRing |
i5 : fUpper = map(RX, RY, splice{4:0_RX}) o5 = map(RX,RY,{0, 0, 0, 0}) o5 : RingMap RX <--- RY |
i6 : fLower = method() o6 = fLower o6 : MethodFunction |
i7 : fLower RX := a -> promote(a,RY) * ctop last bundles Y; |
i8 : incl = abstractVarietyMap(Y,X,fUpper,fLower) o8 = incl o8 : a map to Y from point |
i9 : integral incl_* 1_RX o9 = 1 |
This same example can be done much more easily via:
i10 : X = point o10 = point o10 : an abstract variety of dimension 0 |
i11 : Y = abstractProjectiveSpace 3 o11 = Y o11 : a flag bundle with subquotient ranks {1, 3} |
i12 : incl = map(Y,X,OO_X) o12 = incl o12 : a map to Y from point |