sig
  type 'a dynamic_stack = {
    mutable capacity : int;
    mutable size : int;
    mutable stack : 'a array;
    default : 'a;
  }
  val make : int -> 'a -> 'a Dynamic_stack.dynamic_stack
  val push : 'a Dynamic_stack.dynamic_stack -> 'a -> unit
  val empty : 'a Dynamic_stack.dynamic_stack -> bool
  val pop : 'a Dynamic_stack.dynamic_stack -> 'a
  val top : 'a Dynamic_stack.dynamic_stack -> 'a
end