Wolfram mathematica Mathematica:从展开运算符中删除参数

Wolfram mathematica Mathematica:从展开运算符中删除参数,wolfram-mathematica,Wolfram Mathematica,我在mathematica中有一个对象,其属性为Flat和OneIdentity。我还定义了以下替换: A[z___, x_Times /; ! FreeQ[x, b], y___] := A[z, A@@ x, y] A[z___, x_Plus /; ! FreeQ[x, b], y___] := A[z, #, y] & /@ (x) 我需要它们,使A中的所有乘积成为A的参数的一部分,并且关于和的分配性质成立 我需要找到一种方法来删除所有不包含b模式的参数 我尝试了A[z

我在mathematica中有一个对象,其属性为Flat和OneIdentity。我还定义了以下替换:

A[z___, x_Times /; ! FreeQ[x, b], y___] := 
 A[z, A@@ x, y]
A[z___, x_Plus /; ! FreeQ[x, b], y___] := 
 A[z, #, y] & /@ (x)
我需要它们,使A中的所有乘积成为A的参数的一部分,并且关于和的分配性质成立

我需要找到一种方法来删除所有不包含b模式的参数

我尝试了
A[z,A-(FreeQ[#,b]&),y[u]:=A[z,y]
,但我得到了迭代限制错误

我知道错误的原因是mathematica将A[A]作为A与平坦运算符匹配。但是,正确的方法是什么,以符合前两个条件的方式