login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

# Edit detail for SandBoxExpOfEnd revision 18 of 18

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Editor: Bill page Time: 2014/09/24 02:09:01 GMT+0 Note:

added:

From Billpage Wed Sep 24 02:09:01 +0000 2014
From: Bill page
Date: Wed, 24 Sep 2014 02:09:01 +0000
Subject:
Message-ID: <20140924020901+0000@axiom-wiki.newsynthesis.org>

SandBoxCollect


## Exponential of endomorphism with minimal polynomial

First define some needed operations

Sum and product

fricas
sum(x)==reduce(+,x)
Type: Void
fricas
product(x)==reduce(*,x,1)
Type: Void

Collect terms in x with given factor k.

fricas
QF==>PolynomialCategoryQuotientFunctions(IndexedExponents Kernel Expression Integer,_
Kernel Expression Integer,_
Integer,_
SparseMultivariatePolynomial(Integer,Kernel Expression Integer),_
Expression Integer)
Type: Void
fricas
--collect(x:Expression Integer,k:Kernel Expression Integer):Expression Integer ==
collect(x,k) ==
n1:=univariate(x::Expression Integer,k::Kernel Expression Integer)$QF n2:=(leadingMonomial numer n1)/(denom n1) n3:=multivariate(n2,k::Kernel Expression Integer)$QF
n4:=factor(numer n3)/factor(denom n3)
Type: Void
fricas
--
collector(x:Expression Integer,k:Expression Integer):List Expression Integer ==
s1:=solve(%k=k,variables(k)(1))
x2:=eval(collect(eval(x,s1),%k::Expression Integer::Kernel Expression Integer)::Expression Integer,%k=k)
x2=0 => []
concat(x2,collector(x-x2,k))
Function declaration collector : (Expression(Integer),Expression(
Integer)) -> List(Expression(Integer)) has been added to
workspace.
Type: Void
fricas
--
collector((r2-r1+1)^3,(r2-r1)::Expression Integer)
fricas
Compiling function collect with type (Expression(Integer),Kernel(
Expression(Integer))) -> Fraction(Factored(
SparseMultivariatePolynomial(Integer,Kernel(Expression(Integer)))
))
fricas
Compiling function collector with type (Expression(Integer),
Expression(Integer)) -> List(Expression(Integer))
 (1)
Type: List(Expression(Integer))
fricas
test(sum % = (r2-r1+1)^3)
fricas
Compiling function sum with type List(Expression(Integer)) ->
Expression(Integer)
 (2)
Type: Boolean

