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

Obs(2) is a 4 dimensional Frobenius Algebra

Generators of Obs(2)

fricas
)set output abbreviate on

fricas
)set message type off
V := OrderedVariableList [p,q]
 (1)
fricas
vars:List V := enumerate()$V  (2) --Representation fricas M := FreeMonoid V  (3) fricas divisible := Record(lm: M,rm: M)  (4) fricas gamma(i:Symbol,j:Symbol):Symbol == concat([string 'γ,string i,string j])::Symbol Function declaration gamma : (SYMBOL,SYMBOL) -> SYMBOL has been added to workspace. --subscript('γ,[concat(string i, string j)::Symbol]) mass(i:Symbol):Symbol == concat("m",string i)::Symbol Function declaration mass : SYMBOL -> SYMBOL has been added to workspace. --subscript('m,[i]) B := OrderedVariableList(concat [ ['x1,'x2,'x3,'x4], _ [mass i for i in vars], _ concat [[gamma(vars i ,vars j) for i in (j+1)..#vars] for j in 1..#vars] ]) fricas Compiling function mass with type SYMBOL -> SYMBOL fricas Compiling function gamma with type (SYMBOL,SYMBOL) -> SYMBOL  (5) fricas K := FRAC SMP(Integer,B)  (6) fricas MK := FreeModule(K,M)  (7) fricas m(x:V):K == mass(x::Symbol) Function declaration m : OVAR([p,q]) -> FRAC(SMP(INT,OVAR([x1,x2,x3, x4,mp,mq,γqp]))) has been added to workspace. m(vars 1) fricas Compiling function m with type OVAR([p,q]) -> FRAC(SMP(INT,OVAR([x1, x2,x3,x4,mp,mq,γqp])))  (8) fricas γ(x:V,y:V):K == if x<y then return variable(gamma(x::Symbol,y::Symbol))$B
if x>y then
return variable(gamma(y::Symbol,x::Symbol))$B return 1 Function declaration γ : (OVAR([p,q]),OVAR([p,q])) -> FRAC(SMP(INT, OVAR([x1,x2,x3,x4,mp,mq,γqp]))) has been added to workspace. Compiled code for gamma has been cleared. γ(vars 2,vars 1) fricas Compiling function gamma with type (SYMBOL,SYMBOL) -> SYMBOL fricas Compiling function γ with type (OVAR([p,q]),OVAR([p,q])) -> FRAC(SMP (INT,OVAR([x1,x2,x3,x4,mp,mq,γqp])))  (9) fricas --Basis basis:List M := concat(vars,concat [[i::M*j::M for j in vars | i~=j] for i in vars])  (10) Idempotent: ii --> mᵢ γᵢᵢ i fricas idem(p:MK):MK == -- p = c*q q := leadingSupport p c := leadingCoefficient p for i in vars::List M repeat f := divide(q, i*i) if f case divisible then -- q = f.lm * ii * f.rm return monomial(c * m i * γ(i,i), elt(f,lm) * i * elt(f,rm)) --return monomial(c * γ(i,i), elt(f,lm) * i * elt(f,rm)) return p Function declaration idem : FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp,mq, γqp]))),FMONOID(OVAR([p,q]))) -> FM(FRAC(SMP(INT,OVAR([x1,x2,x3, x4,mp,mq,γqp]))),FMONOID(OVAR([p,q]))) has been added to workspace. idem(basis(1)*basis(1)) fricas Compiling function idem with type FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4, mp,mq,γqp]))),FMONOID(OVAR([p,q]))) -> FM(FRAC(SMP(INT,OVAR([x1, x2,x3,x4,mp,mq,γqp]))),FMONOID(OVAR([p,q])))  (11) Reductions: ijk --> mᵢmⱼ γᵢⱼγⱼₖ/γᵢₖ ik fricas reduct(p:MK):MK == q := leadingSupport p c := leadingCoefficient p for i in vars repeat for j in vars::List M | j ~= i repeat for k in vars::List M | k ~= j repeat f:=divide(q, i*j*k) if f case divisible then return monomial(c * m j * γ(i,j) * γ(j,k) / γ(i,k), _ --return monomial(c * γ(i,j) * γ(j,k) / γ(i,k), _ elt(f,lm) * i * k * elt(f,rm)) return p Function declaration reduct : FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp, mq,γqp]))),FMONOID(OVAR([p,q]))) -> FM(FRAC(SMP(INT,OVAR([x1,x2, x3,x4,mp,mq,γqp]))),FMONOID(OVAR([p,q]))) has been added to workspace. reduct(basis(1)*basis(2)*basis(1)) fricas Compiling function reduct with type FM(FRAC(SMP(INT,OVAR([x1,x2,x3, x4,mp,mq,γqp]))),FMONOID(OVAR([p,q]))) -> FM(FRAC(SMP(INT,OVAR([ x1,x2,x3,x4,mp,mq,γqp]))),FMONOID(OVAR([p,q])))  (12) An endomorphism on the K-Module is defined by the fixed point of applied rules fricas Y(p:MK):MK == repeat r := p; p := idem reduct r if r=p then return p Function declaration Y : FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp,mq,γqp ]))),FMONOID(OVAR([p,q]))) -> FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4, mp,mq,γqp]))),FMONOID(OVAR([p,q]))) has been added to workspace. Y(basis(1)*basis(2)) fricas Compiling function Y with type FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp, mq,γqp]))),FMONOID(OVAR([p,q]))) -> FM(FRAC(SMP(INT,OVAR([x1,x2, x3,x4,mp,mq,γqp]))),FMONOID(OVAR([p,q])))  (13) Matrix Algebra is the free algebra product modulo the fixed point fricas MT := [[Y(i*j) for j in basis] for i in basis]; matrix MT  (14) Structure Constants fricas mat3(y:M):List List K == map(z+->map(x+->coefficient(x,y),z),MT) Function declaration mat3 : FMONOID(OVAR([p,q])) -> LIST(LIST(FRAC( SMP(INT,OVAR([x1,x2,x3,x4,mp,mq,γqp]))))) has been added to workspace. ss:=map(mat3, basis); map(matrix,ss) fricas Compiling function mat3 with type FMONOID(OVAR([p,q])) -> LIST(LIST( FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp,mq,γqp])))))  (15) Algebra fricas cats(m:M):Symbol==concat(map(x+->string(x.gen::Symbol),factors m))::Symbol Function declaration cats : FMONOID(OVAR([p,q])) -> SYMBOL has been added to workspace. A:=AlgebraGivenByStructuralConstants(K,#(basis)::PI,map(cats,basis),ss::Vector(Matrix K)) fricas Compiling function cats with type FMONOID(OVAR([p,q])) -> SYMBOL  (16) fricas alternative?()$A
algebra satisfies 2*associator(a,b,b) = 0 = 2*associator(a,a,b) = 0
 (17)
fricas
antiAssociative?()$A algebra is not anti-associative  (18) fricas antiCommutative?()$A
algebra is not anti-commutative
 (19)
fricas
associative?()$A algebra is associative  (20) fricas commutative?()$A
algebra is not commutative
 (21)
fricas
flexible?()$A algebra is flexible  (22) fricas jacobiIdentity?()$A
Jacobi identity does not hold
 (23)
fricas
jordanAdmissible?()$A algebra is not Jordan admissible  (24) fricas jordanAlgebra?()$A
algebra is not commutative
this is not a Jordan algebra
 (25)
fricas
leftAlternative?()$A algebra is left alternative  (26) fricas lieAdmissible?()$A
algebra is Lie admissible
 (27)
fricas
lieAlgebra?()$A algebra is not anti-commutative this is not a Lie algebra  (28) fricas --powerAssociative?()$A
rightAlternative?()$A algebra is right alternative  (29) Check Multiplication fricas AB := entries basis()$A
 (30)
fricas
A2MK(z:A):MK==reduce(+,map((x:K,y:M):MK+->(x::K)*y,coordinates(z),basis))
Function declaration A2MK : ALGSC(FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp,
mq,γqp]))),4,[p,q,pq,qp],[[[mp,0,0,γqp^2*mq*mp],[0,0,0,0],[γqp^2*
mq*mp,0,0,γqp^2*mq^2*mp],[0,0,0,0]],[[0,0,0,0],[0,mq,γqp^2*mq*mp,
0],[0,0,0,0],[0,γqp^2*mq*mp,γqp^2*mq*mp^2,0]],[[0,1,mp,0],[0,0,0,
0],[0,mq,γqp^2*mq*mp,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,mq],[0,0,0,0
],[mp,0,0,γqp^2*mq*mp]]]) -> FM(FRAC(SMP(INT,OVAR([x1,x2,x3,x4,mp
,mq,γqp]))),FMONOID(OVAR([p,q]))) has been added to workspace.
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(SMP(INT,OVAR([x1,x2,x3,
x4,mp,mq,γqp]))),4,[p,q,pq,qp],[[[mp,0,0,γqp^2*mq*mp],[0,0,0,0],[
γqp^2*mq*mp,0,0,γqp^2*mq^2*mp],[0,0,0,0]],[[0,0,0,0],[0,mq,γqp^2*
mq*mp,0],[0,0,0,0],[0,γqp^2*mq*mp,γqp^2*mq*mp^2,0]],[[0,1,mp,0],[
0,0,0,0],[0,mq,γqp^2*mq*mp,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,mq],[0
,0,0,0],[mp,0,0,γqp^2*mq*mp]]]) -> FM(FRAC(SMP(INT,OVAR([x1,x2,x3
,x4,mp,mq,γqp]))),FMONOID(OVAR([p,q])))
 (31)

