[a] rem [b][[... rem c]]
where [a], [b], and [c] are all values
[a], [b], and [c] are numbers
returns the remainder of [a] when divided by [b], and that when divided by [c], in the most precise type that appears in the chain
rem(type[a], type[b], type[c]) is defined
returns a call of [a], [b], and [c] to rem
[a] rem [b] is defined
evaluates [a] rem [b] first, then evaluates the rest of the expression