sig
  type id = ID.t
  type 'ty t = 'ty ID.Map.t
  val empty : 'Signature.t
  val mem : sigma:'Signature.t -> Signature.id -> bool
  val find : sigma:'Signature.t -> Signature.id -> 'a option
  val find_exn : sigma:'Signature.t -> Signature.id -> 'a
  val declare : sigma:'Signature.t -> Signature.id -> '-> 'Signature.t
  val add_list :
    sigma:'Signature.t -> (Signature.id * 'a) list -> 'Signature.t
  val of_list : (Signature.id * 'a) list -> 'Signature.t
  val add_statement :
    sigma:'Signature.t -> ('b, 'a) Statement.t -> 'Signature.t
end