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

# isFullIntersection -- check correctness of intersection computation

## Synopsis

• Usage:
result = isFullIntersection(S)
• Inputs:
• S, ,
• Outputs:
• result, , is true to indicate that the generators of $S$ generate the intersection of the original subrings

## Description

Checks if the algorithm for computing the intersection of two subrings in the function intersect produced a subalgebra basis for the intersection.

 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 : S = intersect(S1, S2); i7 : isFullIntersection S o7 = true

This test is one-sided: if the function isFullIntersection returns false, then the generators of the given subring may still generate the intersection as a subalgebra basis.

 i8 : R = QQ[x,y]; i9 : S1 = subring {x^3, x^2*y}; i10 : S2 = subring {x^4, y}; i11 : S = intersect(S1, S2, Limit => 15, CheckFullIntersection => false); i12 : gens S o12 = | x4y2 x8y x12 | 1 3 o12 : Matrix R <-- R i13 : isFullIntersection S o13 = false i14 : isSAGBI S o14 = true

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 setting the option SAGBILimitType to its default value of Fixed or by using a higher Limit option in intersect. 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, the computed generators may be a generating set (but not a subalgebra basis) for the intersection but the algorithm cannot guarantee it.