(* 
 File: Identifiers.sig

 Globals etc to deal with rate identifiers, set identifiers etc
*)

signature Identifiers =
sig

   type id = string
   exception idnotintable

(*    val deletemelist : string list ref *)

   val makeID : string -> id
   val printID : id -> string

   val setids : ((id * (Pepa.Identifier list)) list) ref
(*    val expids : ((id * (Expressions.Aexp)) list) ref *)
   val rewspecids : ((id * (RewLang.RewSpec)) list) ref
   val attachmentids : ((id * (RewLang.Attachment)) list) ref

   val printSetIDs : unit -> unit
(*    val printExpIDs : unit -> unit *)

   val addSetID : id -> (Pepa.Identifier list) -> unit
   val getSet : id -> Pepa.Identifier list
(*    val addExpID : id -> Expressions.Aexp -> unit *)
(*    val getExp : id -> Expressions.Aexp *)
   val addRewSpecID : id -> RewLang.RewSpec -> unit
   val getRewSpec : id -> RewLang.RewSpec
   val addAttachmentID : id -> RewLang.Attachment -> unit
   val getAttachment : id -> RewLang.Attachment

(*    val subForIDs: Expressions.Aexp -> Expressions.Aexp *)
(*    val eval : Expressions.Aexp -> Expressions.Aexp *)
      
   val newDummyID : unit -> string

end;
