Okay, maybe my response was irrelevant, but I'm not convinced, so let me try again. I see your point about my example using concrete values while you're only interested in the abstraction provided by variables. But Mathematica doesn't want to give an untrue answer (as much as reasonable, there are in fact weird edge cases that one could consider untrue, but I don't think we need to go into that). So, if it were to "solve" the problem with variables but a user wanted to use the solution with values (in particular the values I used as examples), well then they'd get very incorrect results.
As for your questions...
I would like Wolfram to be able to convert an expression Ceiling[x] - Floor[x] - 1 into a function that has zero everywhere except the set of integers, where it has -1.
That's easy. We can just use your expression directly:
myFunc[x_] := Ceiling[x] - Floor[x] - 1;
Table[myFunc[x], {x, -2, 2, 1/4}]
(* {-1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1} *)
There are probably many ways to define such a function, there may even be a built in function for that.
to what extent can Wolfram help in theoretical mathematics?
I'm not the right person to answer that, but as far as I can tell there are many people doing sophisticated mathematics with Wolfram.