Macaulay2 » Documentation
Packages » SubalgebraBases :: CheckFullIntersection
next | previous | forward | backward | up | index | toc

CheckFullIntersection -- Flag for deciding if isFullIntersection is called

Description

If the option is set to true, then the function intersect(Subring,Subring) performs two tests. If either of these tests fail, then a relevant warning message is displayed. Other than the warning messages, the output of the function intersect(Subring,Subring) is not affected by the value of this option. If the option CheckFullIntersection is set to false then no warnings are produced.

The first test is performed at the beginning of the function call. It checks whether any of the inputs is an intersected subring and applies isFullIntersection to each instance. For more details see isFullIntersection. If the function isFullIntersection returns false, i.e., the generators of the input are not guaranteed to generate the full intersection, then a warning is printed.

i1 : R = QQ[x,y];
i2 : S1 = subring {x^2, y^2};
i3 : S2 = subring {x*y};
i4 : gens (S3 = intersect(S1, S2, Limit => 6, CheckFullIntersection => false))

o4 = | x2y2 |

             1      1
o4 : Matrix R  <-- R
i5 : isFullIntersection S3

o5 = false
i6 : gens (S4 = intersect(S3, S2, Limit => 6))
-- Warning! The input contains an IntersectedSubring whose generators may not generate the entire subring

o6 = | x2y2 |

             1      1
o6 : Matrix R  <-- R
i7 : isFullIntersection S4

o7 = true

In the example above, a warning is produced when computing $S4$ because the input algebra $S3$ is not guaranteed to be the full intersection. However, the final line shows that the generators of $S4$ are guaranteed to generate the full intersection of $S2$ and $S3$.

The second test is performed at the end of the function call. It checks if the result is guaranteed to generate the full intersection by calling isFullIntersection on the result. If the function isFullIntersection returns false, then a warning printed. For instance, in the example above, the computation of $S3$ would print a warning.

i8 : intersect(S1, S2, Limit => 6)
-- Warning! Result is not a full intersection.  Try increasing Limit.

o8 = QQ[p_0], subring of R

o8 : IntersectedSubring

If this warning message appears, then it is recommended to set the option SAGBILimitType to its default value of Fixed or to use a higher value for the option Limit.

See also

Functions with optional argument named CheckFullIntersection:

For the programmer

The object CheckFullIntersection is a symbol.