Obs(2) is a 4 dimensional Frobenius Algebra
This page uses FriCAS? as underlying system.
fricas
)version
>> System error:
The variable *BUILD-VERSION* is unbound.
Generators of Obs(2)
fricas
)set output abbreviate on
V := OrderedVariableList [p,q]
Type: TYPE
fricas
M := FreeMonoid V
Type: TYPE
fricas
gens:List M := enumerate()$V
Type: LIST(FMONOID(OVAR([p,q])))
Representation
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]))
,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
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]))
) -> 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
]))) -> FMONOID(OVAR([p,q])) has been added to workspace.
Type: VOID
fricas
base(x:MK):M == leadingMonomial(x)
Function declaration base : 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])
Type: LIST(FMONOID(OVAR([p,q])))
Idempotent
fricas
rule1(ij:MK):MK ==
for k in gens repeat
kk := divide(base(ij),k*k)
if kk case divisible then
ij:=monom(leftDiv(kk)*k*rightDiv(kk), coeff(ij)*m(k)*γ(k,k))
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(base(ij),i*j*k)
if ijk case divisible then
ij := monom(leftDiv(ijk)*i*k*rightDiv(ijk), coeff(ij)*m(j)*γ(i,j)*γ(j,k)/γ(i,k))
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)), m(gens(1))=1, m(gens(2))=1]), monomial(mod(i*j)))$MK for j in basis] for i in basis]
fricas
Compiling function base with type FM(FRAC(POLY(INT)),FMONOID(OVAR([p
,q]))) -> FMONOID(OVAR([p,q]))
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 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 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])))
fricas
Compiling function monomial with type FM(FRAC(POLY(INT)),FMONOID(
OVAR([p,q]))) -> FMONOID(OVAR([p,q]))
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)
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(
DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)))) has been
added to workspace.
Type: VOID
fricas
ss:=map(mat3, basis)
fricas
Compiling function mat3 with type FMONOID(OVAR([p,q])) -> LIST(LIST(
FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))))
Type: LIST(LIST(LIST(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γ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
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
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) (*01γ pp) (*01γ pq) (*01γ qp) (*01γ qq)) (Integer)))
4(p q pq qp)UNPRINTABLE
Check Multiplication
fricas
AB := entries basis()$A
Type: LIST(ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[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,*01γpp,*01γ
pq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,
MATRIX]) -> 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([*01mp,*01mq,*01γpp
,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,
MATRIX]) -> FM(FRAC(POLY(INT)),FMONOID(OVAR([p,q])))
Type: BOOLEAN
Trace
fricas
[rightTrace(i)$A for i in AB]
Type: LIST(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)))
fricas
[leftTrace(i)$A for i in AB]
Type: LIST(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γ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([*01mp,*01mq,*01γ
pp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,
MATRIX,MATRIX]) -> FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,
*01γqq],INT))
Type: LIST(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)))
Center
fricas
C:=basisOfCenter()$AlgebraPackage(R,A); # C
Type: PI
fricas
c:=C(1)
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
[c*i-i*c for i in AB]
Type: LIST(ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX]))
fricas
test(c*c=c)
Type: BOOLEAN
Unit
fricas
rightTrace(c)
Type: FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))
fricas
n := #basis / rightTrace(c) * c
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(n)
Type: FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))
fricas
test(n*n=n)
Type: BOOLEAN
fricas
test(n=unit()$A)
Type: BOOLEAN
fricas
f:=gcd map(x+->denom x,coordinates(n))
Type: DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],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(2),gens(1))=γ(gens(1),gens(2))]) 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(2),gens(1))=γ(gens(1),gens(2))]) 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:=AB(1)
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p*p-p
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
q:=AB(2)
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
q*q-q
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p*q
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p' := n-p
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(p')
Type: FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))
fricas
p' * p' - p'
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
q' := n-q
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(q')
Type: FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))
fricas
q' * q' - q'
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
p' * q'
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
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]
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,*01γpp,*01γpq,*01γ
qp,*01γqq],INT)) -> FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,
*01γqq],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,*01γpp,*01γ
pq,*01γqp,*01γqq],INT)) -> FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,
*01γqp,*01γqq],INT))
Type: OUTFORM
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])
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(P)
Type: FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))
fricas
c:=1/trace(P)*P
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
c*c-c
Type: ALGSC(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)),4,[p,q,pq,qp],[MATRIX,MATRIX,MATRIX,MATRIX])
fricas
trace(c)
Type: FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT))
Scalar Product
fricas
S := matrix [[trace(x*y) for y in AB] for x in AB]
Type: MATRIX(FRAC(DMP([*01mp,*01mq,*01γpp,*01γpq,*01γqp,*01γqq],INT)))