Let $I \subseteq R = k[x_1, \ldots, x_n]$ be an ideal. A set of generators $\mathcal G$ for $I$ is a universal Gröbner basis for $I$ if it is a Gröbner basis for $I$ with respect to any monomial order on $R$. The default value is always UniversalGB=>false.

Set UniversalGB to true if it is known that the given generators for your ideal form a universal Gröbner basis. In this case, we can avoid computing Gröbner bases as geometric vertex decompositions preserve universal Gröbner basis. That is, if $\{ y^{d_i}q_i + r_i \mid i = 1, \ldots, s \}$ is a universal Gröbner basis for an ideal $I$, then $\{ q_1, \ldots, q_s \}$ and $\{ q_i \mid d_i = 0 \}$ are universal Gröbner bases for $C_{y,I}$ and $N_{y,I}$ in $k[x_1, \ldots, \hat y, \ldots, x_n]$, respectively.

If a universal Gr\"obner basis is not given, the intersection condition ${\rm in}_y(I) = C_{y,I} \cap (N_{y,I} + \langle y \rangle)$ via the results of [KR, Lemmas 2.6 and 2.12], which looks at the degree of $y$ in the reduced Gr\"obner basis of $I$. In general, a universal Gr\"obner basis is not reduced, so the intersection condition must be checked explicitly. So, although providing a universal Gr\"obner basis will speed up computing the ideals $C_{y, I}$ and $N_{y, I}$, it may take longer to verify the intersection condition.

- oneStepGVDCyI -- computes the ideal $C_{y,I}$ for a given ideal and indeterminate
- findOneStepGVD -- for which indeterminates does there exist a geometric vertex decomposition
- getGVDIdeal -- computes the $C_{y,I}$ or $N_{y,I}$ ideal at any point in the GVD recursion tree
- initialYForms -- computes the ideal of initial y-forms
- isGVD -- checks whether an ideal is geometrically vertex decomposable
- isLexCompatiblyGVD -- checks whether an ideal is <-compatibly geometrically vertex decomposable for a given order
- isWeaklyGVD -- checks whether an ideal is weakly geometrically vertex decomposable
- oneStepGVDNyI -- computes the ideal $N_{y,I}$ for a given ideal and indeterminate
- oneStepGVD -- computes a geometric vertex decomposition

- findOneStepGVD(...,UniversalGB=>...)
- getGVDIdeal(...,UniversalGB=>...)
- initialYForms(...,UniversalGB=>...)
- isGVD(...,UniversalGB=>...)
- isLexCompatiblyGVD(...,UniversalGB=>...)
- isWeaklyGVD(...,UniversalGB=>...)
- oneStepGVD(...,UniversalGB=>...)
- oneStepGVDCyI(...,UniversalGB=>...)
- oneStepGVDNyI(...,UniversalGB=>...)

The object UniversalGB is a symbol.