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

Obs(4) is a 16 dimensional Frobenius Algrebra

fricas
)set output abbreviate on
V := OrderedVariableList [p,q,r,s]
 (1)
Type: TYPE
fricas
M := FreeMonoid V
 (2)
Type: TYPE
fricas
gens:List M := enumerate()V  (3) Type: LIST(FMONOID(OVAR([p,q,r,s]))) fricas divisible := Record(lm: M,rm: M)  (4) Type: TYPE fricas leftDiv(k:Union(divisible,"failed")):M == (k::divisible).lm Function declaration leftDiv : Union(Record(lm: FMONOID(OVAR([p,q,r, s])),rm: FMONOID(OVAR([p,q,r,s]))),"failed") -> FMONOID(OVAR([p,q ,r,s])) 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 ,s])),rm: FMONOID(OVAR([p,q,r,s]))),"failed") -> FMONOID(OVAR([p, q,r,s])) has been added to workspace. Type: VOID fricas K := FRAC POLY INT  (5) Type: TYPE fricas MK := FreeModule(K,M)  (6) Type: TYPE fricas coeff(x:MK):K == leadingCoefficient(x) Function declaration coeff : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r, s]))) -> 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,s]))) -> FMONOID(OVAR([p,q,r,s])) 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,s])) -> 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,s])),FMONOID(OVAR([p,q ,r,s]))) -> 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])  (7) Type: LIST(FMONOID(OVAR([p,q,r,s]))) 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, s]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s]))) 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, s]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s]))) 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,s] ))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s]))) 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] fricas Compiling function monomial with type FM(FRAC(POLY(INT)),FMONOID( OVAR([p,q,r,s]))) -> FMONOID(OVAR([p,q,r,s])) fricas Compiling function coeff with type FM(FRAC(POLY(INT)),FMONOID(OVAR([ p,q,r,s]))) -> FRAC(POLY(INT)) fricas Compiling function m with type FMONOID(OVAR([p,q,r,s])) -> FRAC(POLY (INT)) fricas Compiling function γ with type (FMONOID(OVAR([p,q,r,s])),FMONOID( OVAR([p,q,r,s]))) -> FRAC(POLY(INT)) fricas Compiling function leftDiv with type Union(Record(lm: FMONOID(OVAR([ p,q,r,s])),rm: FMONOID(OVAR([p,q,r,s]))),"failed") -> FMONOID( OVAR([p,q,r,s])) fricas Compiling function rightDiv with type Union(Record(lm: FMONOID(OVAR( [p,q,r,s])),rm: FMONOID(OVAR([p,q,r,s]))),"failed") -> FMONOID( OVAR([p,q,r,s])) fricas Compiling function rule1 with type FM(FRAC(POLY(INT)),FMONOID(OVAR([ p,q,r,s]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s]))) fricas Compiling function rule2 with type FM(FRAC(POLY(INT)),FMONOID(OVAR([ p,q,r,s]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s]))) fricas Compiling function mod with type FM(FRAC(POLY(INT)),FMONOID(OVAR([p, q,r,s]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s])))  (8) Type: LIST(LIST(FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q,r,s]))))) 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)  (9) 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,s])) -> LIST(LIST( FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps, *01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp, *01γsq,*01γsr,*01γss],INT)))) has been added to workspace. Type: VOID fricas ss:=map(mat3, basis) fricas Compiling function mat3 with type FMONOID(OVAR([p,q,r,s])) -> LIST( LIST(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γ ps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp ,*01γsq,*01γsr,*01γss],INT))))  (10) Type: LIST(LIST(LIST(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],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,s])) -> 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,s])) -> 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}\ } , \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}\ } ([ 01 mp , 01 mq , 01 mr , 01 ms , * 01 �� pp , * 01 �� pq , * 01 �� pr , * 01 �� ps , * 01 �� qp , * 01 �� qq , * 01 �� qr , * 01 �� qs , * 01 �� rp , * 01 �� rq , * 0 1 �� rr , * 01 �� rs , * 01 �� sp , * 01 �� sq , * 01 �� sr , * 01 �� ss ] , \hbox{\axiomType{INT}\ })) , 16, [ p , q , r , s , pq , pr , ps , qp , qr , qs , rp , rq , rs , sp , sq , sr ]? , [ \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}\ } , \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/9151146123860165062-16.0px.png" align="bottom" Style="vertical-align:text-bottom" width="794" height="18"/> (11) Type: TYPE fricas alternative?()A
algebra satisfies 2*associator(a,b,b) = 0 = 2*associator(a,a,b) = 0
 (12)
Type: BOOLEAN
fricas
antiAssociative?()$A algebra is not anti-associative  (13) Type: BOOLEAN fricas antiCommutative?()$A
algebra is not anti-commutative
 (14)
Type: BOOLEAN
fricas
associative?()$A algebra is associative  (15) Type: BOOLEAN fricas commutative?()$A
algebra is not commutative
 (16)
