functor (Type : Lm_linear_set_sig.TypeSig->
  sig
    type elt = Type.t
    type t = Type.t linear_set
    type index = int
    val empty : t
    val singleton : elt -> t
    val length : t -> int
    val get : t -> index -> elt
    val make : int -> elt -> t
    val create : int -> elt -> t
    val to_list : t -> elt list
    val of_list : elt list -> t
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : ('-> index -> elt -> 'a) -> '-> t -> 'a
    val split : t -> index -> t * elt * t
    val append : t -> elt -> t -> t
    val append_list : t -> elt list -> t -> t
    val concat : t -> t -> t
    val lazy_apply : (elt -> elt) -> t -> t
    val lazy_sub_map : (elt -> elt) -> t -> index -> index -> t
    val mapi : (index -> elt -> elt) -> t -> t
    val init : int -> (index -> elt) -> t
    val collect : (elt, t) Lm_array_util.array_part list -> t
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
  end