Success: rational(1_3). set_flag(prefer_rationals, on), X is 1/3, rational(X). Fail: rational(1). rational(1.0). rational('1.0'). rational(a). rational(X).