In [1]:
from sympy import symbols, sin, cos, Abs
from galgebra.ga import Ga
from galgebra.printer import Format, Fmt
from IPython.display import Latex
Format()


$$ \DeclareMathOperator{\Tr}{Tr} \DeclareMathOperator{\Adj}{Adj} \newcommand{\bfrac}[2]{\displaystyle\frac{#1}{#2}} \newcommand{\lp}{\left (} \newcommand{\rp}{\right )} \newcommand{\paren}[1]{\lp {#1} \rp} \newcommand{\half}{\frac{1}{2}} \newcommand{\llt}{\left <} \newcommand{\rgt}{\right >} \newcommand{\abs}[1]{\left |{#1}\right | } \newcommand{\pdiff}[2]{\bfrac{\partial {#1}}{\partial {#2}}} \newcommand{\npdiff}[3]{\bfrac{\partial^{#3} {#1}}{\partial {#2}^{#3}}} \newcommand{\lbrc}{\left \{} \newcommand{\rbrc}{\right \}} \newcommand{\W}{\wedge} \newcommand{\prm}[1]{{#1}'} \newcommand{\ddt}[1]{\bfrac{d{#1}}{dt}} \newcommand{\R}{\dagger} \newcommand{\deriv}[3]{\bfrac{d^{#3}#1}{d{#2}^{#3}}} \newcommand{\grd}[1]{\left < {#1} \right >} \newcommand{\f}[2]{{#1}\lp {#2} \rp} \newcommand{\eval}[2]{\left . {#1} \right |_{#2}} \newcommand{\bs}[1]{\boldsymbol{#1}} \newcommand{\es}[1]{\boldsymbol{e}_{#1}} \newcommand{\eS}[1]{\boldsymbol{e}^{#1}} \newcommand{\grade}[2]{\left < {#1} \right >_{#2}} \newcommand{\lc}{\rfloor} \newcommand{\rc}{\lfloor} \newcommand{\T}[1]{\text{#1}} \newcommand{\lop}[1]{\overleftarrow{#1}} \newcommand{\rop}[1]{\overrightarrow{#1}} \newcommand{\ldot}{\lfloor} \newcommand{\rdot}{\rfloor} %MacDonald LaTeX macros \newcommand {\thalf} {\textstyle \frac{1}{2}} \newcommand {\tthird} {\textstyle \frac{1}{3}} \newcommand {\tquarter} {\textstyle \frac{1}{4}} \newcommand {\tsixth} {\textstyle \frac{1}{6}} \newcommand {\RE} {\mathbb{R}} \newcommand {\GA} {\mathbb{G}} \newcommand {\inner} {\mathbin{\pmb{\cdot}}} \renewcommand {\outer} {\mathbin{\wedge}} \newcommand {\cross} {\mathbin{\times}} \newcommand {\meet} {\mathbin{{\,\vee\;}}} \renewcommand {\iff} {\Leftrightarrow} \renewcommand {\impliedby}{\Leftarrow} \renewcommand {\implies} {\Rightarrow} \newcommand {\perpc} {\perp} % Orthogonal complement \newcommand {\perpm} {*} % Dual of multivector \newcommand {\del} {\mathbf{\nabla}} %{\boldsymbol\nabla\!} \newcommand {\mpart}[2]{\left\langle\, #1 \,\right\rangle_{#2}} % AMS has a \part \newcommand {\spart}[1]{\mpart{#1}{0}} \newcommand {\ds} {\displaystyle} \newcommand {\os} {\overset} \newcommand {\galgebra} {\mbox{$\mathcal{G\!A}$\hspace{.01in}lgebra}} \newcommand {\latex} {\LaTeX} $$

In [2]:
xyz_coords = (x, y, z) = symbols('x y z', real=True)
(o3d, ex, ey, ez) = Ga.build('e', g=[1, 1, 1], coords=xyz_coords, norm=True)
o3d.g


Out[2]:
$$\left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{matrix}\right]$$

In [3]:
o3d.basis


Out[3]:
$$\left [ e_{x}, \quad e_{y}, \quad e_{z}\right ]$$

In [4]:
# FIXME BUG
o3d.blades


Out[4]:
$$\left [ \left [ \right ], \quad \left [ e_{x}, \quad e_{y}, \quad e_{z}\right ], \quad \left [ e^{e}_{x y}, \quad e^{e}_{x z}, \quad e^{e}_{y z}\right ], \quad \left [ e^{e e}_{x y z}\right ]\right ]$$

In [5]:
print(o3d.blades)


$$ [[], [\boldsymbol{e}_{x}, \boldsymbol{e}_{y}, \boldsymbol{e}_{z}], [\boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}, \boldsymbol{e}_{x}\wedge \boldsymbol{e}_{z}, \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}], [\boldsymbol{e}_{x}\wedge \boldsymbol{e}_{y}\wedge \boldsymbol{e}_{z}]] $$

