sig
module type S =
sig
type ('a, 'b) generator
type ('a, 'b) mutator
type ('a, 'b) observer
type ('a, 'b) op
val op_to_string : ('a, 'b) Reins.DugADT.S.op -> string
val coerce_gen :
('a, 'b) Reins.DugADT.S.generator -> ('a, 'b) Reins.DugADT.S.op
val coerce_mut :
('a, 'b) Reins.DugADT.S.mutator -> ('a, 'b) Reins.DugADT.S.op
val coerce_obs :
('a, 'b) Reins.DugADT.S.observer -> ('a, 'b) Reins.DugADT.S.op
val classify :
('a, 'b) Reins.DugADT.S.op ->
(('a, 'b) Reins.DugADT.S.generator, ('a, 'b) Reins.DugADT.S.mutator,
('a, 'b) Reins.DugADT.S.observer)
Reins.Dug.kind
val strip :
('a, 'b) Reins.DugADT.S.op -> (unit, unit) Reins.DugADT.S.op
val op_dependencies : ('a, Dug.Id.t) Reins.DugADT.S.op -> Dug.Id.t list
val create_op :
(unit, unit) Reins.DugADT.S.op ->
Dug.Id.t ->
(unit -> 'a) -> (int -> Dug.Id.t) -> ('a, Dug.Id.t) Reins.DugADT.S.op
end
end