7.2 Обертка

class Wrap( wrapInterface, poly)
Задает обертку для организации работы критериев
wrapInterface:
определяет интерфейс обертки(см. 6.1)

poly:
полином (см. 6.2)

Класс Wrap имеет следующие методы:

lm( )
возвращает лидирующий моном полинома

lm( )
возвращает лидирующий моном полинома

ancestor( )
возвращает лидирующий моном полинома из которого данный полином получен серией продолжений

poly( )
возвращает полином

multi( )
возвращает количество мультипликативных переменных

degProlong( )
возвращает степень переменной по которой полином был получен продолжением из другого полинома

lm( )
возвращает лидирующий моном полинома

isProlong( )
возвращает True если является ли полином продолжением другого полнома, иначе False

buildProlong( )
возвращает список степеней переменных по которым данный полином был продолжен

Небольшая программа работы с обертками полиномов после пстроения базисов Грёбнера:

import ginv

st = ginv.SystemType("Polynomial")
im = ginv.MonomInterface("DegRevLex", st, ['x', 'y', 'z'])
ic = ginv.CoeffInterface("GmpZ", st)
ip = ginv.PolyInterface("PolyList", st, im, ic)
iw = ginv.WrapInterface("CritPartially", ip)
iD = ginv.DivisionInterface("Janet", iw)

def printWrap(w):
  print "          lm =", w.lm()
  print "    ancestor =", w.ancestor()
  print "        poly =", w.poly()
  print "       multi =", w.multi()
  print "  degProlong =", w.degProlong()
  print "   isProlong =", w.isProlong()
  print "buildProlong =", w.buildProlong()

basis = ginv.basisBuild("TQBlockLow", iD, \
  ['x^3 - y^2 + z - 1',\
   'y^3 - z^2 + x - 1',\
   'z^3 - x^2 + y - 1'])

for i in [0, 6, 12]:
  printWrap(basis[i])
В результате будет распечатан следующий результат:
          lm = x^2*y^2*z^3
    ancestor = z^3
        poly = x^2*y^2*z^3 + (-1)*x^2*y^2 + x*y^2*z + x^2*z^2 + 
(-1)*x*y*z^2 + x^2*y + (-1)*x*y^2 + x^2 + (-1)*x*y + (-1)*y^2 + z + (-1)
       multi = 1
  degProlong = 0
   isProlong = True
buildProlong = [1, 1, 0]
          lm = x^2*y^3
    ancestor = y^3
        poly = x^2*y^3 + (-1)*x^2*z^2 + (-1)*x^2 + y^2 + (-1)*z + 1
       multi = 2
  degProlong = 0
   isProlong = True
buildProlong = [1, 0, 0]
          lm = z^3
    ancestor = z^3
        poly = z^3 + (-1)*x^2 + y + (-1)
       multi = 1
  degProlong = 0
   isProlong = False
buildProlong = [1, 1, 0]