sig
  type occur = int Lang.F.Tmap.t Pervasives.ref
  val create : unit -> 'Lang.F.Tmap.t Pervasives.ref
  val literal : int Lang.F.Tmap.t Pervasives.ref -> Lang.F.Tmap.key -> unit
  val occur : int Lang.F.Tmap.t Pervasives.ref -> Lang.F.Tmap.key -> unit
  val add : int Lang.F.Tmap.t Pervasives.ref -> Lang.F.pred -> unit
  val select : 'Lang.F.Tmap.t Pervasives.ref -> (Lang.F.pred * 'a) list
end