`type t````=`

`|` `PlusA` | (** arithmetic + *)
`|` `PlusPI` | (** pointer + integer *)
`|` `MinusA` | (** arithmetic - *)
`|` `MinusPI` | (** pointer - integer *)
`|` `MinusPP` | (** pointer - pointer *)
`|` `Mult` | (** * *)
`|` `Div` | (** / *)
`|` `Mod` | (** % *)
`|` `Shiftlt` | (** shift left *)
`|` `Shiftrt` | (** shift right *)
`|` `Lt` | (** < (arithmetic comparison) *)
`|` `Gt` | (** > (arithmetic comparison) *)
`|` `Le` | (** <= (arithmetic comparison) *)
`|` `Ge` | (** >= (arithmetic comparison) *)
`|` `Eq` | (** == (arithmetic comparison) *)
`|` `Ne` | (** != (arithmetic comparison) *)
`|` `BAnd` | (** bitwise and *)
`|` `BXor` | (** exclusive-or *)
`|` `BOr` | (** inclusive-or *)
`|` `LAnd` | (** logical and. Does not always evaluate both operands. *)
`|` `LOr` | (** logical or. Does not always evaluate both operands. *)

``

Binary operations

`include sig ... end`
`val compare : t ‑> t ‑> int`
`val equal : t ‑> t ‑> bool`
`val injective : t ‑> bool`

This function returns true if the operation is injective wrt. each argument: op(e,-) and op(-, e) is injective for all e. The return value false means "don't know".

`val is_zero_runit : t ‑> bool`

This function returns true if 0 is the right unit of `binop`. The return value false means "don't know".

`val str : InferStdlib.Pp.env ‑> t ‑> string`

String representation of a binary operator.