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)