Module type Invariant.S3

type ('a, 'b, 'c) t
val invariant : ('a -> unit) -> ('b -> unit) -> ('c -> unit) -> ('a'b'c) t -> unit