In [6]:
def cross(x, y):
    return (x ^ y).dual()

GA = Ga('e*1|2|3')
print('g =',GA.g)
a = GA.mv('a', 'vector')
b = GA.mv('b', 'vector')
c = GA.mv('c', 'vector')
(e1,e2,e3) = GA.mv()
print('a =',a)
print('b =',b)
print('c =',c)

print('I =',GA.i)
e123 = e1^e2^e3
print(r'(e_\W e_2\W e_3)^2 =',e123*e123)

bc = e123*(b^c)
print(r'(e_\W e_2\W e_3)(b\W c) =',bc.Fmt(3))
abc = a^bc


$$ g = \left [ \begin{array}{ccc} \left ( e_{1}\cdot e_{1}\right ) & \left ( e_{1}\cdot e_{2}\right ) & \left ( e_{1}\cdot e_{3}\right ) \\ \left ( e_{1}\cdot e_{2}\right ) & \left ( e_{2}\cdot e_{2}\right ) & \left ( e_{2}\cdot e_{3}\right ) \\ \left ( e_{1}\cdot e_{3}\right ) & \left ( e_{2}\cdot e_{3}\right ) & \left ( e_{3}\cdot e_{3}\right ) \end{array}\right ] $$
$$ a = a^{1} \boldsymbol{e}_{1} + a^{2} \boldsymbol{e}_{2} + a^{3} \boldsymbol{e}_{3} $$
$$ b = b^{1} \boldsymbol{e}_{1} + b^{2} \boldsymbol{e}_{2} + b^{3} \boldsymbol{e}_{3} $$
$$ c = c^{1} \boldsymbol{e}_{1} + c^{2} \boldsymbol{e}_{2} + c^{3} \boldsymbol{e}_{3} $$
$$ I = \frac{1}{\sqrt{\left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) ^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} \left ( e_{3}\cdot e_{3}\right ) + 2 \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) - \left ( e_{1}\cdot e_{3}\right ) ^{2} \left ( e_{2}\cdot e_{2}\right ) }} \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3} $$
$$ (e_\W e_2\W e_3)^2 = - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) ^{2} + \left ( e_{1}\cdot e_{2}\right ) ^{2} \left ( e_{3}\cdot e_{3}\right ) - 2 \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) + \left ( e_{1}\cdot e_{3}\right ) ^{2} \left ( e_{2}\cdot e_{2}\right ) $$
$$ (e_\W e_2\W e_3)(b\W c) = \begin{align*} & \left ( - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{1} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{1} c^{2} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{2} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{1} - \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{2} c^{3} + \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{2} + \left ( e_{2}\cdot e_{3}\right ) ^{2} b^{2} c^{3} - \left ( e_{2}\cdot e_{3}\right ) ^{2} b^{3} c^{2}\right ) \boldsymbol{e}_{1} \\ & + \left ( \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{2} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{1} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{1} c^{3} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{1} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{2} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{2} - \left ( e_{1}\cdot e_{3}\right ) ^{2} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) ^{2} b^{3} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{2}\right ) \boldsymbol{e}_{2} \\ & + \left ( - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) ^{2} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{3} c^{2}\right ) \boldsymbol{e}_{3} \end{align*} $$

In [9]:
# Mathematically incorrect but printing works
print(r'(e_\W e_2\W e_3)(b\W c) =',bc.Fmt(3))


