The program I'm working on requires me to make my function compatible with Wolfram's functional properties suite. This includes functions such as FunctionDomain, FunctionRange, and FunctionConvexity.
As far as I am aware, there is no way to accomplish this with public-facing functions. I was able to find a function which may be able to help; however, I can find no information on its syntax. The function is SpecialFunctions`RegisterFunctionProperties.
Other functions from this context give promising evidence that this may be what I'm looking for. Namely, SpecialFunctions`RealUnivariateProperties, SpecialFunctions`AssumptionProperties, and SpecialFunctions`SingularityProperties retrieve lists of built-in functions' properties:
In[1]: SpecialFunctions`RealUnivariateProperties[Exp[x], x] //Short
Out[1]: <|DomainEndpoints->{{{-Infinity,0,Indeterminate},{Infinity,Infinity,Indeterminate}}},
Discontinuities->{},
GlobalMonotonicity->1,<<8>>,
InflectionSingularities->False,
Range->Function[System`FunctionPropertyDataDump`y,System`FunctionPropertyDataDump`y>0],
Injective->True|>
However, setting these to return properties of a custom function does not appear to affect how they are interpreted by functions like FunctionDomain. I believe that the register function may be necessary to fully integrate user-defined properties. If anyone can figure out the syntax for it or can find an alternative method to integrate functional properties, I would be immensely grateful.