What are the properties of square-matrix algebra with this equivalence class?

60 Views Asked by At

Consider the set of all square matrices with the following equivalence class:

$\mathbf{A}\sim\mathbf{A}\otimes\mathbf{I}_n$,

for each $n$, where $\otimes$ is Kronecker product and $\mathbf{I}_n$ is identity matrix of order $n$.

For instance, the following matrices are considered equivalent:

$$\left( \begin{array}{cc} 1 & 2 \\ 3 & 4 \\ \end{array} \right)=\left( \begin{array}{cccc} 1 & 0 & 2 & 0 \\ 0 & 1 & 0 & 2 \\ 3 & 0 & 4 & 0 \\ 0 & 3 & 0 & 4 \\ \end{array} \right)$$

This rule allows to make dot product of any two square matrices, as well as to rise a matrix to matrix power irrespective of their orders.

I wonder, what properties the resulting infinite-dimensional vector space has? Obviously it includes subsets isomorphic to all possible hypercomplex systems, including quaternions, split-quaternions, tessarines, grassman numbers, triplex numbers, $\mathbb{R}^n$, hyperbolic numbers, Clifford algebras and all possible their combinations, allowing to make arithmetic operations on hypercomplex numbers from different systems and mix them in one expression.

But what would be the overall algebraic outlook of this set?

Below is the code for Mathematica system that realises this algebra:

Clear["Global`*"]
$PrePrint =.; FormatValues@Matrix = {};
Hold[MakeBoxes[Matrix[a_], StandardForm] ^:= 
    Block[{Internal`$ConvertForms = {}}, 
     TemplateBox[{MakeBoxes[MatrixForm@a][[1, 1, 3]]}, "Matrix", 
      DisplayFunction -> (RowBox@{style@"(", "\[NoBreak]", #, 
           "\[NoBreak]", style@")"} &)]]] /. 
  style[string_] -> StyleBox[string, FontColor -> Red] // ReleaseHold
Unprotect[Dot];
Dot[x_?NumberQ, y_] := x y;
Dot[A_?SquareMatrixQ, B_?SquareMatrixQ] := 
  Matrix[KroneckerProduct[A, 
      IdentityMatrix[LCM[Length[A], Length[B]]/Length[A]]] . 
     KroneckerProduct[B, 
      IdentityMatrix[LCM[Length[A], Length[B]]/Length[B]]]] /; 
   Length[A] != Length[B];
Protect[Dot];
Unprotect[Power];
Power[0, 0] = 1;
Protect[Power];
Matrix /: Matrix[x_?MatrixQ] := 
  First[First[x]] /; x == First[First[x]] IdentityMatrix[Length[x]];
Matrix /: NonCommutativeMultiply[Matrix[x_?MatrixQ], y_] := 
  Dot[Matrix[x], y];
Matrix /: NonCommutativeMultiply[y_, Matrix[x_?MatrixQ]] := 
  Dot[y, Matrix[x]];
Matrix /: Dot[Matrix[x_], Matrix[y_]] := Matrix[x . y];
Matrix /: Matrix[x_] + Matrix[y_] := Matrix[x + y];
Matrix /: x_?NumericQ + Matrix[y_] := 
  Matrix[x IdentityMatrix[Length[y]] + y];
Matrix /: x_?NumericQ Matrix[y_] := Matrix[x y];
Matrix /: Matrix[x_]*Matrix[y_] := Matrix[x . y] /; x . y == y . x;
Matrix /: Power[Matrix[x_?MatrixQ], y_?NumericQ] := 
  Matrix[MatrixPower[x, y]];
Matrix /: Power[Matrix[x_?MatrixQ], Matrix[y_?MatrixQ]] := 
  Exp[Matrix[y] . Log[Matrix[x]]];
Matrix /: Log[Matrix[x_?MatrixQ], Matrix[y_?MatrixQ]] := 
 Log[Matrix[x]] . Log[Matrix[y]]^-1
Matrix /: Im[Matrix[x_?MatrixQ]] := Matrix[Im[x]]
Matrix /: Re[Matrix[x_?MatrixQ]] := Matrix[Re[x]]
Matrix /: Arg[Matrix[x_?MatrixQ]] := Matrix[Arg[x]]
Matrix /: Dot[Matrix[A_?SquareMatrixQ], Matrix[B_?SquareMatrixQ]] := 
 Matrix[KroneckerProduct[A, 
    IdentityMatrix[LCM[Length[A], Length[B]]/Length[A]]] . 
   KroneckerProduct[B, 
    IdentityMatrix[LCM[Length[A], Length[B]]/Length[B]]]]

$Post2 = 
  FullSimplify[# /. 
     f_[args1___?NumericQ, Matrix[mat_], args2___?NumericQ] :> 
      Matrix[MatrixFunction[f[args1, #, args2] &, mat]]] &;
$Post = Nest[$Post2, #, 3] /. Dot -> NonCommutativeMultiply &;

Test:

Matrix[{
   {1, 3},
   {0, 2}
  }]^Matrix[{
   {1, 0, 1},
   {1, 0, 0},
   {0, 0, 2}
  }]