Per definition all things which are not explicitly “off” are “on”
@($Obj is on) ~($Obj is off)
So the “switch” action leads not to the desired output “(The $Obj) can’t be switched on or off.”
unless you rewrite the following rule:
(instead of [switch $Obj])
{ ($Obj is on) (switchable $Obj) }
(try [switch off $Obj])