Pensieve header: Non-Commutative Gaussian Elimination.

The Commutative Case

vs=Table[(((i+j))^4),{i,12},{j,8}];
vs // Column

MatrixRank[vs]

n=8;
Do[t@i=Null, {i,n}]

Feed[v_List] /; Total[Abs[v]]==0 := Null;

?...

?MatchQ

MatchQ[{1,2},{0..}]

MatchQ[{0,0,0,0},{0..}]

x==y

x==1

Solve[(x^2)-1==0,x]

Solve[(x^2)-1===0,x]

Solve[True,x]

Solve[(x^2)-1==0,{x,y}]

(x^2)-1==0 /. Solve[(x^2)-1==0,x][[1]]

True /. Solve[True,x][[1]]

Feed[{0..}] := Null;
Feed[v_List] := Module[{i},
i=1; While[v[[i]]==0, ++i];
If[t[i]===Null,
t[i]=v/v[[i]],
Feed[v-t[i]v[[i]]]
]
]

Feed /@ vs

?t

?Count

Count[t/@Range[n], _List]

?Position

Position[{1,0,1,0,0,3,5}, 0]

Position[{1,0,1,0,0,3,5},_, {1}]

?Except

Position[{1,0,1,0,0,3,5}, Except[0]]

?FirstPosition

FirstPosition[{1,0,1,0,0,3,5}, Except[0], Heads->False]

t[19]=Nothing

t[19]

Table[t[i],{i,17,22}]

On to Rubik’s Cube

?Cycles

n=54; 
(Subscript[g, 1])=Cycles[{{1,18,45,28},{2,27,44,19},{3,36,43,10},{46,52,54,48},{47,49,53,51}}];
(Subscript[g, 2])=Cycles[{{7,16,39,30},{8,25,38,21},{9,34,37,12},{13,15,33,31},{14,24,32,22}}];
(Subscript[g, 3])=Cycles[{{28,31,34,48},{29,32,35,47},{30,33,36,46},{37,39,45,43},{38,42,44,40}}];
(Subscript[g, 4])=Cycles[{{1,3,9,7},{2,6,8,4},{10,54,16,13},{11,53,17,14},{12,52,18,15}}];
(Subscript[g, 5])=Cycles[{{1,13,37,46},{4,22,40,49},{7,31,43,52},{10,12,30,28},{11,21,29,19}}];
(Subscript[g, 6])=Cycles[{{3,48,39,15},{6,51,42,24},{9,54,45,33},{16,18,36,34},{17,27,35,25}}];

?PermutationProduct

a_∘b_ := PermutationProduct[a,b]

?InversePermutation

?PermutationSupport

?PermutationReplace