Is the difference between two ordinal variables ordinal? Is the difference between two ordinal survey responses still ordinal?

The only mathematical relations that exists between ordinal data is "greater than", "less than", and "equal". Any other mathematical relation, such as addition, subtraction, multiplication, etc., marks the data as being treated as a more complex data type such as interval or ratio data.
I think this quote from Frank Harrell's answer bears addressing:

Take a 4-level pain scale for example (none, mild, moderate, severe). Going from moderate to severe pain may be far worse than going from mild to moderate pain. Yet they both have a difference of 1 if pain were coded 0,1,2,3.

In ordinal data, the "separation" between different values isn't merely "not necessarily constant", it's not defined. The levels are being treated as having no defined metric. The numbers are merely labels that have a particular order. You could just as easily call the pain levels "banana, orange, apple, pear", as long as it's understood that the labels have that order. Saying "pear minus apple might be larger than apple minus orange" is meaningless. From a CS perspective, the pain level are objects with the methods .lt(), .gt(), and .eq(), .repr()and nothing else. There is no .minus() or .plus() method. Pain level "0" is just an object whose .repr() value is "0". It has no other relation to 0. Is it not the int 0, and you can't apply int operations to it.
