reserve D for set;
reserve x,x0,x1,x2,y,y0,y1,y2,z,z0,z1,z2,r,s,t for Real;
reserve p,a,u,u0 for Element of REAL 3;
reserve n,m,k for Element of NAT;
reserve f,f1,f2,f3,g for PartFunc of REAL 3,REAL;
reserve R,R1,R2 for RestFunc;
reserve L,L1,L2 for LinearFunc;

theorem
  curl(f1,f2,f3,p) = |[ partdiff(f3,p,2)-partdiff(f2,p,3),
  partdiff(f1,p,3)-partdiff(f3,p,1),partdiff(f2,p,1)-partdiff(f1,p,2) ]|
proof
    curl(f1,f2,f3,p) = |[ (partdiff(f3,p,2)-partdiff(f2,p,3))*1,
      (partdiff(f3,p,2)-partdiff(f2,p,3))*0,
      (partdiff(f3,p,2)-partdiff(f2,p,3))*0 ]|+
      (partdiff(f1,p,3)-partdiff(f3,p,1))*|[ 0,jj,0 ]|+
      (partdiff(f2,p,1)-partdiff(f1,p,2))*|[ 0,0,jj]| by EUCLID_8:59
   .= |[ partdiff(f3,p,2)-partdiff(f2,p,3),0,0 ]|+
      |[ (partdiff(f1,p,3)-partdiff(f3,p,1))*0,
      (partdiff(f1,p,3)-partdiff(f3,p,1))*1,
      (partdiff(f1,p,3)-partdiff(f3,p,1))*0 ]|+
      (partdiff(f2,p,1)-partdiff(f1,p,2))*|[ 0,0,jj ]| by EUCLID_8:59
   .= |[ partdiff(f3,p,2)-partdiff(f2,p,3),0,0 ]|+
      |[ 0,partdiff(f1,p,3)-partdiff(f3,p,1),0 ]|+
      |[ (partdiff(f2,p,1)-partdiff(f1,p,2))*0,
      (partdiff(f2,p,1)-partdiff(f1,p,2))*0,
      (partdiff(f2,p,1)-partdiff(f1,p,2))*1 ]| by EUCLID_8:59
   .= |[ (partdiff(f3,p,2)-partdiff(f2,p,3))+0,
      0+(partdiff(f1,p,3)-partdiff(f3,p,1)),0+0 ]|+
      |[ 0,0,partdiff(f2,p,1)-partdiff(f1,p,2) ]| by Lm4
   .= |[ (partdiff(f3,p,2)-partdiff(f2,p,3))+0,
      (partdiff(f1,p,3)-partdiff(f3,p,1))+0,
      0+(partdiff(f2,p,1)-partdiff(f1,p,2)) ]| by Lm4
   .= |[ partdiff(f3,p,2)-partdiff(f2,p,3),partdiff(f1,p,3)-partdiff(f3,p,1),
      partdiff(f2,p,1)-partdiff(f1,p,2) ]|;
    hence thesis;
end;
