==================================================================== XPBW Polynomial ==================================================================== Initialisations :: a:Symbol := 'a a Type: Symbol b:Symbol := 'b b Type: Symbol RN := Fraction(Integer) Fraction Integer Type: Domain word := OrderedFreeMonoid Symbol OrderedFreeMonoid Symbol Type: Domain lword := LyndonWord(Symbol) LyndonWord Symbol Type: Domain base := PoincareBirkhoffWittLyndonBasis Symbol PoincareBirkhoffWittLyndonBasis Symbol Type: Domain dpoly := XDistributedPolynomial(Symbol, RN) XDistributedPolynomial(Symbol,Fraction Integer) Type: Domain rpoly := XRecursivePolynomial(Symbol, RN) XRecursivePolynomial(Symbol,Fraction Integer) Type: Domain lpoly := LiePolynomial(Symbol, RN) LiePolynomial(Symbol,Fraction Integer) Type: Domain poly := XPBWPolynomial(Symbol, RN) XPBWPolynomial(Symbol,Fraction Integer) Type: Domain liste : List lword := LyndonWordsList([a,b], 6) 2 2 3 2 2 3 4 3 2 [[a], [b], [a b], [a b], [a b ], [a b], [a b ], [a b ], [a b], [a b ], 2 2 3 2 4 5 4 2 3 3 3 [a b a b], [a b ], [a b a b ], [a b ], [a b], [a b ], [a b a b], [a b ], 2 2 2 2 2 4 3 5 [a b a b ], [a b a b], [a b ], [a b a b ], [a b ]] 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 [a b] + [b][a] Type: XPBWPolynomial(Symbol,Fraction Integer) Coerce to distributed polynomial :: pq :: dpoly a b 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= [a b],c= 1]] Type: List Record(k: PoincareBirkhoffWittLyndonBasis Symbol, c: Fraction Integer) reductum pq [a b] 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 1 2 1 2 1 + [a b] + [b][a] + - [a b][a b] + - [a b ][a] + - [b][a b] 2 2 2 + 3 1 - [b][a b][a] + - [b][b][a][a] 2 2 Type: XPBWPolynomial(Symbol,Fraction Integer) log(pq4,4) - pq (26) 0 Type: XPBWPolynomial(Symbol,Fraction Integer) Calculations with verification in XDistributedPolynomial. :: lp1 :lpoly := LiePoly liste.10 3 2 [a b ] Type: LiePolynomial(Symbol,Fraction Integer) lp2 :lpoly := LiePoly liste.11 2 [a b a b] Type: LiePolynomial(Symbol,Fraction Integer) lp :lpoly := [lp1, lp2] 3 2 2 [a b a b a b] Type: LiePolynomial(Symbol,Fraction Integer) lpd1: dpoly := lp1 3 2 2 2 2 2 2 2 2 3 a b - 2a b a b - a b a + 4a b a b a - a b a - 2b a b a + b a Type: XDistributedPolynomial(Symbol,Fraction Integer) lpd2: dpoly := lp2 2 2 2 2 2 2 3 2 a b a b - a b a - 3a b a b + 4a b a b a - a b a + 2b a b - 3b a b a + 2 b a b a Type: XDistributedPolynomial(Symbol,Fraction Integer) lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1 3 2 2 3 2 2 2 3 2 2 3 2 3 2 2 2 a b a b a b - a b a b a - 3a b a b a b + 4a b a b a b a - a b a b a + 3 3 3 3 3 2 3 3 2 2 3 2 2 2 2 2a b a b - 3a b a b a + a b a b a - a b a b a b + 3a b a b a b a + 2 2 2 2 2 2 2 2 3 6a b a b a b a b - 12a b a b a b a b a + 3a b a b a b a - 4a b a b a b + 2 2 2 2 3 3 2 2 4 2 2 2 3 2 2 2 2 6a b a b a b a - a b a b a + a b a b - 3a b a b a b + 3a b a b a b + 2 2 3 2 2 2 2 2 2 2 2 2 3 - 2a b a b a b + 3a b a b a b a - 3a b a b a b a + a b a b a + 2 3 2 2 2 2 2 2 2 3a b a b a b - 6a b a b a b a b - 3a b a b a b a + 12a b a b a b a b a + 2 2 2 2 2 2 2 3 3 4 2 - 3a b a b a b a - 6a b a b a b a + 3a b a b a - 4a b a b a b + 3 2 2 3 12a b a b a b a b - 12a b a b a b a b + 8a b a b a b a b + 2 2 2 3 2 5 2 - 12a b a b a b a b a + 12a b a b a b a b a - 4a b a b a b a + a b a b + 2 4 2 3 2 2 2 3 2 2 2 - 3a b a b a b + 3a b a b a b - 2a b a b a b + 3a b a b a b a + 2 2 2 2 2 2 3 3 3 2 3 2 - 3a b a b a b a + a b a b a - 2b a b a b + 4b a b a b a b + 3 2 2 3 3 2 2 3 2 2 3 3 3 2b a b a b a - 8b a b a b a b a + 2b a b a b a + 4b a b a b a - 2b a b a + 2 4 2 2 3 2 3 2 2 2 3b a b a b - 6b a b a b a b - 3b a b a b a + 12b a b a b a b a + 2 2 2 2 2 2 2 2 3 5 2 - 3b a b a b a - 6b a b a b a b a + 3b a b a b a - b a b a b + 4 2 3 2 3 3 2 2 3b a b a b a + 6b a b a b a b - 12b a b a b a b a + 3b a b a b a + 2 3 2 2 2 2 3 2 5 2 5 2 - 4b a b a b a b + 6b a b a b a b a - b a b a b a + b a b a b - b a b a + 2 4 2 2 4 2 4 2 2 2 3 3 2 3 2 - 3b a b a b + 4b a b a b a - b a b a + 2b a b a b - 3b a b a b a + 2 3 2 b a b a b a Type: XDistributedPolynomial(Symbol,Fraction Integer) lp :: dpoly - lpd 0 Type: XDistributedPolynomial(Symbol,Fraction Integer) Calculations with verification in XRecursivePolynomial. :: p := 3 * lp 3 2 2 3[a b a b a b] Type: XPBWPolynomial(Symbol,Fraction Integer) q := lp1 3 2 [a b ] Type: XPBWPolynomial(Symbol,Fraction Integer) pq:= p * q 3 2 2 3 2 3[a b a b a b][a b ] Type: XPBWPolynomial(Symbol,Fraction Integer) pr:rpoly := p :: rpoly a * a * a b b * a(a b(a b 3 + b a(- 3)) + b(a(a b(- 9) + b a 12) + b a a(- 3))) + b a(a(a b 6 + b a(- 9)) + b a a 3) + b * a b * a * a(a b b(- 3) + b b a 9) + b(a(a b 18 + b a(- 36)) + b a a 9) + b(a a(a b(- 12) + b a 18) + b a a a(- 3)) + b a * a(a(a b b 3 + b a b(- 9)) + b a a b 9) + b(a(a(a b(- 6) + b a 9) + b a a(- 9)) + b a a a 3) + b * a * a b * a * a(a b b 9 + b(a b(- 18) + b a(- 9))) + b(a b a 36 + b a a(- 9)) + b(a b a a(- 18) + b a a a 9) + b a * a(a(a b b(- 12) + b a b 36) + b a a b(- 36)) + b(a(a(a b 24 + b a(- 36)) + b a a 36) + b a a a(- 12)) + b a a * a(a(a b b 3 + b a b(- 9)) + b a a b 9) + b(a(a(a b(- 6) + b a 9) + b a a(- 9)) + b a a a 3) + b * a * a * a b * a * a(a b b(- 6) + b(a b 12 + b a 6)) + b(a b a(- 24) + b a a 6) + b(a b a a 12 + b a a a(- 6)) + b a * a * a(a b b 9 + b(a b(- 18) + b a(- 9))) + b(a b a 36 + b a a(- 9)) + b(a b a a(- 18) + b a a a 9) + b a a * a(a(a b b(- 3) + b b a 9) + b(a(a b 18 + b a(- 36)) + b a a 9)) + b(a a(a b(- 12) + b a 18) + b a a a(- 3)) + b a a a * a(a b(a b 3 + b a(- 3)) + b(a(a b(- 9) + b a 12) + b a a(- 3))) + b a(a(a b 6 + b a(- 9)) + b a a 3) Type: XRecursivePolynomial(Symbol,Fraction Integer) qr:rpoly := q :: rpoly a(a(a b b 1 + b(a b(- 2) + b a(- 1))) + b(a b a 4 + b a a(- 1))) + b(a b a a(- 2) + b a a a 1) Type: XRecursivePolynomial(Symbol,Fraction Integer) pq :: rpoly - pr*qr 0 Type: XRecursivePolynomial(Symbol,Fraction Integer) See Also: * )show XPBWPolynomial