I am trying to solve with:
ClearAll[myCeiling];
myCeiling /: InverseFunction[myCeiling[x_]] := myFloor[x];
using
Solve[a == myCeiling[b/7], b, InverseFunctions -> True]
(* => {{b -> 7*InverseFunction[myCeiling, 1, 1][a]}} *)
gets incorrect result (ignores the defined InverseFunction) and if I set
ClearAll[myCeiling];
myCeiling /: InverseFunction[myCeiling] := myFloor
the result is just empty list {}
How do I correctly define InverseFunction for my function to use with Solve and InverseFunctions -> True?
Edit
Setting DownValue also results in empty List:
ClearAll[myCeiling];
Unprotect[InverseFunction];
InverseFunction[myCeiling] := myFloor;
Solve[a == myCeiling[b/7], b, InverseFunctions -> True]
(* => {} *)
And since when I check the DownValues of InverseFunction they seem to be no different from any other definition
DownValues[InverseFunction][[1]]//FullForm
(* RuleDelayed[HoldPattern[InverseFunction[ArcCos]],Cos] *)
DownValues[InverseFunction][[29]]//FullForm
(* RuleDelayed[HoldPattern[InverseFunction[myCeiling]],myFloor] *)
I assume this might be some kind of bug in Solve?