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
V := OrderedVariableList [p,q]
 (1)
Type: TYPE
fricas
M := FreeMonoid V
 (2)
Type: TYPE
fricas
gens:List M := enumerate()$V  (3) Type: LIST(FMONOID(OVAR([p,q]))) Representation 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])) ,rm: FMONOID(OVAR([p,q]))),"failed") -> FMONOID(OVAR([p,q])) 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]) ),rm: FMONOID(OVAR([p,q]))),"failed") -> FMONOID(OVAR([p,q])) 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])) ) -> FRAC(POLY(INT)) has been added to workspace. Type: VOID fricas monomial(x:MK):M == leadingSupport(x) Function declaration monomial : FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q ]))) -> FMONOID(OVAR([p,q])) has been added to workspace. Type: VOID fricas m(x:M):Symbol == subscript('m,[retract(x)::Symbol]) Function declaration m : FMONOID(OVAR([p,q])) -> SYMBOL has been added to workspace. Type: VOID fricas γ(x:M,y:M):Symbol == subscript('γ,[concat(string retract x, string retract y)::Symbol]) Function declaration γ : (FMONOID(OVAR([p,q])), FMONOID(OVAR([p,q])) ) -> SYMBOL has been added to workspace. Type: VOID Basis fricas basis := concat(gens,concat [[i*j for j in gens | i~=j] for i in gens])  (7) Type: LIST(FMONOID(OVAR([p,q]))) 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])) ) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q]))) 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(monomial(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])) ) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q]))) has been added to workspace. Type: VOID An endomorphism on the K-Module is defined by the 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]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q]))) has been added to workspace. Type: VOID Matrix Algebra is the free algebra product 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(2), gens(1))=γ(gens(1), gens(2))]), 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]))) -> FMONOID(OVAR([p,q]))
fricas
Compiling function coeff with type FM(FRAC(POLY(INT)),FMONOID(OVAR([
p,q]))) -> FRAC(POLY(INT))
fricas
Compiling function m with type FMONOID(OVAR([p,q])) -> SYMBOL
fricas
Compiling function γ with type (FMONOID(OVAR([p,q])), FMONOID(OVAR([
p,q]))) -> SYMBOL
fricas
Compiling function leftDiv with type Union(Record(lm: FMONOID(OVAR([
p,q])),rm: FMONOID(OVAR([p,q]))),"failed") -> FMONOID(OVAR([p,q])
)
fricas
Compiling function rightDiv with type Union(Record(lm: FMONOID(OVAR(
[p,q])),rm: FMONOID(OVAR([p,q]))),"failed") -> FMONOID(OVAR([p,q]
))
fricas
Compiling function rule1 with type FM(FRAC(POLY(INT)),FMONOID(OVAR([
p,q]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q])))
fricas
Compiling function rule2 with type FM(FRAC(POLY(INT)),FMONOID(OVAR([
p,q]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q])))
fricas
Compiling function mod with type FM(FRAC(POLY(INT)),FMONOID(OVAR([p,
q]))) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q])))
 (8)
Type: LIST(LIST(FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q])))))

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])) -> LIST(LIST(FRAC(
workspace.
Type: VOID
fricas
ss:=map(mat3, basis)
fricas
Compiling function mat3 with type FMONOID(OVAR([p,q])) -> LIST(LIST(
FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT))))
 (10)
Type: LIST(LIST(LIST(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)))))

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.
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])) -> SYMBOL
 (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 rightAlternative?()$A
algebra is right alternative
 (24)
Type: BOOLEAN

Check Multiplication

fricas
AB := entries basis()$A  (25) Type: LIST(ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])) fricas A2MK(z:A):MK==reduce(+,map((x:R,y:M):MK+->(x::K)*y,coordinates(z),basis)) Function declaration A2MK : ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[ qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0, 0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0 ,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq] ^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m [q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p] ,0,0,m[p]*m[q]*γ[pq]^2]]]) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p, q]))) 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([m[p],m[q],γ[pp],γ[ pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^ 2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0 ]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q] *γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q], m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0] ,[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) -> FM(FRAC(POLY(INT)),FMONOID( OVAR([p,q])))  (26) Type: BOOLEAN Trace fricas [rightTrace(i)$A for i in AB]
 (27)
