next | previous | forward | backward | up | index | toc

# intersect(Subring,Subring) -- Intersection of subrings

## Synopsis

• Function: intersect
• Usage:
result = intersect(S1, S2)
• Inputs:
• S1, ,
• S2, ,
• Optional inputs:
• Strategy => , default value "Master", the update strategy at the beginning of each loop: "DegreeByDegree", "Incremental", and "Master". The strategy "Master" is a hybrid method that combines the other two; starting with "DegreeByDegree" for low degrees and switching to "Incremental".
• SubductionMethod => , default value "Top", the method used for subduction. SubductionMethod can be either "Top" or "Engine".
• SAGBILimitType => , default value "Fixed", Either "Fixed" or "Function". Determines the stopping criterion for the subalgebra bases computation. If "Fixed" then the Limit is used, otherwise, if "Function" is selected, then the maximum degree of the input generators is used as the degree limit.
• Limit => an integer, default value 20, a degree limit for the binomial S-pairs that are computed internally.
• PrintLevel => an integer, default value 0, which determines how much information is printed about the progress of the computation. Larger positive values of PrintLevel result in more output.
• CheckFullIntersection => , default value true, which determines if isFullIntersection is run on the output IntersectedSubring.
• Compute => , default value true, which determines if the check to see if the computed generators form a subalgebra basis of the ring they generate is performed.
• Outputs:
• result, ,

## Description

Computes the intersection of input subrings of the same ambient ring.

 i1 : R = QQ[x,y]; i2 : I = ideal(x^3 + x*y^2 + y^3); o2 : Ideal of R i3 : Q = R/I; i4 : S1 = subring {x^2, x*y}; i5 : S2 = subring {x, y^2}; i6 : gens intersect(S1, S2, Limit=>5) -- Warning! Result is not a full intersection. Try increasing Limit. o6 = | x2 x2y2+xy3 | 1 2 o6 : Matrix Q <-- Q i7 : S = intersect(S1, S2); i8 : gens S o8 = | x2 x2y2+xy3 y4 xy3 y6 xy5 | 1 6 o8 : Matrix Q <-- Q i9 : isFullIntersection S o9 = true i10 : isSAGBI S o10 = true

The generators of the resulting IntersectedSubring form a partial subalgebra basis for the computed intersection. When CheckFullIntersection is true, the function automatically checks if the generators of the resulting IntersectedSubring generate the intersection of the given subrings. The generators of an instance of IntersectedSubring lie in both input algebras. However, if the function cannot guarantee that the generators of the resulting IntersectedSubring generate the full intersection then a warning is given.

The function works by creating a composite subring $S$ from the input algebras and attempts to compute a subalgebra basis for $S$. If a subalgebra basis $G$ for $S$ is found, then a subset of $G$ forms a subalgebra basis of the intersection of the input algebras. Whenever this happens, the output is guaranteed to be the full intersection of the input algebras and, furthermore, form a subalgebra basis for the intersection. The function isFullIntersection checks whether this is the case, i.e., whether a finite subalgebra basis for $S$ was found. If the function isFullIntersection returns false then there are a few different possibilities: First, the composite subring $S$ may have a finite subalgebra basis that could be found by either setting the option SAGBILimitType to its default value of Fixed or by using a higher Limit option. Second, $S$ may not have a finite subalgebra basis but the intersection does have a finite subalgebra basis. In this case, the output may be a generating set for the full intersection, but cannot be verified by the algorithm. Third, the intersection of the input algebras may not have a finite subalgebra basis, and so the composite subring does not have a finite subalgebra basis. In this case case, the computed generators may be a generating set (but not a subalgebra basis) for the intersection but the algorithm cannot guarantee it.

This function can also be run on a sequence containing both Subring and IntersectedSubring types. When CheckFullIntersection is true, all intermediate intersections are checked for completeness.

 i11 : R = QQ[x,y]; i12 : S1 = subring{x^2,y^3}; i13 : S2 = subring{x,y^2}; i14 : S3 = subring{x^4,y}; i15 : gens intersect(S1,S2,S3) o15 = | x4 y6 | 1 2 o15 : Matrix R <-- R