Choose n items from a list. Returns list of size binomial(#a,n) of lists.

fricas
choose(a,n) ==
j:=[i for i in 1..n]
r:=[[a(j(i)) for i in 1..n]]
k:=n
while k>0 and j(k)+n-k<#a repeat
j(k):=j(k)+1
for i in k..n-1 repeat j(i+1):=j(i)+1
r:=concat(r,[a(j(i)) for i in 1..n])
k:=n; while j(k)+n-k>=#a and k>1 repeat k:=k-1
if binomial(#a,n)~=#r then error "error in choose"
return r
Type: Void

## Verification of calculations in the paper

(version date: September 12, 2014)

1. Parameterizing group-polynomial in terms of the roots of the generator
2. Minimal polynomial

The Main Result 2.3

The explicit expression for the group-polynomial coefficient functions

fricas
groupPolyCoeff(i) == (-1)^(i+n+1)*sum([exp(r[j])/product([r[j]-r[m] for m in 1..n | j~=m])*f(i,j) for j in 1..n])
Type: Void
fricas
f(i,j) == sum [ product x for x in choose([r[q]::Expression Integer for q in 1..n|q~=j],n-i-1)]
Type: Void

Example (polynomial of degree 1)

fricas
n:=1
 (3)
Type: PositiveInteger?
fricas
groupPolyCoeff(0)
fricas
Compiling function product with type List(Polynomial(Integer)) ->
Polynomial(Integer)
fricas
Compiling function choose with type (List(Expression(Integer)),
Integer) -> List(List(Expression(Integer)))
fricas
Compiling function product with type List(Expression(Integer)) ->
Expression(Integer)
fricas
Compiling function f with type (NonNegativeInteger,PositiveInteger)
-> Expression(Integer)
fricas
Compiling function groupPolyCoeff with type NonNegativeInteger ->
Expression(Integer)
 (4)
Type: Expression(Integer)

3. Polynomial of degree 2
fricas
n:=2
 (5)
Type: PositiveInteger?
fricas
eq2_1:= m[X]=(x-r[1])*(x-r[2])
 (6)
Type: Equation(Polynomial(Integer))
fricas
eq2_2:= exp(X)=g[0]+g[1]*X
 (7)
Type: Equation(Expression(Integer))
fricas
eq2_3a:= g[0]=groupPolyCoeff(0)
 (8)
Type: Equation(Expression(Integer))
fricas
eq2_3b:= g[1]=groupPolyCoeff(1)
fricas
Compiling function f with type (PositiveInteger,PositiveInteger) ->
Expression(Integer)
fricas
Compiling function groupPolyCoeff with type PositiveInteger ->
Expression(Integer)
 (9)
Type: Equation(Expression(Integer))

Example 3.1 (Tri-gonometry)

fricas
eval(eq2_1,[r[2]=-r[1]])
 (10)
Type: Equation(Polynomial(Integer))
fricas
eq2_4:= eval(eval(eq2_2,[eq2_3a,eq2_3b]),r[2]=-r[1])
 (11)
Type: Equation(Expression(Integer))
fricas
htrigs rhs %
 (12)
Type: Expression(Integer)

4. Polynomial of degree 3
fricas
n:=3
 (13)
Type: PositiveInteger?
fricas
eq3_1:= m[X]=(x-r[1])*(x-r[2])*(x-r[3])
 (14)
Type: Equation(Polynomial(Integer))
fricas
eq3_2:= exp(X)=g[0]+g[1]*X+g[2]*X^2
 (15)
Type: Equation(Expression(Integer))
fricas
eq3_3a:= g[0]=groupPolyCoeff(0)
 (16)
Type: Equation(Expression(Integer))
fricas
eq3_3b:= g[1]=groupPolyCoeff(1)
 (17)
Type: Equation(Expression(Integer))
fricas
eq3_3c:= g[2]=groupPolyCoeff(2)
 (18)
Type: Equation(Expression(Integer))

Example 4.1

fricas
eval(eq3_1,[r[2]=-r[1],r[3]=0])
 (19)
Type: Equation(Polynomial(Integer))
fricas
eq3_4:= eval(eval(eq3_2,[eq3_3a,eq3_3b,eq3_3c]),[r[2]=-r[1],r[3]=0])
 (20)
Type: Equation(Expression(Integer))
fricas
htrigs rhs eq3_4
 (21)
Type: Expression(Integer)

Comment 4.2 (Rescaled enomorphism)

fricas
eq3_6:= X' = sinh(r[1])/r[1]*X
 (22)
Type: Equation(Expression(Integer))
fricas
eq3_7:= γ = cosh(r[1])
 (23)
Type: Equation(Expression(Integer))
fricas
eq3_8:= exp(X) = 1+X'+X'^2/(1+γ)
 (24)
Type: Equation(Expression(Integer))
fricas
test(normalize(rhs eval(eq3_8,[eq3_6,eq3_7]) - rhs eq3_4)=0)
 (25)
Type: Boolean

Exercise 4.3

fricas
eval(eq3_1,[r[3]=r[2]])
 (26)
Type: Equation(Polynomial(Integer))
fricas
eq3_9a:=lhs eq3_3a = limit(rhs eq3_3a,r[3]=r[2])
 (27)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
(numer rhs eq3_9a)/factor(denom rhs eq3_9a)
 (28)
Type: SparseMultivariatePolynomial?(Fraction(Factored(SparseMultivariatePolynomial?(Integer,Kernel(Expression(Integer))))),Kernel(Expression(Integer)))
fricas
eq3_9b:=lhs eq3_3b = limit(rhs eq3_3b,r[3]=r[2])
 (29)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
(numer rhs eq3_9b)/factor(denom rhs eq3_9b)
 (30)
Type: SparseMultivariatePolynomial?(Fraction(Factored(SparseMultivariatePolynomial?(Integer,Kernel(Expression(Integer))))),Kernel(Expression(Integer)))
fricas
eq3_9c:=lhs eq3_3c = limit(rhs eq3_3c,r[3]=r[2])
 (31)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
(numer rhs eq3_9c)/factor(denom rhs eq3_9c)
 (32)
Type: SparseMultivariatePolynomial?(Fraction(Factored(SparseMultivariatePolynomial?(Integer,Kernel(Expression(Integer))))),Kernel(Expression(Integer)))

5. Polynomial of degree 4
fricas
n:=4
 (33)
Type: PositiveInteger?
fricas
eq4_1:= m[X]=(x-r[1])*(x-r[2])*(x-r[3])*(x-r[4])
 (34)
Type: Equation(Polynomial(Integer))
fricas
eq4_2:= g[0]=groupPolyCoeff(0)
 (35)
Type: Equation(Expression(Integer))
fricas
eq4_3:= g[1]=groupPolyCoeff(1)
 (36)
Type: Equation(Expression(Integer))
fricas
eq4_4:= g[2]=groupPolyCoeff(2)
 (37)
Type: Equation(Expression(Integer))
fricas
eq4_5:= g[3]=groupPolyCoeff(3)
 (38)
Type: Equation(Expression(Integer))
6. fricas
eq5_1:=eval(eq4_1,[r[3]=-r[1],r[4]=-r[2]])
 (39)
Type: Equation(Polynomial(Integer))

Corollary 6.1

fricas
eq5_2:= exp(X)=g[0]+g[1]*X+g[2]*X^2+g[3]*X^3
 (40)
Type: Equation(Expression(Integer))
fricas
eq5_3a:= eval(eq4_2,[r[3]=-r[1],r[4]=-r[2]])
 (41)
Type: Equation(Expression(Integer))
fricas
htrigs rhs %
 (42)
Type: Expression(Integer)
fricas
eq5_3b:= eval(eq4_3,[r[3]=-r[1],r[4]=-r[2]])
 (43)
Type: Equation(Expression(Integer))
fricas
htrigs rhs %
 (44)
Type: Expression(Integer)
fricas
eq5_3c:= eval(eq4_4,[r[3]=-r[1],r[4]=-r[2]])
 (45)
Type: Equation(Expression(Integer))
fricas
htrigs rhs %
 (46)
Type: Expression(Integer)
fricas
eq5_3d:= eval(eq4_5,[r[3]=-r[1],r[4]=-r[2]])
 (47)
Type: Equation(Expression(Integer))
fricas
htrigs rhs %
 (48)
Type: Expression(Integer)
fricas
eq5_4:= eval(eval(eq5_2,[eq4_2,eq4_3,eq4_4,eq4_5]),[r[3]=-r[1],r[4]=-r[2]])
 (49)
Type: Equation(Expression(Integer))
fricas
htrigs rhs %
 (50)
Type: Expression(Integer)

Definition 6.2

fricas
eq5_5a:= Y[1] = 1/(2*r[1]^2-r[1]^2-r[2]^2)*(X^3-(r[1]^2+r[2]^2-r[1]^2)*X)
 (51)
Type: Equation(Fraction(Polynomial(Integer)))
fricas
eq5_5b:= Y[2] = 1/(2*r[2]^2-r[1]^2-r[2]^2)*(X^3-(r[1]^2+r[2]^2-r[2]^2)*X)
 (52)
Type: Equation(Fraction(Polynomial(Integer)))

Exercise 6.3

fricas
eq5_6a:= X = Y[1]+Y[2]
 (53)
Type: Equation(Polynomial(Integer))
fricas
test(eval(eq5_6a,[eq5_5a,eq5_5b]))
 (54)
Type: Boolean
fricas
eq5_6b:= eval(Y[1]*Y[2]=0,[eq5_5a,eq5_5b])
 (55)
Type: Equation(Expression(Integer))
fricas
eq5_6c:= X^4 = X^4-eval(rhs eq5_1,x=X)
 (56)
Type: Equation(Polynomial(Integer))
fricas
eq5_6d:= X^2*(lhs %)=X^2*(rhs %)
 (57)
Type: Equation(Polynomial(Integer))
fricas
test(_rule(lhs eq5_6d,rhs eq5_6d)(lhs eq5_6b)=rhs eq5_6b)
 (58)
Type: Boolean

Comment 6.5 (Rescaling)

fricas
eq5_7:= sinh(r[1])/r[1]*Y[1]+sinh(r[2])/r[2]*Y[2]
 (59)
Type: Expression(Integer)
fricas
eq5_8a:= [ Y'[1]=sinh(r[1])/r[1]*Y[1], Y'[2]=sinh(r[2])/r[2]*Y[2] ]
 (60)
Type: List(Equation(Expression(Integer)))
fricas
eq5_8b:= [ γ[1] = cosh(r[1]), γ[2] = cosh(r[2]) ]
 (61)
Type: List(Equation(Expression(Integer)))
fricas
eq5_9a:= exp(X) = exp(Y[1])*exp(Y[2])
 (62)
Type: Equation(Expression(Integer))
fricas
eval(eq5_9a,[eq5_5a,eq5_5b])
 (63)
Type: Equation(Expression(Integer))
fricas
test(lhs % = simplify expand rhs %)
 (64)
Type: Boolean
fricas
eq5_9b:= exp(X) = 1 + Y'[1] +Y'[2] + Y'[1]^2/(1+γ[1]) + Y'[2]^2/(1+γ[2])
 (65)
Type: Equation(Expression(Integer))
fricas
normalize eval(eval(rhs eq5_9b,concat [eq5_8a,eq5_8b]),[eq5_5a,eq5_5b])
 (66)
Type: Expression(Integer)
fricas
_rule(lhs eq5_6d,rhs eq5_6d)(%)
 (67)
Type: Expression(Integer)
fricas
_rule(lhs eq5_6c,rhs eq5_6c)(%)
 (68)
Type: Expression(Integer)
fricas
test(normalize(% - rhs eq5_4) = 0)
 (69)
Type: Boolean

7. Multiple roots for polynomial of degree four

Exercise 7.1

fricas
eval(eq4_1,r[4]=r[3])
 (70)
Type: Equation(Polynomial(Integer))
fricas
eq6_1a:=lhs eq4_2 = limit(rhs eq4_2,r[4]=r[3])
 (71)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
collect(rhs(eq6_1a), exp(r[1]))::OutputForm+collect(rhs(eq6_1a), exp(r[2]))::OutputForm+ _
sum _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_1a), exp(r[3])),(r[3]-r[1])::Expression Integer)]
fricas
Compiling function collect with type (OrderedCompletion(Expression(
Integer)),Expression(Integer)) -> Fraction(Factored(
SparseMultivariatePolynomial(Integer,Kernel(Expression(Integer)))
))
fricas
Compiling function sum with type List(OutputForm) -> OutputForm
 (72)
