ToNewRuleForm[rule:_Rule,ruleIndex_:1]:=Module[{leftSymbols,rightSymbols,symbols,newVertexNames,vertexPatterns,newLeft,leftVertices,rightVertices,rightOnlyVertices,left},{leftSymbols,rightSymbols}=Union[Cases[#,_?AtomQ,{0,1}],Cases[#,_,{2}]]&/@List@@rule;symbols=Union[leftSymbols,rightSymbols];newVertexNames=ToHeldExpression/@StringTemplate["v``"]/@Range@Length@symbols;vertexPatterns=Pattern[#,Blank[]]&/@newVertexNames;newLeft=(rule[[1]]/.Thread[symbolsvertexPatterns]);left=rule[[1]]/.Thread[symbolsnewVertexNames];{leftVertices,rightVertices}={leftSymbols,rightSymbols}/.Thread[symbolsnewVertexNames];rightOnlyVertices=Complement[rightVertices,leftVertices];With[{moduleVariables=rightOnlyVertices,moduleExpression=rule[[2]]/.Thread[symbolsnewVertexNames],moduleValues=With[{left=left},Hold[Hash[{ruleIndex,#,Sort@left}]]&/@Range[Length[rightOnlyVertices]]]},With[{moduleAssignments=Thread[Hold[Set][moduleVariables,moduleValues]]},If[moduleVariables=!={},newLeftSequence@@Module[moduleAssignments,moduleExpression],newLeftmoduleExpression]]]//.Hold[expr_]expr]ToNewRuleForm[rules:{___Rule}]:=MapThread[ToNewRuleForm[##]&,{rules,Range[Length[rules]]}]