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"-+++").

2 Likes

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.

I made a pdf with a O(log2 n) algorithm for the blade product, but I know no way to upload files to the forum.