functor (Lstream : S->
  sig
    val eval_lsys :
      int ->
      ('a * string Calc.t list) Lilis.lsystem -> ('a * float array) Lstream.t
    type 'a lstream = ('a * float array) Lstream.t
    type 'a crules
    val compress_rules :
      Lilis.SymbEnv.t ->
      (string * string Calc.t list) Lilis.rule list -> int Lilis.Make.crules
    val compress_post_rules :
      Lilis.SymbEnv.t ->
      ('a * string Calc.t list) Lilis.rule list -> 'Lilis.Make.crules
    val compress_lslist :
      Lilis.SymbEnv.t ->
      string Lilis.stream -> (int * float array) Lstream.stored
    val compress_lsys :
      ('a * string Calc.t list) Lilis.lsystem ->
      Lilis.SymbEnv.t * (int * float array) Lstream.stored *
      int Lilis.Make.crules * 'Lilis.Make.crules
    val compress_lstream :
      Lilis.SymbEnv.t -> string Lilis.Make.lstream -> int Lilis.Make.lstream
    val uncompress_lstream :
      Lilis.SymbEnv.t -> int Lilis.Make.lstream -> string Lilis.Make.lstream
    val map_crules :
      ('-> 'b) -> 'Lilis.Make.crules -> 'Lilis.Make.crules
    val apply :
      ?n:int ->
      int Lilis.Make.crules ->
      int Lilis.Make.lstream -> int Lilis.Make.lstream
    val apply_complete :
      'Lilis.Make.crules -> int Lilis.Make.lstream -> 'Lilis.Make.lstream
    val eval_lsys_uncompress :
      int ->
      ('a * string Calc.t list) Lilis.lsystem ->
      (string * float array) Lstream.t
    val iter_complete :
      ((float array -> float) array -> float array -> unit) Lilis.Make.crules ->
      int Lilis.Make.lstream -> unit
    val eval_iter_lsys :
      int ->
      ('a * string Calc.t list) Lilis.lsystem ->
      store:bool ->
      ('-> (float array -> float) array -> float array -> unit) ->
      unit -> unit
    val eval_fold_lsys :
      int ->
      ('a * string Calc.t list) Lilis.lsystem ->
      store:bool ->
      ('-> (float array -> float) array -> '-> float array -> 'b) ->
      '-> 'b
  end