Type: OutputForm?
fricas
eq6_1b:=lhs eq4_3 = limit(rhs eq4_3,r[4]=r[3])
 (73)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
collect(rhs(eq6_1b), exp(r[1]))::OutputForm+collect(rhs(eq6_1b), exp(r[2]))::OutputForm+ _
sum _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_1b), exp(r[3])),(r[3]-r[1])::Expression Integer)]
 (74)
Type: OutputForm?
fricas
eq6_1c:=lhs eq4_4 = limit(rhs eq4_4,r[4]=r[3])
 (75)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
collect(rhs(eq6_1c), exp(r[1]))::OutputForm+collect(rhs(eq6_1c), exp(r[2]))::OutputForm+ _
sum _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_1c), exp(r[3])),(r[3]-r[1])::Expression Integer)]
 (76)
Type: OutputForm?
fricas
eq6_1d:=lhs eq4_5 = limit(rhs eq4_5,r[4]=r[3])
 (77)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
collect(rhs(eq6_1d), exp(r[1]))::OutputForm+collect(rhs(eq6_1d), exp(r[2]))::OutputForm+ _
sum _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_1d), exp(r[3])),(r[3]-r[1])::Expression Integer)]
 (78)
Type: OutputForm?

Exercise 7.3 (Double root)

fricas
eval(eq4_1,[r[3]=r[1],r[4]=r[2]])
 (79)
