# 9.88 XPBWPolynomialΒΆ

Initialisations

a:Symbol := 'a


 a

Type: Symbol

b:Symbol := 'b


 b

Type: Symbol

RN := Fraction(Integer)


 FractionInteger

Type: Domain

word := OrderedFreeMonoid Symbol


 OrderedFreeMonoidSymbol

Type: Domain

lword := LyndonWord(Symbol)


 LyndonWordSymbol

Type: Domain

base := PoincareBirkhoffWittLyndonBasis Symbol


 PoincareBirkhoffWittLyndonBasisSymbol

Type: Domain

dpoly := XDistributedPolynomial(Symbol, RN)


 XDistributedPolynomial(Symbol,FractionInteger)

Type: Domain

rpoly := XRecursivePolynomial(Symbol, RN)


 XRecursivePolynomial(Symbol,FractionInteger)

Type: Domain

lpoly := LiePolynomial(Symbol, RN)


 LiePolynomial(Symbol,FractionInteger)

Type: Domain

poly := XPBWPolynomial(Symbol, RN)


 XPBWPolynomial(Symbol,FractionInteger)

Type: Domain

liste : List lword := LyndonWordsList([a,b], 6)


 [[a],[b],[ab],[a2b],[ab2],[a3b],[a2b2],[ab3],[a4b],[a3b2],[a2bab],[a2b3],[abab2],[ab4],[a5b],[a4b2],[a3bab],[a3b3],[a2bab2],[a2b2ab],[a2b4],[abab3],[ab5]]

Type: List LyndonWord Symbol

Let’s make some polynomials

0$poly    0 Type: XPBWPolynomial(Symbol,Fraction Integer) 1$poly


 1

Type: XPBWPolynomial(Symbol,Fraction Integer)

p : poly := a


 [a]

Type: XPBWPolynomial(Symbol,Fraction Integer)

q : poly := b


 [b]

Type: XPBWPolynomial(Symbol,Fraction Integer)

pq: poly := p*q


 [ab]+[b][a]

Type: XPBWPolynomial(Symbol,Fraction Integer)

Coerce to distributed polynomial

pq :: dpoly


 ab

Type: XDistributedPolynomial(Symbol,Fraction Integer)

Check some polynomial operations

mirror pq


 [b][a]

Type: XPBWPolynomial(Symbol,Fraction Integer)

ListOfTerms pq


 [[k=[b][a],c=1],[k=[ab],c=1]]

Type: List Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)

reductum pq


 [ab]

Type: XPBWPolynomial(Symbol,Fraction Integer)

leadingMonomial pq


 [b][a]

Type: PoincareBirkhoffWittLyndonBasis Symbol

coefficients pq


 [1,1]

Type: List Fraction Integer

leadingTerm pq


 [k=[b][a],c=1]

Type: Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)

degree pq


 2

Type: PositiveInteger

pq4:=exp(pq,4)


 1+[ab]+[b][a]+12[ab][ab]+12[ab2][a]+12[b][a2b]+32[b][ab][a]+12[b][b][a][a]

Type: XPBWPolynomial(Symbol,Fraction Integer)

log(pq4,4) - pq


 0

Type: XPBWPolynomial(Symbol,Fraction Integer)

Calculations with verification in XDistributedPolynomial.

lp1 :lpoly := LiePoly liste.10


 [a3b2]

Type: LiePolynomial(Symbol,Fraction Integer)

lp2 :lpoly := LiePoly liste.11


 [a2bab]

Type: LiePolynomial(Symbol,Fraction Integer)

lp :lpoly := [lp1, lp2]


 [a3b2a2bab]

Type: LiePolynomial(Symbol,Fraction Integer)

lpd1: dpoly := lp1


 a3b2-2a2bab-a2b2a+4ababa-ab2a2-2baba2+b2a3

Type: XDistributedPolynomial(Symbol,Fraction Integer)

lpd2: dpoly := lp2


 a2bab-a2b2a-3aba2b+4ababa-ab2a2+2ba3b-3ba2ba+baba2

Type: XDistributedPolynomial(Symbol,Fraction Integer)

lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1


 a3b2a2bab-a3b2a2b2a-3a3b2aba2b+4a3b2ababa-a3b2ab2a2+2a3b3a3b-3a3b3a2ba+a3b3aba2-a2baba3b2+3a2baba2b2a+6a2bababa2b-12a2babababa+3a2babab2a2-4a2bab2a3b+6a2bab2a2ba-a2bab3a3+a2b2a4b2-3a2b2a3bab+3a2b2a2ba2b-2a2b2aba3b+3a2b2aba2ba-3a2b2ababa2+a2b2ab2a3+3aba2ba3b2-6aba2ba2bab-3aba2ba2b2a+12aba2bababa-3aba2bab2a2-6aba2b2aba2+3aba2b3a3-4ababa4b2+12ababa3bab-12ababa2ba2b+8abababa3b-12abababa2ba+12ababababa2-4ababab2a3+ab2a5b2-3ab2a4bab+3ab2a3ba2b-2ab2a2ba3b+3ab2a2ba2ba-3ab2a2baba2+ab2a2b2a3-2ba3ba3b2+4ba3ba2bab+2ba3ba2b2a-8ba3bababa+2ba3bab2a2+4ba3b2aba2-2ba3b3a3+3ba2ba4b2-6ba2ba3bab-3ba2ba3b2a+12ba2ba2baba-3ba2ba2b2a2-6ba2bababa2+3ba2bab2a3-baba5b2+3baba4b2a+6baba3ba2b-12baba3baba+3baba3b2a2-4baba2ba3b+6baba2ba2ba-baba2b2a3+b2a5bab-b2a5b2a-3b2a4ba2b+4b2a4baba-b2a4b2a2+2b2a3ba3b-3b2a3ba2ba+b2a3baba2

Type: XDistributedPolynomial(Symbol,Fraction Integer)

lp :: dpoly - lpd


 0

Type: XDistributedPolynomial(Symbol,Fraction Integer)

Calculations with verification in XRecursivePolynomial.

p := 3 * lp


 3[a3b2a2bab]

Type: XPBWPolynomial(Symbol,Fraction Integer)

q := lp1


 [a3b2]

Type: XPBWPolynomial(Symbol,Fraction Integer)

pq:= p * q


 3[a3b2a2bab][a3b2]

Type: XPBWPolynomial(Symbol,Fraction Integer)

pr:rpoly := p :: rpoly


 a(a(abb(a(ab(ab3+ba(-3))+b(a(ab(-9)+ba12)+baa(-3)))+ba(a(ab6+ba(-9))+baa3))+b(ab(a(a(abb(-3)+bba9)+b(a(ab18+ba(-36))+baa9))+b(aa(ab(-12)+ba18)+baaa(-3)))+ba(a(a(abb3+bab(-9))+baab9)+b(a(a(ab(-6)+ba9)+baa(-9))+baaa3))))+b(a(ab(a(a(abb9+b(ab(-18)+ba(-9)))+b(aba36+baa(-9)))+b(abaa(-18)+baaa9))+ba(a(a(abb(-12)+bab36)+baab(-36))+b(a(a(ab24+ba(-36))+baa36)+baaa(-12))))+baa(a(a(abb3+bab(-9))+baab9)+b(a(a(ab(-6)+ba9)+baa(-9))+baaa3))))+b(a(a(ab(a(a(abb(-6)+b(ab12+ba6))+b(aba(-24)+baa6))+b(abaa12+baaa(-6)))+ba(a(a(abb9+b(ab(-18)+ba(-9)))+b(aba36+baa(-9)))+b(abaa(-18)+baaa9)))+baa(a(a(abb(-3)+bba9)+b(a(ab18+ba(-36))+baa9))+b(aa(ab(-12)+ba18)+baaa(-3))))+baaa(a(ab(ab3+ba(-3))+b(a(ab(-9)+ba12)+baa(-3)))+ba(a(ab6+ba(-9))+baa3)))

Type: XRecursivePolynomial(Symbol,Fraction Integer)

qr:rpoly := q :: rpoly


 a(a(abb1+b(ab(-2)+ba(-1)))+b(aba4+baa(-1)))+b(abaa(-2)+baaa1)

Type: XRecursivePolynomial(Symbol,Fraction Integer)

pq :: rpoly - pr*qr


 0

Type: XRecursivePolynomial(Symbol,Fraction Integer)