procedure sub(arg1,arg2)
   local i
   if i := integer(arg1) - integer(arg2) then
      if i >= 0 then return i else return symop("0","-",-i)
   return {
      (if arg2 == "0" then arg1) |
      (if arg1 == arg2 then "0") |
      symop(arg1,"-",arg2)
      }
end
