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

# sagbi -- Compute a subalgebra basis (sagbi basis)

## Synopsis

• Usage:
N = sagbi M
N = sagbi A
N = sagbi L
N = sagbi B
• Inputs:
• A, ,
• M, , of generators for of
• L, a list, containing generators for of
• B, , containing a partial computation of a subalgebra basis
• Optional inputs:
• AutoSubduce => , default value true, a flag indicating when to perform autosubduction on the generators before performing the subalgebra basis computation
• ReduceNewGenerators => , default value true, a flag indicating whether to reduce (via Gaussian elimination) to new subalgebra generators before adding them to the current subalgebra basis
• StorePending => , default value true, a flag that indicates whether the pending list should be stored in the result.
• Strategy => , default value "Master", the name of 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 name of the method used for subduction either: "Top" or "Engine".
• Limit => an integer, default value 20, a degree limit for the binomial S-pairs that are computed internally.
• AutoSubduceOnPartialCompletion => , default value false, a flag that indicates whether autosubduction is applied to the subalgebra generators the first time no new generators are added. Use this only if very few new subalgebra generators are expected.
• PrintLevel => an integer, default value 0, an option to produce additional output. When this is greater than zero, information is printed about the progress of the computation
• Recompute => , default value false, a flag that indicates if the computation will resume in subsequent runs, otherwise it starts at the beginning
• RenewOptions => , default value false, a flag that indicates if the computation will use the options specified, otherwise it will use the previously selected options (except for the following, which may always be specified: PrintLevel, Limit, Recompute, and RenewOptions)
• Outputs:
• N, , a computation object holding the state of the subalgebra basis computation

## Description

The output of this function is a partial subalgebra basis stored in a computation object.

 i1 : R = QQ[t_(1,1)..t_(3,3),MonomialOrder=>Lex]; i2 : M = genericMatrix(R,3,3); 3 3 o2 : Matrix R <-- R i3 : A = subring gens minors(2, M); i4 : isSAGBI A o4 = false i5 : S = sagbi A; i6 : gS = gens S o6 = | t_(2,2)t_(3,3)-t_(2,3)t_(3,2) t_(2,1)t_(3,3)-t_(2,3)t_(3,1) ------------------------------------------------------------------------ t_(2,1)t_(3,2)-t_(2,2)t_(3,1) t_(1,2)t_(3,3)-t_(1,3)t_(3,2) ------------------------------------------------------------------------ t_(1,2)t_(2,3)-t_(1,3)t_(2,2) t_(1,1)t_(3,3)-t_(1,3)t_(3,1) ------------------------------------------------------------------------ t_(1,1)t_(3,2)-t_(1,2)t_(3,1) t_(1,1)t_(2,3)-t_(1,3)t_(2,1) ------------------------------------------------------------------------ t_(1,1)t_(2,2)-t_(1,2)t_(2,1) ------------------------------------------------------------------------ t_(1,1)t_(2,2)t_(3,1)t_(3,3)-t_(1,1)t_(2,3)t_(3,1)t_(3,2)-t_(1,2)t_(2,1) ------------------------------------------------------------------------ t_(3,1)t_(3,3)+t_(1,2)t_(2,3)t_(3,1)^2+t_(1,3)t_(2,1)t_(3,1)t_(3,2)-t_(1 ------------------------------------------------------------------------ ,3)t_(2,2)t_(3,1)^2 t_(1,1)t_(1,3)t_(2,2)t_(3,3)-t_(1,1)t_(1,3)t_(2,3)t ------------------------------------------------------------------------ _(3,2)-t_(1,2)t_(1,3)t_(2,1)t_(3,3)+t_(1,2)t_(1,3)t_(2,3)t_(3,1)+t_(1,3 ------------------------------------------------------------------------ )^2t_(2,1)t_(3,2)-t_(1,3)^2t_(2,2)t_(3,1) | 1 11 o6 : Matrix R <-- R i7 : isSAGBI gS o7 = true

Partial subalgebra bases are unavoidable since a subalgebra of a polynomial ring, endowed with some polynomial order, need not have a finite subalgebra basis. Here is a quintessential example of this phenomenon:

 i8 : R=QQ[x,y]; i9 : A = subring matrix{{x+y,x*y,x*y^2}}; i10 : gens sagbi(A,Limit=>3) o10 = | x+y xy xy2 | 1 3 o10 : Matrix R <-- R i11 : gens sagbi(A,Limit=>10) o11 = | x+y xy xy2 xy3 xy4 xy5 xy6 xy7 xy8 xy9 | 1 10 o11 : Matrix R <-- R

Nevertheless, a finite subalgebra basis can be computed in many cases.