# How to generate Cayley table?

Given positive, negative and zero number, how to generate a Cayley table?

This is how you would do it with Grassmann.jl v0.8

``````julia> using Grassmann

julia> cayley(S"+++")
8×8 Matrix{TensorTerm{⟨+++⟩}}:
v     v₁      v₂    v₃    v₁₂     v₁₃    v₂₃   v₁₂₃
v₁     1v     v₁₂   v₁₃    1v₂     1v₃   v₁₂₃   1v₂₃
v₂  -1v₁₂      1v   v₂₃   -1v₁  -1v₁₂₃    1v₃  -1v₁₃
v₃  -1v₁₃   -1v₂₃    1v   v₁₂₃    -1v₁   -1v₂   1v₁₂
v₁₂   -1v₂     1v₁  v₁₂₃    -1v   -1v₂₃   1v₁₃   -1v₃
v₁₃   -1v₃  -1v₁₂₃   1v₁   1v₂₃     -1v  -1v₁₂    1v₂
v₂₃   v₁₂₃    -1v₃   1v₂  -1v₁₃    1v₁₂    -1v   -1v₁
v₁₂₃   1v₂₃   -1v₁₃  1v₁₂   -1v₃     1v₂   -1v₁    -1v
``````

Where `cayley(::Signature)` takes any `Signature` as an argument (e.g. `S"+++"` or `S"-+++"`).

1 Like

Thanks, but how to do this without a library in arbitrary language? What is algorithm?

What’s the difference between v and 1v? And what does other cases of 1-prefixing mean?

Consider \{t_j\}_{j=1}^{2^n} = \{1, v_1, v_2, \dots, v_n, v_{12}, \dots, v_{12\dots n} \}, then t_{j,k} := t_jt_k (geometric product).

A prefix of one means multiplication by the integer 1, which is an identity operation, so v = 1v.

I don’t understand.

How to know the result of t_jt_k?

It’s the geometric product of t_j and t_k, the definition of which depends on the choice of metric tensor.