class interface TERM_ORDERING

creation

make (vars: ARRAY[INDETERMINATE]; weights: ARRAY2[INTEGER])

— n x n array of integers
— does not copy weights or vars; change the original object, and you change this term_ordering!

require

vars /= Void;

weights /= Void;

vars.count = weights.column_count;

weights.line_count = weights.column_count

make_lex (vars: ARRAY[INDETERMINATE])

— makes a purely lexicographic term ordering
— vars[1] > vars[2] > ... > vars[vars.length]
— does not copy vars; change the original object, and you change this term_ordering!

require

vars /= Void

make_grlex (vars: ARRAY[INDETERMINATE])

— makes a total-degree term ordering
— vars[1] > vars[2] > ... > vars[vars.length]
— does not copy vars; change the original object, and you change this term_ordering!

require

vars /= Void

make_tdeg (vars: ARRAY[INDETERMINATE])

— make_tdeg is a synonym for make_grlex

feature(s) from TERM_ORDERING

variables: ARRAY[INDETERMINATE]

weight_matrix: ARRAY2[INTEGER]

make (vars: ARRAY[INDETERMINATE]; weights: ARRAY2[INTEGER])

— n x n array of integers
— does not copy weights or vars; change the original object, and you change this term_ordering!

require

vars /= Void;

weights /= Void;

vars.count = weights.column_count;

weights.line_count = weights.column_count

make_lex (vars: ARRAY[INDETERMINATE])

— makes a purely lexicographic term ordering
— vars[1] > vars[2] > ... > vars[vars.length]
— does not copy vars; change the original object, and you change this term_ordering!

require

vars /= Void

make_grlex (vars: ARRAY[INDETERMINATE])

— makes a total-degree term ordering
— vars[1] > vars[2] > ... > vars[vars.length]
— does not copy vars; change the original object, and you change this term_ordering!

require

vars /= Void

make_tdeg (vars: ARRAY[INDETERMINATE])

— make_tdeg is a synonym for make_grlex

weight_of (m: MONOMIAL): ARRAY[INTEGER]

— does not require that m be simplified

require

m /= Void

max (m1: MONOMIAL; m2: MONOMIAL): MONOMIAL

— returns Void if m1=m2

require

m1 /= Void;

m2 /= Void

ensure

Result = Void implies m1.is_equal(m2)

leading_monomial (f: POLYNOMIAL): MONOMIAL

infix "//" (polys: ARRAY[POLYNOMIAL]): ARRAY[POLYNOMIAL]

— polys @ 1 is the polynomial THAT you want to reduce
— polys @ 2, ..., polys @ polys.count are the polynomials OVER WHICH you want to reduce
— Result @ 1 is the remainder
— Result @ 2, ..., Result @ polys.count are the quotients corresponding to polys @ 2, ..., polys @ polys.count

require

polys /= Void;

all_nonzero(polys)

infix "\\" (polys: ARRAY[POLYNOMIAL]): POLYNOMIAL

— returns a remainder on division of Current by polys
— this remainder is not unique for more than one variable, unless polys is a Gr�bner basis
— choosing a different order for polys could change the remainder

require

all_nonzero(polys)

all_nonzero (polys: ARRAY[POLYNOMIAL]): BOOLEAN

— indicates whether all the polynomials of polys are nonzero

print_text

print_latex

end of TERM_ORDERING