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

## Isometry from Grassmann Multivectors

Representation

K is a unital associative and commutative ring represented by polynomials with rational coefficients of a set of symbols.

fricas
K:=SparseMultivariatePolynomial(Fraction Integer,Symbol)
 (1)
Type: Type

The Grassmann Hopf K-algebra is represented by the Axiom domain Expression consisting of rational functions with coefficients from K over an additional set of symbols and common mathematical operators.

fricas
E:=Expression K
 (2)
Type: Type
fricas
a:=a::Symbol::K; b:=b::Symbol::K; c:=c::Symbol::K;
Type: SparseMultivariatePolynomial?(Fraction(Integer),Symbol)
fricas
P:=P::Symbol::E; Q:=Q::Symbol::E; R:=R::Symbol::E;
Type: Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol))

## Grassmann Algebra Operators

Symmetric inner product

fricas
idot:=display(operator('dot,2), (x:List OutputForm):OutputForm +-> if x.1=x.2 then (x.1)^2 else paren hconcat([x.1,_{_\cdot_} ,x.2]));
Type: BasicOperator?
fricas
Dot(A:E,B:E):E == idot(A,B)
Function declaration Dot : (Expression(SparseMultivariatePolynomial(
Fraction(Integer),Symbol)),Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol))) ->
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
) has been added to workspace.
Type: Void
fricas
dot(A:E,B:E):E ==
smaller?(A,B)=>idot(A,B)
idot(B,A)
Function declaration dot : (Expression(SparseMultivariatePolynomial(
Fraction(Integer),Symbol)),Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol))) ->
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
) has been added to workspace.
Type: Void
fricas
test(dot(P, Q)=dot(Q,P))
fricas
Compiling function dot with type (Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol)),
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
)) -> Expression(SparseMultivariatePolynomial(Fraction(Integer),
Symbol))
 (3)
Type: Boolean

Exterior product

fricas
ihat:=display(operator('hat,2), (x:List OutputForm):OutputForm +-> paren hconcat([x.1,_{_\wedge_} ,x.2]));
Type: BasicOperator?
fricas
Hat(A:E,B:E):E == ihat(A,B)
Function declaration Hat : (Expression(SparseMultivariatePolynomial(
Fraction(Integer),Symbol)),Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol))) ->
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
) has been added to workspace.
Type: Void
fricas
hat(A:E,B:E):E ==
A=B=>0
smaller?(A,B)=>ihat(A,B)
-ihat(B,A)
Function declaration hat : (Expression(SparseMultivariatePolynomial(
Fraction(Integer),Symbol)),Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol))) ->
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
) has been added to workspace.
Type: Void
fricas
test(hat(P, Q)=-hat(Q,P)) and test(hat(P,P)=0)
fricas
Compiling function hat with type (Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol)),
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
)) -> Expression(SparseMultivariatePolynomial(Fraction(Integer),
Symbol))
 (4)
Type: Boolean
fricas
combine:=rule
Dot(-A,B) == -dot(A,B)
Dot(A,-B) == -dot(A,B)
Dot(A,B)^2-Dot(A,A)*Dot(B,B) == hat(A,B)^2
-Dot(A,B)^2+Dot(A,A)*Dot(B,B) == -hat(A,B)^2
Dot(A,B)*Dot(A,C)-Dot(A,A)*Dot(B,C) == dot(hat(A,B),hat(A,C))
Dot(A,B)*Dot(B,C)-Dot(B,B)*Dot(A,C) == dot(hat(B,A),hat(B,C))
Dot(B,C)*Dot(A,C)-Dot(C,C)*Dot(A,B) == dot(hat(C,A),hat(C,B))
fricas
Compiling function Dot with type (Expression(
SparseMultivariatePolynomial(Fraction(Integer),Symbol)),
Expression(SparseMultivariatePolynomial(Fraction(Integer),Symbol)
)) -> Expression(SparseMultivariatePolynomial(Fraction(Integer),
Symbol))
 (5)
Type: Ruleset(Integer,SparseMultivariatePolynomial?(Fraction(Integer),Symbol),Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol)))

1. Isometry from Bivector

In 1937 Elie Cartan observed that the Lie algebra of the isometry group , is given by bivectors .

fricas
eq33 := matrix [[-dot(P,P),   dot(Q,P)+c], _
[-dot(P,Q)+c, dot(Q,Q)  ]]
 (6)
Type: Matrix(Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol)))
fricas
eq35 := inverse(eq33)
 (7)
Type: Union(Matrix(Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol))),...)
fricas
map(x+->combine(x),eq35)
 (8)
Type: Matrix(Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol)))

1. Isometry from Trivector

Consider the following endomorphism,

 (9)
 (10)

fricas
eq44 := matrix [[dot(P,P),   dot(Q,P)-a, dot(R,P)-b], _
[dot(P,Q)+a, dot(Q,Q),   dot(R,Q)-c], _
[dot(P,R)+b, dot(Q,R)+c, dot(R,R)  ]]
 (11)
Type: Matrix(Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol)))
fricas
eq47a := adjoint(eq44);
>> System error:
Control stack exhausted (no more space for function call frames).
This is probably due to heavily nested or infinitely recursive function
calls, or a tail call that SBCL cannot or has not optimized away.
PROCEED WITH CAUTION.

fricas
--)set output tex off
--)set output algebra on
There are no library operations named eq47a
Use HyperDoc Browse or issue
)what op eq47a
to learn if there is any operation containing " eq47a " in its
name.
Cannot find a definition or applicable library operation named eq47a
with argument type(s)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need. Simplifications fricas eq45 := a*R-b*Q+c*P = v  (12) Type: Equation(Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol))) fricas eq45a := rule a*Dot(R,R)-b*Dot(Q,R)+c*Dot(P,R) == dot(R,v) a*Dot(Q,R)-b*Dot(Q,Q)+c*Dot(P,Q) == dot(Q,v) a*Dot(P,R)-b*Dot(P,Q)+c*Dot(P,P) == dot(P,v) -a*Dot(R,R)+b*Dot(Q,R)-c*Dot(P,R) == -dot(R,v) -a*Dot(Q,R)+b*Dot(Q,Q)-c*Dot(P,Q) == -dot(Q,v) -a*Dot(P,R)+b*Dot(P,Q)-c*Dot(P,P) == -dot(P,v)  (13) Type: Ruleset(Integer,SparseMultivariatePolynomial?(Fraction(Integer),Symbol),Expression(SparseMultivariatePolynomial?(Fraction(Integer),Symbol))) fricas for i in 3..3 repeat for j in 2..2 repeat x:=(eq47a.adjMat)(i,j); outputAsTex ["x",i,j,x] y:=combine(x); outputAsTex ["y",i,j,y] z:=eq45a(y) outputAsTex ["z",i,j,z] There are no library operations named eq47a Use HyperDoc Browse or issue )what op eq47a to learn if there is any operation containing " eq47a " in its name. Cannot find a definition or applicable library operation named eq47a with argument type(s) Variable(adjMat) Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need.
FriCAS will attempt to step through and interpret the code.
There are no library operations named eq47a
Use HyperDoc Browse or issue
)what op eq47a
to learn if there is any operation containing " eq47a " in its
name.
Cannot find a definition or applicable library operation named eq47a
with argument type(s)
or "\$" to specify which version of the function you need.