@cgunn3 in Grassmann
there is a so called dual algebra available,
julia> using Grassmann; mixedbasis"3"
(⟨+++---⟩*, v, v₁, v₂, v₃, w¹, w², w³, v₁₂, v₁₃, v₁w¹, v₁w², v₁w³, v₂₃, v₂w¹, v₂w², v₂w³, v₃w¹, v₃w², v₃w³, w¹², w¹³, w²³, v₁₂₃, v₁₂w¹, v₁₂w², v₁₂w³, v₁₃w¹, v₁₃w², v₁₃w³, v₁w¹², v₁w¹³, v₁w²³, v₂₃w¹, v₂₃w², v₂₃w³, v₂w¹², v₂w¹³, v₂w²³, v₃w¹², v₃w¹³, v₃w²³, w¹²³, v₁₂₃w¹, v₁₂₃w², v₁₂₃w³, v₁₂w¹², v₁₂w¹³, v₁₂w²³, v₁₃w¹², v₁₃w¹³, v₁₃w²³, v₁w¹²³, v₂₃w¹², v₂₃w¹³, v₂₃w²³, v₂w¹²³, v₃w¹²³, v₁₂₃w¹², v₁₂₃w¹³, v₁₂₃w²³, v₁₂w¹²³, v₁₃w¹²³, v₂₃w¹²³, v₁₂₃w¹²³)
This generates a dual geometric algebra V+V'
over the space V = ℝ^3
.
julia> A,B = v1 + v2, v2 + v3
(1v₁ + 1v₂ + 0v₃, 0v₁ + 1v₂ + 1v₃)
julia> !A # complement
0v₁₂ - 1v₁₃ + 1v₂₃
julia> A' # ' raise indices
1w¹ + 1w² + 0w³
julia> !A' # complement and raise indices
0w¹² - 1w¹³ + 1w²³
As you can see, the '
operator will take you from V to V' if you want.
Could you please clarify what you are proposing in terms of the formalism used in my software? For example, I use the index notation v_{1\dots n} for basis elements in \Lambda(V) and w^{1\dots n} for \Lambda(V').
One could think of hyperplane element \star v_1 = v_{23} isomorphically in \Lambda(V') in two different ways:
- the hyperplane element is represented by v_1' = w^1 and \wedge,\vee behave differently
- the hyperplane element is represented by \star v_1' = w^{23} and \wedge,\vee behave the same way
In Grassmann
I have opted for interpretation 2, so that both \star and ' need to be applied successively.
Note, the mixed algebra is in fact setup as a full 2n-dimensional geometric algebra and it is in fact possible to construct mixed tensors with both covariant and contravariant indices combined in Grassmann
.