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 [[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([*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([*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([*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
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 ((*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([*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([*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([*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([*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([*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([*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([*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([*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([*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(p)
fricas
Compiling function trace with type ALGSC(FRAC(DMP([*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([*01mp,*01mq,
*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,
*01γrr],INT))
Type: FRAC(DMP([*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) for i in AB]
Type: LIST(FRAC(DMP([*01mp,*01mq,*01mr,*01γpp,*01γpq,*01γpr,*01γqp,*01γqq,*01γqr,*01γrp,*01γrq,*01γrr],INT)))
Lie derivations
fricas
D(p:A):(A->A) == (q:A):A +-> (p*q - q*p)
Function declaration D : ALGSC(FRAC(DMP([*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([*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([
*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])) has
been added to workspace.
Type: VOID
fricas
test( (D p)(q*r) = (D p)(q)*r + q*(D p)(r) )
fricas
Compiling function D with type ALGSC(FRAC(DMP([*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([*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([*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
(D p) p
Type: ALGSC(FRAC(DMP([*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
(D p) q
Type: ALGSC(FRAC(DMP([*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
(D p) ((D p) q)
Type: ALGSC(FRAC(DMP([*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*((D p) q)
Type: ALGSC(FRAC(DMP([*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
--
(D p) ((D q) r)
Type: ALGSC(FRAC(DMP([*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
(D q) ((D p) r)
Type: ALGSC(FRAC(DMP([*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
(D p) ((D q) ((D p) r))
Type: ALGSC(FRAC(DMP([*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
(D q) ((D p) ((D q) r))
Type: ALGSC(FRAC(DMP([*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( (D p) ((D p) ((D p) r)) = trace(p)^2*(D p) r )
Type: BOOLEAN
fricas
test( (D p) ((D p) ((D p) ((D q) r))) = trace(p)^2*(D p) ((D q) r) )
Type: BOOLEAN
fricas
(D p) ((D p) ((D q) r))
Type: ALGSC(FRAC(DMP([*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
(D p) ((D q) ((D q) r))
Type: ALGSC(FRAC(DMP([*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])
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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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([*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])