I believe I have found a bug in the command "diff", when working in positive characteristic.
The command "diff" can be used in two different ways. One is to differentiate with respect to a single variable at a time, and this seems to work fine also in positive characteristic.
> ring r=0,(x,y),dp; > print(diff(x2,x)); 2x > ring r=2,(x,y),dp; > print(diff(x2,x)); 0
The other is to differentiate several polynomials with respect to several variables, and this seems to have trouble in positive characteristic. (Note that the syntax is reversed in this usage, with the variables coming first. I find that odd, but it's not the issue at hand.)
> ring r=0,(x,y),dp; > ideal H = x,y; > ideal I = x2,y2; > print(diff(H,I)); 2x,0, 0, 2y > ring r=2,(x,y),dp; > ideal H = x,y; > ideal I = x2,y2; > print(diff(H,I)); 0x,0, 0, 0y
The trouble is that the diagonal entries are supposed to be zero. Their coefficients have been reduced modulo 2, but the resulting zeroes have not been removed. In fact, they are not recognized as being equal to zero!
> print(diff(H,I)[1,1] != 0); 1
|
|