$$ (e_\W e_2\W e_3)(b\W c) = \begin{align*} & \left ( - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{1} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{1} c^{2} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{2} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{1} - \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{2} c^{3} + \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{2} + \left ( e_{2}\cdot e_{3}\right ) ^{2} b^{2} c^{3} - \left ( e_{2}\cdot e_{3}\right ) ^{2} b^{3} c^{2}\right ) \boldsymbol{e}_{1} \\ & + \left ( \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{2} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{1} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{1} c^{3} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{1} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{2} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) b^{3} c^{2} - \left ( e_{1}\cdot e_{3}\right ) ^{2} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) ^{2} b^{3} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{2}\right ) \boldsymbol{e}_{2} \\ & + \left ( - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) ^{2} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) b^{3} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) b^{3} c^{2}\right ) \boldsymbol{e}_{3} \end{align*} $$

In [13]:
# FIXME Printing fails for this combination
print(r'a \W ((e_1 \W e_2 \W e_3)(b \W c)) =',abc.Fmt(3))


$$ a \W ((e_1 \W e_2 \W e_3)(b \W c)) = \begin{align*} & \left ( \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{1} c^{2} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{2} c^{1} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{1} c^{3} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{1} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{2} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{3} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{3} c^{1} - \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{1} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{1} b^{3} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{1} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{2} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{2} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{3} c^{2} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{3} c^{1} + \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{2} c^{3} - \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{3} c^{2} - \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{2} b^{2} c^{3} + \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{2} b^{3} c^{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2} \\ & + \left ( - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{1} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{1} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{3} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{3} c^{2} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{3} b^{1} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{3} b^{2} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{3} c^{1} + \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{2} c^{3} - \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{2} - \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{3} b^{2} c^{3} + \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{3} b^{3} c^{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{3} \\ & + \left ( - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{3} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{2} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{2} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{2} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{2} b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{3} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{3} b^{2} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{3} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{2} + \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{3} b^{1} c^{3} - \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{3} b^{3} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{3} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{3} c^{2}\right ) \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3} \end{align*} $$

In [11]:
print(r'a \wedge ((e_1 \wedge e_2 \wedge e_3)(b \wedge c)) =',abc.Fmt(3))


$$ a \wedge ((e_1 \wedge e_2 \wedge e_3)(b \wedge c)) = \begin{align*} & \left ( \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{1} c^{2} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{2} c^{1} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{1} c^{3} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{1} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{2} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{1} b^{3} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{3} c^{1} - \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{1} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{1} b^{3} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{1} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{2} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{2} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{3} c^{2} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{3} c^{1} + \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{2} c^{3} - \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{2} b^{3} c^{2} - \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{2} b^{2} c^{3} + \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{2} b^{3} c^{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{2} \\ & + \left ( - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{1} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{1} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{1} b^{3} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{1} b^{3} c^{2} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{1} b^{3} c^{2} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{3} b^{1} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{3} b^{2} c^{1} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{1} c^{3} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{3} c^{1} + \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{2} c^{3} - \left ( e_{2}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{2} - \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{3} b^{2} c^{3} + \left ( e_{2}\cdot e_{3}\right ) ^{2} a^{3} b^{3} c^{2}\right ) \boldsymbol{e}_{1}\wedge \boldsymbol{e}_{3} \\ & + \left ( - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{3} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{1} c^{2} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{2} c^{1} - \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{1} c^{3} + \left ( e_{1}\cdot e_{1}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{2} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) ^{2} a^{2} b^{2} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{2} b^{1} c^{3} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{2} b^{3} c^{1} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{3} b^{1} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{1}\cdot e_{3}\right ) a^{3} b^{2} c^{1} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{2} b^{3} c^{2} - \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{2} c^{3} + \left ( e_{1}\cdot e_{2}\right ) \left ( e_{3}\cdot e_{3}\right ) a^{3} b^{3} c^{2} + \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{3} b^{1} c^{3} - \left ( e_{1}\cdot e_{3}\right ) ^{2} a^{3} b^{3} c^{1} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{2}\right ) a^{2} b^{3} c^{2} + \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{2} c^{3} - \left ( e_{1}\cdot e_{3}\right ) \left ( e_{2}\cdot e_{3}\right ) a^{3} b^{3} c^{2}\right ) \boldsymbol{e}_{2}\wedge \boldsymbol{e}_{3} \end{align*} $$

In [ ]: