module Protein: sig  end
The definitions for the proteins in the Cytoplasm layer.  Proteins
can exist in three different representations: 
list
- an abstract representation in the module 
Protein.Abstract that
can be used as the simplest useful encoding of a protein; 
- an optimized representation in the module 
Protein.Optimized
that serves as the program which runs a procunit in the Incubator
underlying the Cytoplasm; 
- and the final representation in type 
Protein.t, which represents
instances of proteins that can be fed to the Incubator. 
 
module Abstract: sig  end
Contains the lightweight, live internal representation of an
abstract protein.
module Wizard: sig  end
Used to make abstract proteins with a table-driven interface.
module Optimized: sig  end
The implementation of this module contains the meat of the protein
execution model.
type t 
A concrete instance of an optimized protein.  This is the type of
the object which is placed in the Incubator/Cytoplasm layers of the
Monod model.
val make : ?stats:bool -> Optimized.t -> t
make withstats op creates a concrete instance of the optimized
protein op.  If withstats is true, the instance will collect
utilization statistics which can be extracted with get_stats below.
The default value of withstats is false, which makes for slightly
faster operation.
type globalstats = {
   | 
mutable click_count : int; | 
   | 
mutable lb_unimate_count : int; | 
   | 
mutable sb_unimate_count : int; | 
}
exception No_statistical_collection
val get_stats : t -> globalstats
val to_pu : t -> Incubator.Procunit.t
to_pu opi is a processing unit which can be fed to the Incubator
layer.