EQKEY signatureThe EQKEY signature defines an abstract
    type t and provides
    equality and toString functions
    on values of such type.
  
  type t
  val equal : t * t -> bool
  val toString : t -> string
  
  type tval equal : t * t -> bool(equal (x, y)) evaluates to true
      if and only if $x$ and $y$ are equal values of type t.val toString : t -> string(toString k) evaluates to a string representation
      of $x$, a value of type t.