m(xy) = m(x)m(y) is true for octonions but not for sedenions. Octonions are a divisions algebra and sedenions are not even though most sedenions have inverses. m(xy) = m(x)m(y) is true for Cl(n, 0) only if 0≤n<3.

**Definitions** for this page

**C** = Cl(4, 0),
**V** is the 4D space within C that generates C,
**B _{V}** = {γ

For set x,

If x ⊆ C and x is finite then

If x ⊆ C then

B

The code below reveals that the set B = {a(t+1) | a ∊ C} is an 8 dimensional subspace of left zero divisors which is spanned by a set Q of 8 independent Clifford numbers.
Q = {1+γ_{0123}, γ_{0}+γ_{123},
γ_{1}−γ_{023}, γ_{01}−γ_{23},
γ_{2}+γ_{013}, γ_{02}+γ_{13},
γ_{12}−γ_{03}, γ_{012}−γ_{3}}.

The code works as follows:
Q = {x(t+1)|x ∊ B_{C}}.
Q spans B.

B is closed under multiplication.
An example of aa=0: (γ_{0}+γ_{123})(γ_{0}+γ_{123}) = 0.

The code below uses definitions from here.

; generate set of subsets where set is a list: (define (P a) (if (null? a) '(()) (let ((c (car a))) (let L ((x (P (cdr a)))) (if (null? x) '() (cons (car x) (cons (cons c (car x)) (L (cdr x))))))))) ; multi operand multiply: (define (lm x)(if (null? x) C1 (C* (car x) (lm (cdr x))))) ; generate all subsets of basis for V then generate basis for C. (define CB (map lm (map reverse (P (reverse basis))))) ; numlist turns a number tree into a list of numbers. ; below a must be a number tree and b a number list. Returns a number list. (define (numlist a) (let nl ((a a)(b '())) (if (number? a) (cons a b) (nl (car a) (nl (cdr a) b))))) ; observe generation of basis for C suitable for rank software. ; (map numlist (map lm (map reverse (P basis)))) ; => twist permutation. (define Q (map numlist (let ((T (C+ C1 (C* (C* g0 g1) (C* g2 g3))))) (map (lambda (p) (C* p T)) (map lm (map reverse (P basis)))))))

Q => ( (1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1) (0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0) (0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0) (0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0) (0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0) (0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0) (0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0) (0 -1 0 0 0 0 0 0 0 0 0 0 0 0 1 0) (0 1 0 0 0 0 0 0 0 0 0 0 0 0 -1 0) (0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0) (0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0) (0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0) (0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0) (0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0) (0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0) (1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1)) which is of rank 8. The first 8 are independent and for i = 0 thru 7 (15-i)th vector is same or negative of ith vector.

Now include the definitions of trnxx and transpose and matpak, ops and inv and Rank.

(define (treestr x) (let ld ((x x)) (if (and (pair? x)(null? (cdr x))) (car x) (ld (let z ((x x)) (if (and (pair? x)(pair? (cdr x))) (cons (cons (car x)(cadr x)) (z (cddr x))) '())))))) (define trn transpose) ; The following computes the smallest subset of Q that spans what Q does. (define Q (map treestr (trn (Rank (trn Q))))) ; Q is the computed set referred to above and (Sr Q) generates random elements form B.Here we automate this so we can perform this process on other discovered zero divisors.