transpose defrule not work



matchdeclare(xx,true);
defrule(tranorm,transpose(norm2(xx)),norm2(xx));
apply1(transpose(norm2(x.y)),tranorm );

-> transpose(norm2(x.y))
no change

But

defrule(tranorm3,mytranspose(norm2(xx)),norm2(xx))
apply1(mytranspose(norm2(x.y)),tranorm3)

-> norm2(x.y)