reserve a,a1,a2,b,c,d for Ordinal,
  n,m,k for Nat,
  x,y,z,t,X,Y,Z for set;
reserve f,g for Function;
reserve A,B,C for array;

theorem
  x in dom f & y in dom f implies Swap(f,x,y) = Swap(f,y,x)
  proof assume
A1: x in dom f & y in dom f;
A2: dom Swap(f,x,y) = dom f & dom Swap(f,y,x) = dom f by FUNCT_7:99;
    now let z be object such that
      z in dom f;
      per cases;
      suppose z = x & z = y;
        hence Swap(f,x,y).z = Swap(f,y,x).z;
      end;
      suppose z = x & z <> y; then
        Swap(f,x,y).z = f.y & Swap(f,y,x).z = f.y by A1,Th29,Th31;
        hence Swap(f,x,y).z = Swap(f,y,x).z;
      end;
      suppose z <> x & z = y; then
        Swap(f,x,y).z = f.x & Swap(f,y,x).z = f.x by A1,Th29,Th31;
        hence Swap(f,x,y).z = Swap(f,y,x).z;
      end;
      suppose z <> x & z <> y; then
        Swap(f,x,y).z = f.z & Swap(f,y,x).z = f.z by Th33;
        hence Swap(f,x,y).z = Swap(f,y,x).z;
      end;
    end;
    hence Swap(f,x,y) = Swap(f,y,x) by A2;
  end;
