Fixed crash bug for ill-formed / * exprs

I followed a similar pattern to the binary_elab helper
function, and instead of just making sure both had the
same type t, I made sure the first expression could be
cast to Int, and that the second expression was type t.

I'm not sure if it's a good idea to handle the error
checking at this stage or in the syntax stage.