(*
  File: Derivatives.sig

  Given an environment of definitions and a component, compute the one-step
  ((activity, rate), name) transitions leading to new components
*)
signature Derivatives = 
sig
(*   val derivative :  *)
(*     Pepa.Environment -> Pepa.Component *)
(*        -> ((Pepa.Identifier * Pepa.Identifier) * Pepa.Name * Pepa.Component) list *)
(*    val derivative :  *)
(*       Pepa.Environment -> Pepa.Component *)
(*       -> ((Pepa.Identifier * string) * Pepa.Name * Pepa.Component) list *)

(*    val procEnv : ((Pepa.Identifier * Pepa.Component) list) ref *)
(*    val getProcEnv : Pepa.Component -> (Pepa.Identifier * Pepa.Component) list *)

   val proc : Pepa.Component ref

   val derivative : 
      Pepa.Environment -> Pepa.Component
      -> ((Pepa.Identifier * Expressions.Aexp) * Pepa.Name * Pepa.Component) list
   val oldderivative : 
      Pepa.Environment -> Pepa.Component
      -> ((Pepa.Identifier * Expressions.Aexp) * Pepa.Name * Pepa.Component) list

end;
