@@ -446,6 +446,10 @@ module type M = sig
446446 (* * [lshr t1 t2] constructs the logical right shift of [t1] by [t2]. *)
447447 val lshr : term -> term -> term
448448
449+ (* * [smod t1 t2] two's complement signed remainder (sign follows divisor).
450+ *)
451+ val smod : term -> term -> term
452+
449453 (* * [rem t1 t2] constructs the remainder of the bitvector terms [t1] and
450454 [t2]. *)
451455 val rem : term -> term -> term
@@ -460,6 +464,38 @@ module type M = sig
460464 (* * [rotate_right t1 t2] constructs the right rotation of [t1] by [t2]. *)
461465 val rotate_right : term -> term -> term
462466
467+ (* * [nego t] constructs a predicate that checks that whether the bit-wise
468+ negation of [t] does not overflow. *)
469+ val nego : term -> term
470+
471+ (* * [addo ~signed t1 t2] constructs a predicate that checks whether the
472+ bitwise addition of [t1] and [t2] does not overflow.
473+
474+ The [signed] argument is a boolean:
475+ - [true] -> for signed addition
476+ - [false] -> for unsigned addition *)
477+ val addo : signed :bool -> term -> term -> term
478+
479+ (* * [subo ~signed t1 t2] constructs a predicate that checks whether the
480+ bitwise subtraction of [t1] and [t2] does not overflow.
481+
482+ The [signed] argument is a boolean:
483+ - [true] -> for signed subtraction
484+ - [false] -> for unsigned subtraction *)
485+ val subo : signed :bool -> term -> term -> term
486+
487+ (* * [mulo ~signed t1 t2] constructs a predicate that checks whether the
488+ bitwise multiplication of [t1] and [t2] does not overflow.
489+
490+ The [signed] argument is a boolean:
491+ - [true] -> for signed multiplication
492+ - [false] -> for unsigned multiplication *)
493+ val mulo : signed :bool -> term -> term -> term
494+
495+ (* * [divo t1 t2] constructs a predicate that checks whether the bitwise
496+ division of [t1] and [t2] does not overflow. *)
497+ val divo : term -> term -> term
498+
463499 (* * [lt t1 t2] constructs the less-than relation between bitvector terms
464500 [t1] and [t2]. *)
465501 val lt : term -> term -> term
0 commit comments