Type: Equation(Polynomial(Integer))
fricas
eq6_3a:=lhs eq4_2 = limit(limit(rhs eq4_2,r[3]=r[1]),r[4]=r[2])
 (80)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat( _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3a), exp(r[1])),(r[2]-r[1])::Expression Integer)] , _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3a), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (81)
Type: OutputForm?
fricas
eq6_3b:=lhs eq4_3 = limit(limit(rhs eq4_3,r[3]=r[1]),r[4]=r[2])
 (82)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat( _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3b), exp(r[1])),(r[2]-r[1])::Expression Integer)] , _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3b), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (83)
Type: OutputForm?
fricas
eq6_3c:=lhs eq4_4 = limit(limit(rhs eq4_4,r[3]=r[1]),r[4]=r[2])
 (84)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat( _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3c), exp(r[1])),(r[2]-r[1])::Expression Integer)] , _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3c), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (85)
Type: OutputForm?
fricas
eq6_3d:=lhs eq4_5 = limit(limit(rhs eq4_5,r[3]=r[1]),r[4]=r[2])
 (86)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat( _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3d), exp(r[1])),(r[2]-r[1])::Expression Integer)] , _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_3d), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (87)
Type: OutputForm?

Exercise 7.4 (Triple root)

fricas
eval(eq4_1,[r[3]=r[2],r[4]=r[2]])
 (88)
