sig
  type 'a t = 'a Invariant_intf.t
  module type S = Invariant_intf.S
  module type S1 = Invariant_intf.S1
  module type S2 = Invariant_intf.S2
  module type S3 = Invariant_intf.S3
  val invariant :
    Source_code_position0.t ->
    'a -> ('a -> Sexplib.Sexp.t) -> (unit -> unit) -> unit
  val check_field : 'a -> 'b t -> ('a, 'b) Fieldslib.Field.t -> unit
end