Relations.XOR_RotateSourcetype (_, _) t = private | XR_Identity : ('a, 'a) t| XR_BNot : (Operator.Function_symbol.boolean, Operator.Function_symbol.boolean)
tBoolean not
*)| XR_XOR_rotate : {rotate : int;xor : Z.t;size : Units.In_bits.t;} -> (Operator.Function_symbol.bitvector, Operator.Function_symbol.bitvector) tOn bounded integers, represents a rotation then a xor Invariant: xor fits on size bits, 0 <= rotate < size
Bitwise focused relation: xor and rotate.
val xr_xor_rotate :
rotate:int ->
xor:Z.t ->
size:Units.In_bits.t ->
(Operator.Function_symbol.bitvector, Operator.Function_symbol.bitvector) tinclude Union_Find.Parameters.GENERIC_GROUP with type ('a, 'b) t := ('a, 'b) tinclude Union_Find.Parameters.GENERIC_MONOID with type ('a, 'b) t := ('a, 'b) tPretty printer for relations
val pretty_with_terms :
(Format.formatter -> 'tl -> unit) ->
'tl ->
(Format.formatter -> 'tr -> unit) ->
'tr ->
Format.formatter ->
('a, 'b) t ->
unitpretty_with_terms pp_x x pp_y y rel pretty-prints the relation rel between terms x and y (respectively printed with pp_x and pp_y).
For placeholder variables, use pretty
Monoid composition, written using the functional convention compose f g is f \circ g. Should be associative, and compatible with identity:
G.compose x G.identity = G.compose G.identity x = xG.compose x (G.compose y z) = G.compose (G.compose x y) z