Given the pullback map f from A to B, builds the freest possible extension E of A by B (see extensionAlgebra), and then adds appropriate metadata to make the maps from E to B and vice-versa into an AbstractVarietyMap. Enough information must be given to compute the dimensions of X and Y, either by using the SubDimension, SuperDimension, and Codimension optons, or by having varieties already attached to A and/or B. Likewise, enough information must be given to compute the tangent classes of X and Y.
This construction is useful for computations where the pullback map is known but the pushforward is either not known or cannot be defined.
i1 : p = point o1 = point o1 : an abstract variety of dimension 0 |
i2 : S = intersectionRing p o2 = S o2 : PolynomialRing |
i3 : Y = projectiveBundle(5,p) o3 = Y o3 : a flag bundle with subquotient ranks {1, 5} |
i4 : A = intersectionRing Y o4 = A o4 : QuotientRing |
i5 : B = S[h, Join => false]/h^3 -- A^*(P2), but using 2 times a line as the generating class: o5 = B o5 : QuotientRing |
i6 : integral B := (b) -> (4 * coefficient((B_0)^2, b)) o6 = -*Function[stdio:6:19-6:48]*- o6 : FunctionClosure |
i7 : c = 1 + (9/2)*h + (15/2)*h^2 -- normal class 15 2 9 o7 = --h + -h + 1 2 2 o7 : B |
i8 : f = map(B,A,{-h, h, h^2, h^3, h^4, h^5}) 2 o8 = map(B,A,{-h, h, h , 0, 0, 0}) o8 : RingMap B <--- A |
i9 : i = inclusion(f, NormalClass => c, Codimension => 3, Base => p) -- Base not necessary, will be correctly computed o9 = i o9 : a map to a variety from a variety |
i10 : Z = target i o10 = Z o10 : an abstract variety of dimension 5 |
i11 : X = source i o11 = X o11 : an abstract variety of dimension 2 |
i12 : Xstruct = X / point o12 = Xstruct o12 : a map to point from X |
i13 : rank Xstruct_* tangentBundle X o13 = 8 |
i14 : integral chern tangentBundle Z o14 = 6 o14 : S |
The object inclusion is a method function with options.