Determine and Present the Feasibility of Matrix Addition and Multiplication over an Arbitrary Set of Matrices

mA={{0,3},{2,1}};
mB={{2,-1},{0,3}};
mC={{1,0,1,2},{2,-1,3,1}};
mD={{1,1,-1},{8,6,-5}};
mE={{2,1,3},{-1,6,2},{8,9,5},{-4,6,1}};
SetAttributes[Map,HoldAll];
matrices=HoldForm/@{mA,mB,mC,mD,mE};
ClearAttributes[Map,HoldAll];

CheckAddition[lhs_,rhs_]:=
Dimensions[ReleaseHold[lhs]]==Dimensions[ReleaseHold[rhs]]
CheckMultiplication[lhs_,rhs_]:=
Dimensions[ReleaseHold[lhs]][[2]]==Dimensions[ReleaseHold[rhs]][[1]]
FormatFeasibilityTable[data_,title_]:=
Labeled[
Labeled[data,
{Style["RHS",ShowStringCharacters->False,Bold],
Style["LHS",ShowStringCharacters->False,Bold]},
{Top,Left},
RotateLabel->True,
Frame->True,
FrameMargins->Large],
Style[title,ShowStringCharacters->False,Underlined],
Top,Spacings->{Automatic,1}
]

rawTableData=
TableForm[Outer[#,matrices,matrices],
TableHeadings->{matrices,matrices}]&/@
{CheckAddition,CheckMultiplication};

Remark: Matrix addition is commutative due to the commutativity of addition in the element’s fields.

FormatFeasibilityTable[#[[1]],#[[2]]]&/@
{{rawTableData[[1]],"Addition Feasibility Table"},
{rawTableData[[2]],"Multiplication Feasibility Table"}}