Type: Equation(Polynomial(Integer))
fricas
eq6_4a:=lhs eq4_2 = limit(limit(rhs eq4_2,r[3]=r[2]),r[4]=r[2])
 (89)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat(collect(rhs(eq6_4a), exp(r[1]))::OutputForm, _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_4a), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (90)
Type: OutputForm?
fricas
eq6_4b:=lhs eq4_3 = limit(limit(rhs eq4_3,r[3]=r[2]),r[4]=r[2])
 (91)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat(collect(rhs(eq6_4b), exp(r[1]))::OutputForm, _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_4b), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (92)
Type: OutputForm?
fricas
eq6_4c:=lhs eq4_4 = limit(limit(rhs eq4_4,r[3]=r[2]),r[4]=r[2])
 (93)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat(collect(rhs(eq6_4c), exp(r[1]))::OutputForm, _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_4c), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (94)
Type: OutputForm?
fricas
eq6_4d:=lhs eq4_5 = limit(limit(rhs eq4_5,r[3]=r[2]),r[4]=r[2])
 (95)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
sum concat(collect(rhs(eq6_4d), exp(r[1]))::OutputForm, _
[((factor numer x)/(factor denom x))::OutputForm _
for x in collector(collect(rhs(eq6_4d), exp(r[2])),(r[2]-r[1])::Expression Integer)] )
 (96)
Type: OutputForm?

8. Parabolic isometries: single many-fold root

Exercise 8.1 (Degree two)

fricas
eval(eq2_2,[r[2]=r[1]])
 (97)
Type: Equation(Expression(Integer))
fricas
lhs eq2_3a = limit(rhs eq2_3a,r[2]=r[1])
 (98)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
lhs eq2_3b = limit(rhs eq2_3b,r[2]=r[1])
 (99)
Type: Equation(OrderedCompletion?(Expression(Integer)))

Exercise 8.2 (Triple root)

fricas
eval(eq3_1,[r[2]=r[1],r[3]=r[1]])
 (100)
Type: Equation(Polynomial(Integer))
fricas
lhs eq3_3a = limit(limit(rhs eq3_3a,r[2]=r[1]),r[3]=r[1])
 (101)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
lhs eq3_3b = limit(limit(rhs eq3_3b,r[2]=r[1]),r[3]=r[1])
 (102)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
lhs eq3_3c = limit(limit(rhs eq3_3c,r[2]=r[1]),r[3]=r[1])
 (103)
Type: Equation(OrderedCompletion?(Expression(Integer)))

Exercise 8.3 (Fourfold root)

fricas
eval(eq4_1,[r[2]=r[1],r[3]=r[1],r[4]=r[1]])
 (104)
Type: Equation(Polynomial(Integer))
fricas
lhs eq4_2 = limit(limit(limit(rhs eq4_2,r[2]=r[1]),r[3]=r[1]),r[4]=r[1])
 (105)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
lhs eq4_3 = limit(limit(limit(rhs eq4_3,r[2]=r[1]),r[3]=r[1]),r[4]=r[1])
 (106)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
lhs eq4_4 = limit(limit(limit(rhs eq4_4,r[2]=r[1]),r[3]=r[1]),r[4]=r[1])
 (107)
Type: Equation(OrderedCompletion?(Expression(Integer)))
fricas
lhs eq4_5 = limit(limit(limit(rhs eq4_5,r[2]=r[1]),r[3]=r[1]),r[4]=r[1])
 (108)
Type: Equation(OrderedCompletion?(Expression(Integer)))