put triggers first; don't tell unless you have the method

If the triggers are done first then it seems a routine
can be assured that none of the simple triggers are true.

The InconsistenAssumption error was being emitted when
we tried to tell something. Don't use tell unless you are
going to actually start the process. Hence, put it in the
else part of the `try`.
We definitely don't want to sort. This will mask errors in logic. The other thing that we could do is always check the returned value against an existing `_eval_is` method. This will take a little longer but knowing that you haven't made a mistake in some routine is a pretty high reward for that cost.