Type: BOOLEAN
fricas
flexible?()$A algebra is flexible  (17) Type: BOOLEAN fricas jacobiIdentity?()$A
Jacobi identity does not hold
 (18)
Type: BOOLEAN
fricas
jordanAdmissible?()$A algebra is not Jordan admissible  (19) Type: BOOLEAN fricas jordanAlgebra?()$A
algebra is not commutative
this is not a Jordan algebra
 (20)
Type: BOOLEAN
fricas
leftAlternative?()$A algebra is left alternative  (21) Type: BOOLEAN fricas lieAdmissible?()$A
algebra is Lie admissible
 (22)
Type: BOOLEAN
fricas
lieAlgebra?()$A algebra is not anti-commutative this is not a Lie algebra  (23) 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) (*01m s) (*01γ pp) (*01γ pq) (*01γ pr) (*01γ ps) (*01γ qp) (*01γ qq) (*01γ qr) (*01γ qs) (*01γ rp) (*01γ rq) (*01γ rr) (*01γ rs) (*01γ sp) (*01γ sq) (*01γ sr) (*01γ ss)) (Integer)))
16(p q r s pq pr ps qp qr qs rp rq rs sp sq sr)UNPRINTABLE

Check Multiplication

fricas
AB := entries basis()$A  (24) Type: LIST(ALGSC(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16,[p,q,r,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,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,*01ms, *01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp, *01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16,[p,q,r ,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX,MATRIX, MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX, MATRIX,MATRIX,MATRIX,MATRIX]) -> FM(FRAC(POLY(INT)),FMONOID(OVAR( [p,q,r,s]))) 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, *01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs, *01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16 ,[p,q,r,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX, MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX, MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]) -> FM(FRAC(POLY(INT)), FMONOID(OVAR([p,q,r,s])))  (25) Type: BOOLEAN Trace fricas [rightTrace(i)$A for i in AB]
 (26)
Type: LIST(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)))
fricas
[leftTrace(i)$A for i in AB]  (27) Type: LIST(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],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([*01mp,*01mq,*01mr ,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs, *01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16 ,[p,q,r,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX, MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX, MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]) -> FRAC(DMP([*01mp,*01mq, *01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γ qs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT))  (28) Type: LIST(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT))) Center fricas C:=basisOfCenter()$AlgebraPackage(R,A); # C
 (29)
Type: PI
fricas
c:=C(1)
 (30)
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16,[p,q,r,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
[c*i-i*c for i in AB]
 (31)
Type: LIST(ALGSC(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16,[p,q,r,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX]))
fricas
test(c*c=c)
 (32)
Type: BOOLEAN

Unit

fricas
rightTrace(c)
 (33)
Type: FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT))
fricas
n := #basis / rightTrace(c) * c
 (34)
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)),16,[p,q,r,s,pq,pr,ps,qp,qr,qs,rp,rq,rs,sp,sq,sr],[MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(n)
 (35)
Type: FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT))
fricas
test(n*n=n)
 (36)
Type: BOOLEAN

fricas
test(n=unit()\$A)
 (37)
Type: BOOLEAN
fricas
f:=gcd map(x+->denom x,coordinates(n))
 (38)
Type: DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)
fricas
ff:= matrix [[γ(i,j)::R for j in gens] for i in gens]
 (39)
Type: MATRIX(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)))
fricas
test(f = determinant(ff))
 (40)
Type: BOOLEAN
fricas
(f*n)::OutputForm / f::OutputForm
 (41)
Type: OUTFORM

Antisymmetric γ

fricas
eqAnti:List Equation EXPR INT := concat [[(i>j => γ(i,j)=γ(i,j);i=j =>γ(i,j)=0;γ(i,j)=-γ(j,i)) for j in gens] for i in gens]
 (42)
Type: LIST(EQ(EXPR(INT)))
fricas
anti(x:R):R == subst(x::EXPR INT, eqAnti)::FRAC POLY INT
Function declaration anti : FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp
,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,
*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)) -> FRAC(DMP([
*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq
,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,
*01γss],INT)) has been added to workspace.
Type: VOID
fricas
(anti(f)*map(anti ,coordinates(n))::A)::OutputForm / anti(f)::OutputForm
fricas
Compiling function anti with type FRAC(DMP([*01mp,*01mq,*01mr,*01ms,
*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,
*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)) -> FRAC(
DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,
*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,
*01γsr,*01γss],INT))
 (43)
Type: OUTFORM

Scalar Product

fricas
S := matrix [[trace(x*y) for y in AB] for x in AB]
 (44)
Type: MATRIX(FRAC(DMP([*01mp,*01mq,*01mr,*01ms,*01γpp,*01γpq,*01γpr,*01γps,*01γqp,*01γqq,*01γqr,*01γqs,*01γrp,*01γrq,*01γrr,*01γrs,*01γsp,*01γsq,*01γsr,*01γss],INT)))

 Subject:   Be Bold !! ( 14 subscribers )