Type: LIST(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)))
fricas
[leftTrace(i)$A for i in AB]  (28) Type: LIST(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],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([m[p],m[q],γ[pp],γ [pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq] ^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0, 0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q ]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q] ,m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0 ],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) -> FRAC(DMP([m[p],m[q],γ[pp],γ[ pq],γ[qp],γ[qq]],INT))  (29) Type: LIST(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT))) fricas p:=AB(1); q:=AB(2); Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas test(p*p=trace(p)*p)  (30) Type: BOOLEAN fricas test(q*q=trace(q)*q)  (31) Type: BOOLEAN Center fricas C:=basisOfCenter()$AlgebraPackage(R,A); # C
 (32)
Type: PI
fricas
c:=C(1)
 (33)
Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])
fricas
[c*i-i*c for i in AB]
 (34)
Type: LIST(ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]))
fricas
c*c
 (35)
Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])
fricas
test(c*c=c)
 (36)
Type: BOOLEAN

Unit

fricas
n := #gens/trace(c) * c
 (37)
Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])
fricas
trace(n)
 (38)
Type: FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT))
fricas
test(n*n=n)
 (39)
Type: BOOLEAN
fricas
test(n=unit()$A)  (40) Type: BOOLEAN fricas f:=gcd map(x+->denom x,coordinates(n))  (41) Type: DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT) fricas --Silberstein symmetric matrix ff:= matrix [[eval(γ(i,j)::R,[γ(gens(1),gens(1))=1,γ(gens(2),gens(2))=1,γ(gens(2),gens(1))=γ(gens(1),gens(2))]) for j in gens] for i in gens]  (42) Type: MATRIX(FRAC(POLY(INT))) fricas test(f = - determinant(ff))  (43) Type: BOOLEAN fricas (f*n)::OutputForm / f::OutputForm  (44) Type: OUTFORM Orthogonal Observers fricas dual(p) == trace(p)*n - p Type: VOID fricas --dual(p) == n - (1/trace(p))*p p' := dual p fricas Compiling function dual with type ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[ pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^ 2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0 ]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q] *γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q], m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0] ,[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) -> ALGSC(FRAC(DMP([m[p],m[q],γ[ pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]* γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0 ,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p ]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0 ,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0, 0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])  (45) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas trace p'  (46) Type: FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)) fricas p'' := dual p'  (47) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas trace p''  (48) Type: FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)) fricas test(p' * p' = trace(p')*p')  (49) Type: BOOLEAN fricas p * p'  (50) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas p' * p  (51) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas q' := dual q  (52) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas trace(q')  (53) Type: FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)) fricas test(q' * q' = trace(q')*q')  (54) Type: BOOLEAN fricas q * q'  (55) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas q' * q  (56) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas p' * q'  (57) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas q' * p'  (58) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas p' * q  (59) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas q * p'  (60) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas p * q'  (61) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) fricas q' * p  (62) Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]]) Orthogonal Observers are Derivations if there are only two observers fricas test(p'*(p*q) = (p'*p)*q + p*(p'*q))  (63) Type: BOOLEAN fricas test(q'*(p*q) = (q'*p)*q + p*(q'*q))  (64) Type: BOOLEAN fricas test((p*q)*p' = (p*p')*q + p*(q*p'))  (65) Type: BOOLEAN fricas test((p*q)*q' = (p*q')*q + p*(q*q'))  (66) Type: BOOLEAN Momentum fricas P:=reduce(+,concat [[(1/γ(basis(i),basis(j)))::R*AB(i)*AB(j) for j in 1..size()$V] for i in 1..size()\$V])
 (67)
Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])
fricas
trace(P)
 (68)
Type: FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT))
fricas
c:=1/trace(P)*P
 (69)
Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])
fricas
c*c-c
 (70)
Type: ALGSC(FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT)),4,[p,q,pq,qp],[[[m[p],0,0,m[p]*m[q]*γ[pq]^2],[0,0,0,0],[m[p]*m[q]*γ[pq]^2,0,0,m[p]*m[q]^2*γ[pq]^2],[0,0,0,0]],[[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0],[0,m[p]*m[q]*γ[pq]^2,m[p]^2*m[q]*γ[pq]^2,0]],[[0,1,m[p],0],[0,0,0,0],[0,m[q],m[p]*m[q]*γ[pq]^2,0],[0,0,0,0]],[[0,0,0,0],[1,0,0,m[q]],[0,0,0,0],[m[p],0,0,m[p]*m[q]*γ[pq]^2]]])
fricas
trace(c)
 (71)
Type: FRAC(DMP([m[p],m[q],γ[pp],γ[pq],γ[qp],γ[qq]],INT))

 Subject:   Be Bold !! ( 15 subscribers )