convertStringToOperator[string_String]:=Module[{expression,list},list=StringSplit[string,""];expression=list;While[Length[list]>1,expression=expression/.list(CenterDot[First[list],Rest[list]]);list=Rest[list]];expression/.listFirst[list]]FindStringProof[theorems_List,axioms_List]:=Module[{stringTheorems,stringAxioms},stringTheorems=(convertStringToOperator[First[#]]==convertStringToOperator[Last[#]])&/@theorems;stringAxioms=(convertStringToOperator[First[#]]==convertStringToOperator[Last[#]])&/@axioms;FindEquationalProof[stringTheorems,Join[{stringAxioms,ForAll[{a,b,c},CenterDot[a,CenterDot[b,c]]CenterDot[CenterDot[a,b],c]]}]]]FindStringProof[theorem_,axioms_List]:=FindStringProof[{theorem},axioms]/;!ListQ[theorem]FindStringProof[theorems_List,axiom_]:=FindStringProof[theorems,{axiom}]/;!ListQ[axiom]FindStringProof[theorem_,axiom_]:=FindStringProof[{theorem},{axiom}]/;(!ListQ[theorem]&&!ListQ[axiom])