Trace

fricas
[rightTrace(i)$A for i in AB]  (32) fricas [leftTrace(i)$A for i in AB]
 (33)
fricas
trace(i)==rightTrace(i) / #vars
[trace(i) for i in AB]
fricas
Compiling function trace with type ALGSC(FRAC(SMP(INT,OVAR([x1,x2,x3
,x4,mp,mq,γqp]))),4,[p,q,pq,qp],[[[mp,0,0,γqp^2*mq*mp],[0,0,0,0],
[γqp^2*mq*mp,0,0,γqp^2*mq^2*mp],[0,0,0,0]],[[0,0,0,0],[0,mq,γqp^2
*mq*mp,0],[0,0,0,0],[0,γqp^2*mq*mp,γqp^2*mq*mp^2,0]],[[0,1,mp,0],
[0,0,0,0],[0,mq,γqp^2*mq*mp,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,mq],[
0,0,0,0],[mp,0,0,γqp^2*mq*mp]]]) -> FRAC(SMP(INT,OVAR([x1,x2,x3,
x4,mp,mq,γqp])))
 (34)

fricas
p:=AB(1); q:=AB(2);
test(p*p=trace(p)*p)
 (35)
fricas
test(q*q=trace(q)*q)
 (36)

Center

fricas
C:=basisOfCenter()$AlgebraPackage(K,A); # C  (37) fricas c:=C(1)  (38) fricas [c*i-i*c for i in AB]  (39) fricas c*c  (40) fricas test(c*c=c)  (41) Unit fricas n := #vars/trace(c) * c  (42) fricas test(n = unit()$A)
 (43)
