> IFC (RATOR_CONV BETA_CONV) BETA_CONV NO_CONV ``(\x y. x ==> y) T F``;
val it = |- T ==> F : thm
The first RATOR_CONV BETA_CONV succeeds and chains successfully with the second BETA_CONV.
> IFC ALL_CONV BETA_CONV (RATOR_CONV BETA_CONV) ``(\x y. x ==> y) T F``;
Exception - BETA_CONV: not a beta redex
Although ALL_CONV succeeds, it does nothing, so BETA_CONV is not applicable.
> IFC NO_CONV BETA_CONV (RATOR_CONV BETA_CONV) ``(\x y. x ==> y) T F``;
val it = |- (\y. T ==> y) F : thm
The NO_CONV fails, so RATOR_CONV BETA_CONV applies.