Obs(3) is a 9 dimensional Frobenius Algrebra
fricas
)set output abbreviate on
V := OrderedVariableList [p,q,r]
Type: TYPE
fricas
M := FreeMonoid V
Type: TYPE
fricas
gens:List M := enumerate()$V
Type: LIST(FMONOID(OVAR([p,q,r])))
fricas
divisible := Record(lm: M,rm: M)
Type: TYPE
fricas
leftDiv(k:Union(divisible,"failed")):M == (k::divisible).lm
Function declaration leftDiv : Union(Record(lm: FMONOID(OVAR([p,q,r]
)),rm: FMONOID(OVAR([p,q,r]))),"failed") -> FMONOID(OVAR([p,q,r])
) has been added to workspace.
Type: VOID
fricas
rightDiv(k:Union(divisible,"failed")):M == (k::divisible).rm
Function declaration rightDiv : Union(Record(lm: FMONOID(OVAR([p,q,r
])),rm: FMONOID(OVAR([p,q,r]))),"failed") -> FMONOID(OVAR([p,q,r]
)) has been added to workspace.
Type: VOID
fricas
K := FRAC POLY INT
Type: TYPE
fricas
MK := FreeModule(K,M)
Type: TYPE
fricas
coeff(x:MK):K == leadingCoefficient(x)
Function declaration coeff : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]
))) -> FRAC(POLY(INT)) has been added to workspace.
Type: VOID
fricas
monomial(x:MK):M == leadingMonomial(x)
Function declaration monomial : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q
,r]))) -> FMONOID(OVAR([p,q,r])) has been added to workspace.
Type: VOID
fricas
m(x:M):K == subscript('m,[retract(x)::Symbol])
Function declaration m : FMONOID(OVAR([p,q,r])) -> FRAC(POLY(INT))
has been added to workspace.
Type: VOID
fricas
γ(x:M,y:M):K == subscript('γ,[concat(string retract x, string retract y)::Symbol])
Function declaration γ : (FMONOID(OVAR([p,q,r])),FMONOID(OVAR([p,q,r
]))) -> FRAC(POLY(INT)) has been added to workspace.
Type: VOID
Basis
fricas
basis := concat(gens,concat [[j*i for i in gens | i~=j] for j in gens])
Type: LIST(FMONOID(OVAR([p,q,r])))
Idempotent
fricas
rule1(ij:MK):MK ==
for k in gens repeat
kk := divide(monomial(ij),k*k)
if kk case divisible then
ij:=(coeff(ij) * m(k)*γ(k,k)) * (leftDiv(kk) * k * rightDiv(kk))
return(ij)
Function declaration rule1 : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]
))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]))) has been added
to workspace.
Type: VOID
Reduction
fricas
rule2(ij:MK):MK ==
for i in gens repeat
for j in gens | j ~= i repeat
for k in gens | k ~= j repeat
ijk:=divide(leadingMonomial(ij),i*j*k)
if ijk case divisible then
if i=k then
ij := (coeff(ij)*m(i)*m(j)*γ(i,j)*γ(j,i) ) * _
(leftDiv(ijk)*i*rightDiv(ijk))
else
ij := (coeff(ij)*m(j)*γ(i,j)*γ(j,k) / γ(i,k) ) * _
(leftDiv(ijk)*i*k*rightDiv(ijk))
return(ij)
Function declaration rule2 : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]
))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]))) has been added
to workspace.
Type: VOID
Modulo fixed point of applied rules
fricas
mod(ij:MK):MK ==
ijFix:MK := 1
while ijFix~=ij repeat
ijFix := ij
ij := rule1(ij)
ij := rule2(ij)
return(ij)
Function declaration mod : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]))
) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]))) has been added to
workspace.
Type: VOID
Matrix
Multiplication is monoidal concatenation modulo the fixed point
fricas
--MT := [[mod(i*j) for j in basis] for i in basis]
-- idempotent
MT := [[monomial(eval(coeff(mod(i*j)),[γ(gens(1),gens(1))=1,γ(gens(2),gens(2))=1,γ(gens(3),gens(3))=1,γ(gens(2),gens(1))=γ(gens(1),gens(2)),γ(gens(3),gens(2))=γ(gens(2),gens(3)),γ(gens(3),gens(1))=γ(gens(1),gens(3))]),monomial(mod(i*j)))$MK for j in basis] for i in basis]
fricas
Compiling function monomial with type FM(FRAC(POLY(INT)),FMONOID(
OVAR([p,q,r]))) -> FMONOID(OVAR([p,q,r]))
fricas
Compiling function coeff with type FM(FRAC(POLY(INT)),FMONOID(OVAR([
p,q,r]))) -> FRAC(POLY(INT))
fricas
Compiling function m with type FMONOID(OVAR([p,q,r])) -> FRAC(POLY(
INT))
fricas
Compiling function γ with type (FMONOID(OVAR([p,q,r])),FMONOID(OVAR(
[p,q,r]))) -> FRAC(POLY(INT))
fricas
Compiling function leftDiv with type Union(Record(lm: FMONOID(OVAR([
p,q,r])),rm: FMONOID(OVAR([p,q,r]))),"failed") -> FMONOID(OVAR([p
,q,r]))
fricas
Compiling function rightDiv with type Union(Record(lm: FMONOID(OVAR(
[p,q,r])),rm: FMONOID(OVAR([p,q,r]))),"failed") -> FMONOID(OVAR([
p,q,r]))
fricas
Compiling function rule1 with type FM(FRAC(POLY(INT)),FMONOID(OVAR([
p,q,r]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r])))
fricas
Compiling function rule2 with type FM(FRAC(POLY(INT)),FMONOID(OVAR([
p,q,r]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r])))
fricas
Compiling function mod with type FM(FRAC(POLY(INT)),FMONOID(OVAR([p,
q,r]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r])))
Type: LIST(LIST(FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r])))))
Structure Constants
fricas
R:=FRAC DMP(concat [[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10],[m(i) for i in gens],concat [[γ(j,i) for i in gens] for j in gens]], INT)
Type: TYPE
fricas
mat3(y:M):List List R == map(z+->map(x+->coefficient(x,y)::FRAC POLY INT,z),MT)
Function declaration mat3 : FMONOID(OVAR([p,q,r])) -> LIST(LIST(FRAC
(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,
*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))))
has been added to workspace.
Type: VOID
fricas
ss:=map(mat3, basis)
fricas
Compiling function mat3 with type FMONOID(OVAR([p,q,r])) -> LIST(
LIST(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,
*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],
INT))))
Type: LIST(LIST(LIST(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))))
Algebra
fricas
cats(m:M):Symbol==concat(map(x+->string(x.gen::Symbol),factors m))::Symbol
Function declaration cats : FMONOID(OVAR([p,q,r])) -> SYMBOL has
been added to workspace.
Type: VOID
fricas
A:=AlgebraGivenByStructuralConstants(R,#(basis)::PI,map(cats,basis),ss::Vector(Matrix R))
fricas
Compiling function cats with type FMONOID(OVAR([p,q,r])) -> SYMBOL
? , [ \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } ]?)" title="
\label{eq11}\hbox{\axiomType{ALGSC}\ } (\hbox{\axiomType{FRAC}\ } (\hbox{\axiomType{DMP}\ } ([ x 1, x 2, x 3, x 4, x 5, x 6, x 7, x 8, x 9, x 10, 01 mp , 01 mq , 01 mr , 01 �� pp , * 01 �� pq , * 01 �� pr , * 01 �� qp , * 01 �� qq , * 01 �� qr , * 01 �� rp , * 0
1 �� rq , * 01 �� rr ] , \hbox{\axiomType{INT}\ })) , 9, [ p , q , r , pq , pr , qp , qr , rp , rq ]? , [ \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } , \hbox{\axiomType{MATRIX}\ } ]?)" class="equation" src="images/142965793636442936-16.0px.png" align="bottom" Style="vertical-align:text-bottom" width="791" height="18"/> | (11) |
Type: TYPE
fricas
alternative?()$A
algebra satisfies 2*associator(a,b,b) = 0 = 2*associator(a,a,b) = 0
Type: BOOLEAN
fricas
antiAssociative?()$A
algebra is not anti-associative
Type: BOOLEAN
fricas
antiCommutative?()$A
algebra is not anti-commutative
Type: BOOLEAN
fricas
associative?()$A
algebra is associative
Type: BOOLEAN
fricas
commutative?()$A
algebra is not commutative
Type: BOOLEAN
fricas
flexible?()$A
algebra is flexible
Type: BOOLEAN
fricas
jacobiIdentity?()$A
Jacobi identity does not hold
Type: BOOLEAN
fricas
jordanAdmissible?()$A
algebra is not Jordan admissible
Type: BOOLEAN
fricas
jordanAlgebra?()$A
algebra is not commutative
this is not a Jordan algebra
Type: BOOLEAN
fricas
leftAlternative?()$A
algebra is left alternative
Type: BOOLEAN
fricas
rightAlternative?()$A
algebra is right alternative
Type: BOOLEAN
fricas
lieAdmissible?()$A
algebra is Lie admissible
Type: BOOLEAN
fricas
lieAlgebra?()$A
algebra is not anti-commutative
this is not a Lie algebra
Type: BOOLEAN
fricas
powerAssociative?()$A
Internal Error
The function powerAssociative? with signature hashcode is missing
from domain AlgebraGivenByStructuralConstants
(Fraction (DistributedMultivariatePolynomial (x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 (*01m p) (*01m q) (*01m r) (*01γ pp) (*01γ pq) (*01γ pr) (*01γ qp) (*01γ qq) (*01γ qr) (*01γ rp) (*01γ rq) (*01γ rr)) (Integer)))
9(p q r pq pr qp qr rp rq)UNPRINTABLE
Check Multiplication
fricas
AB := entries basis()$A
Type: LIST(ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]))
fricas
p:=AB(1); q:=AB(2); r:=AB(3);
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
A2MK(z:A):MK==reduce(+,map((x:R,y:M):MK+->(x::K)*y,coordinates(z),basis))
Function declaration A2MK : ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,
x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γ
qr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[
MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
-> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r]))) has been added to
workspace.
Type: VOID
fricas
test(MT=map(x+->map(A2MK,x),[[i*j for j in AB] for i in AB]))
fricas
Compiling function A2MK with type ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,
x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq
,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[
MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
-> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r])))
Type: BOOLEAN
fricas
p*p
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p*q*p
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p*q*r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
Lie derivation
fricas
Dp(q) == p*q - q*p
Type: VOID
fricas
test(Dp(q*r) = Dp(q)*r + q*Dp(r))
fricas
Compiling function Dp with type ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7
,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,
*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[
MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
-> ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,
*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,
*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,
MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
Type: BOOLEAN
fricas
Dp(p)
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dp(q)
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dp(Dp(q))
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dp(Dp(Dp(q)))
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p*Dp(q)
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dq(r) == q*r - r*q
Type: VOID
fricas
Dp(Dq(r))
fricas
Compiling function Dq with type ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7
,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,
*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[
MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
-> ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,
*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,
*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,
MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dq(Dp(r))
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dp(Dq(Dp(r)))
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
Dq(Dp(Dq(r)))
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
Trace
fricas
[rightTrace(i)$A for i in AB]
Type: LIST(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
[leftTrace(i)$A for i in AB]
Type: LIST(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
trace(i)==rightTrace(i) / #gens
Type: VOID
fricas
[trace(i) for i in AB]
fricas
Compiling function trace with type ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6
,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γ
qq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq]
,[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]
) -> FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,
*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],
INT))
Type: LIST(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
Scalar Product
fricas
matrix [[trace(i*j) for j in [AB.1,AB.2,AB.3]] for i in [AB.1,AB.2,AB.3]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.1,AB.2,AB.3]] for i in [AB.4,AB.5,AB.6]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.1,AB.2,AB.3]] for i in [AB.7,AB.8,AB.9]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.4,AB.5,AB.6]] for i in [AB.1,AB.2,AB.3]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.4,AB.5,AB.6]] for i in [AB.4,AB.5,AB.6]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.4,AB.5,AB.6]] for i in [AB.7,AB.8,AB.9]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.7,AB.8,AB.9]] for i in [AB.1,AB.2,AB.3]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.7,AB.8,AB.9]] for i in [AB.4,AB.5,AB.6]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
fricas
matrix [[trace(i*j) for j in [AB.7,AB.8,AB.9]] for i in [AB.7,AB.8,AB.9]]
Type: MATRIX(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
Center
fricas
C:=basisOfCenter()$AlgebraPackage(R,A); # C
Type: PI
fricas
c:=C(1)
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
[c*i-i*c for i in AB]
Type: LIST(ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]))
fricas
test(c*c=c)
Type: BOOLEAN
Unit
fricas
rightTrace(c)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
n := #basis / rightTrace(c) * c
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(n)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
test(n*n=n)
Type: BOOLEAN
fricas
[n*i-i for i in AB]
Type: LIST(ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]))
fricas
[i*n-i for i in AB]
Type: LIST(ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]))
fricas
test(n=unit()$A)
Type: BOOLEAN
fricas
f:=gcd map(x+->denom x,coordinates(n))
Type: DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)
fricas
--ff:= matrix [[γ(i,j)::R for j in gens] for i in gens]
ff:= matrix [[eval(γ(i,j)::R,[γ(gens(1),gens(1))=1,γ(gens(2),gens(2))=1,γ(gens(3),gens(3))=1,γ(gens(2),gens(1))=γ(gens(1),gens(2)),γ(gens(3),gens(2))=γ(gens(2),gens(3)),γ(gens(3),gens(1))=γ(gens(1),gens(3))]) for j in gens] for i in gens]
Type: MATRIX(FRAC(POLY(INT)))
fricas
--ff:= matrix [[eval(γ(i,j)::R,[γ(gens(1),gens(1))=0,γ(gens(2),gens(2))=0,γ(gens(3),gens(3))=0,γ(gens(2),gens(1))=γ(gens(1),gens(2)),γ(gens(3),gens(2))=γ(gens(2),gens(3)),γ(gens(3),gens(1))=γ(gens(1),gens(3))]) for j in gens] for i in gens]
-determinant(ff)
Type: FRAC(POLY(INT))
fricas
test(f = %)
Type: BOOLEAN
fricas
(f*n)::OutputForm / f::OutputForm
Type: OUTFORM
Orthogonal Observers
fricas
p' := n - (1/trace(p))*p
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(p')
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
p*p'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
test(p'*p=p*p')
Type: BOOLEAN
fricas
p'*p' - p'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
f*p'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
Lie Bracket
fricas
pq:=p*q-q*p
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(pq)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
pqr:=pq*r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(pqr)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
pqr*pqr
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
q' := n - (1/trace(q))*q
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p'q' := p'*q' - q'*p'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(p'q')
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
p'q'r:=p'q'*r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(p'q'r)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
p'q'r * p'q'r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p'q'r * pqr
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
pq' := p*q' - q'*p
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(pq')
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
pq'r:=pq'*r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
pq'r * pq'r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p'q := p'*q - q*p'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(p'q)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
p'qr:=p'q*r
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p'qr*p'qr
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
Momentum
fricas
P:=reduce(+,concat [[(1/ ( i<j=>γ(basis(i),basis(j)); i>j=>γ(basis(j),basis(i));1) )::R*AB(i)*AB(j) for j in 1..size()$V] for i in 1..size()$V])
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
M2:=trace(P)
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
P*P-trace(P)*P
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
P' := n - (1/trace(P))*P;
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(P')
Type: FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
P'*P' - P'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
P*P'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
fP':=gcd map(x+->denom x,coordinates(P'))
Type: DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)
fricas
factor(fP')
Type: FR(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT))
fricas
test(fP'=f*M2)
Type: BOOLEAN
fricas
fP' * P'
Type: ALGSC(FRAC(DMP([x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)),9,[p,q,r,pq,pr,qp,qr,rp,rq],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])