As far as I understand, I cannot define the values of built-in functions:
Sin[Cat] := Dog will result in error.
This is because all built-in symbols have attribute
However for the function
N, which is also protected, I can define a custom value:
N[Cat] := Dog
By the way, doing so will not change
So the question is: why function
N behaves like that? Is it just some hard-coded rule, which is not described in terms of attributes, downvalues etc.?