fricas
trace(n)
 (44)
fricas
test(n*n=n)
 (45)
fricas
f:=gcd map(x+->denom x,coordinates(n))
 (46)
fricas
--Silberstein symmetric matrix
ff:= matrix [[(i=j => 1$K; γ(i,j)) for j in vars] for i in vars]  (47) fricas test(f = - determinant(ff))  (48) fricas (f*n)::OutputForm / f::OutputForm  (49) Orthogonal Observers fricas dual(p) == trace(p)*n - p --dual(p) == n - (1/trace(p))*p p' := dual p fricas Compiling function dual with type ALGSC(FRAC(SMP(INT,OVAR([x1,x2,x3, x4,mp,mq,γqp]))),4,[p,q,pq,qp],[[[mp,0,0,γqp^2*mq*mp],[0,0,0,0],[ γqp^2*mq*mp,0,0,γqp^2*mq^2*mp],[0,0,0,0]],[[0,0,0,0],[0,mq,γqp^2* mq*mp,0],[0,0,0,0],[0,γqp^2*mq*mp,γqp^2*mq*mp^2,0]],[[0,1,mp,0],[ 0,0,0,0],[0,mq,γqp^2*mq*mp,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,mq],[0 ,0,0,0],[mp,0,0,γqp^2*mq*mp]]]) -> ALGSC(FRAC(SMP(INT,OVAR([x1,x2 ,x3,x4,mp,mq,γqp]))),4,[p,q,pq,qp],[[[mp,0,0,γqp^2*mq*mp],[0,0,0, 0],[γqp^2*mq*mp,0,0,γqp^2*mq^2*mp],[0,0,0,0]],[[0,0,0,0],[0,mq, γqp^2*mq*mp,0],[0,0,0,0],[0,γqp^2*mq*mp,γqp^2*mq*mp^2,0]],[[0,1, mp,0],[0,0,0,0],[0,mq,γqp^2*mq*mp,0],[0,0,0,0]],[[0,0,0,0],[1,0,0 ,mq],[0,0,0,0],[mp,0,0,γqp^2*mq*mp]]])  (50) fricas trace p'  (51) fricas p'' := dual p'  (52) fricas trace p''  (53) fricas test(p' * p' = trace(p')*p')  (54) fricas p * p'  (55) fricas p' * p  (56) fricas q' := dual q  (57) fricas trace(q')  (58) fricas test(q' * q' = trace(q')*q')  (59) fricas q * q'  (60) fricas q' * q  (61) fricas p' * q'  (62) fricas q' * p'  (63) fricas p' * q  (64) fricas q * p'  (65) fricas p * q'  (66) fricas q' * p  (67) Orthogonal Observers are Derivations if there are only two observers fricas test(p'*(p*q) = (p'*p)*q + p*(p'*q))  (68) fricas test(q'*(p*q) = (q'*p)*q + p*(q'*q))  (69) fricas test((p*q)*p' = (p*p')*q + p*(q*p'))  (70) fricas test((p*q)*q' = (p*q')*q + p*(q*q'))  (71) Momentum fricas P:=reduce(+,concat [[1/γ(basis i,basis j)*AB(i)*AB(j) for j in 1..size()$V] for i in 1..size()$V])  (72) fricas trace(P)  (73) fricas u:=1/trace(P)*P  (74) fricas u*u-u  (75) fricas trace(u)  (76) All idempotents fricas x:=x1*p+x2*q+x3*p*q+x4*q*p Compiled code for A2MK has been cleared. Compiled code for cats has been cleared. Compiled code for mat3 has been cleared.  (77) fricas ideq:=conditionsForIdempotents()$GCNAALG(K,#(basis)::PI,map(cats,basis),ss::Vector(Matrix K))
fricas
Compiling function cats with type FMONOID(OVAR([p,q])) -> SYMBOL
 (78)
fricas
gbs:=groebnerFactorize ideq;
#gbs
 (79)

fricas
gbs.9
 (80)
fricas
s9:=solve(gbs.9);
i9:=represents(reverse map(rhs,s9.1))$A  (81) fricas test(i9=n)  (82) fricas gbs.8  (83) fricas s8:=solve(gbs.8); i8:=represents(reverse map(rhs,s8.1))$A
 (84)
fricas
test(i8=n-1/trace(p*q)*p*q)
 (85)

fricas
gbs.7
 (86)
fricas
s7:=solve(gbs.7);
i7:=represents(reverse map(rhs,s7.1))$A  (87) fricas test(i7=n-1/trace(q*p)*q*p)  (88) fricas gbs.6  (89) fricas s6:=solve(gbs.6); i6:=represents(reverse map(rhs,s6.1))$A
 (90)
fricas
test(i6=1/trace(q*p)*q*p)
 (91)

fricas
gbs.5
 (92)
fricas
s5:=solve(gbs.5)
 (93)

fricas
gbs.4
 (94)
fricas
s4:=solve(gbs.4);
i4:=represents(reverse map(rhs,s4.1))$A  (95) fricas gbs.3  (96) fricas s3:=solve(gbs.3); i3:=represents(reverse map(rhs,s3.1))$A
 (97)
fricas
test(i3=1/trace(p*q)*p*q)
 (98)

fricas
gbs.2
 (99)
fricas
-- apparently we need to look for solutions in a larger ring
ex2:=map(x+->interpret(x::InputForm)$InputFormFunctions1(FRAC POLY INT),concat(gbs.2,[%x3-%x4])); s2:=solve(ex2,[%x1,%x2,%x3,%x4]); #s2  (100) fricas -- need this to convert solution back to K (mp,mq,γqp):K i2:=represents(map(x+->interpret(rhs(x)::InputForm)$InputFormFunctions1(K),s2.1))$A  (101) fricas i2':=represents(map(x+->interpret(rhs(x)::InputForm)$InputFormFunctions1(K),s2.2))$A  (102) fricas test(n=i2+i2')  (103) fricas i2*i2'  (104) fricas i2'*i2  (105) fricas -- decomposition i2*x  (106) fricas i2'*x  (107) fricas test(i2*p+i2'*p=p)  (108) fricas test(i2*q+i2'*q=q)  (109) fricas test(i2*(p*q)+i2'*(p*q)=p*q)  (110) fricas test(i2*(q*p)+i2'*(q*p)=q*p)  (111) fricas expr2:=map(x+->interpret(x::InputForm)$InputFormFunctions1(EXPR INT)=0,concat(gbs.2,[]));
s2b:=solve(expr2,[%x1,%x2,%x3]);
#s2b
 (112)
fricas
s2b.1
 (113)
fricas
s2b.2
 (114)

fricas
gbs.1
 (115)
fricas
s1:=solve(concat(gbs.1,[%x1-m('p)/trace(P),%x2-m('q)/trace(P)]));
i1:=represents(reverse map(rhs,s1.1))$A  (116) fricas test(i1=u)  (117) fricas eval(gbs.1,[x=e for x in [%x1,%x2,%x3,%x4] for e in entries coordinates(u)])  (118) fricas eval(gbs.1,[x=e for x in [%x1,%x2,%x3,%x4] for e in entries coordinates(n-u)])  (119) fricas )set output tex off  fricas )set output algebra on fricas expr1a:=map(x+->interpret(x::InputForm)$InputFormFunctions1(EXPR INT)=0,concat(gbs.1,[]));
solve(expr1a,[%x1,%x2])
(147)
[
[
%x1
=
ROOT
2                 2   2  2   4
(%x4  + 2%x3 %x4 + %x3 )mp mq γqp
+
2  2                           2
(- 4%x3 %x4 mp mq  + (- 2%x4 - 2%x3)mp mq)γqp  + 1
+
2
(- %x4 - %x3)mp mq γqp  + 1
/
2mp
,
%x2
=
-
ROOT
2                 2   2  2   4
(%x4  + 2%x3 %x4 + %x3 )mp mq γqp
+
2  2                           2
(- 4%x3 %x4 mp mq  + (- 2%x4 - 2%x3)mp mq)γqp  + 1
+
2
(- %x4 - %x3)mp mq γqp  + 1
/
2mq
]
,
[
%x1
=
-
ROOT
2                 2   2  2   4
(%x4  + 2%x3 %x4 + %x3 )mp mq γqp
+
2  2                           2
(- 4%x3 %x4 mp mq  + (- 2%x4 - 2%x3)mp mq)γqp  + 1
+
2
(- %x4 - %x3)mp mq γqp  + 1
/
2mp
,
%x2
=
ROOT
2                 2   2  2   4
(%x4  + 2%x3 %x4 + %x3 )mp mq γqp
+
2  2                           2
(- 4%x3 %x4 mp mq  + (- 2%x4 - 2%x3)mp mq)γqp  + 1
+
2
(- %x4 - %x3)mp mq γqp  + 1
/
2mq
]
]
expr1b:=map(x+->interpret(x::InputForm)\$InputFormFunctions1(EXPR INT)=0,concat(gbs.1,[%x3-%x4]));
solve(expr1b,[%x1,%x2,%x3])
(149)
[
[
%x1
=
+------------------------------------------------------+
|    2  2  2   4          2  2  2                 2
- \|4%x4 mp mq γqp  + (- 4%x4 mp mq  - 4%x4 mp mq)γqp  + 1
+
2
- 2%x4 mp mq γqp  + 1
/
2mp
,
%x2
=
+------------------------------------------------------+
|    2  2  2   4          2  2  2                 2
\|4%x4 mp mq γqp  + (- 4%x4 mp mq  - 4%x4 mp mq)γqp  + 1
+
2
- 2%x4 mp mq γqp  + 1
/
2mq
,
%x3 = %x4]
,
[
%x1
=
+------------------------------------------------------+
|    2  2  2   4          2  2  2                 2
\|4%x4 mp mq γqp  + (- 4%x4 mp mq  - 4%x4 mp mq)γqp  + 1
+
2
- 2%x4 mp mq γqp  + 1
/
2mp
,
%x2
=
+------------------------------------------------------+
|    2  2  2   4          2  2  2                 2
- \|4%x4 mp mq γqp  + (- 4%x4 mp mq  - 4%x4 mp mq)γqp  + 1
+
2
- 2%x4 mp mq γqp  + 1
/
2mq
,
%x3 = %x4]
]

 Subject:   Be Bold !! ( 15 subscribers )