     with HHNM; use HHNM;

     package Network is
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
     Copyright : constant string :=
       "Network (C) 1994 David Wallace Croft.  All rights reserved.";
     ----------------------------------------------------------------------
     Neuron_Count_Default : constant positive := 3;
     Weight_Default       : constant float    := 0.01;
     Stimulus_Default     : constant float    := 1.0e-4;
     Learn_On_Default     : constant boolean  := false;
     Learn_Rate_Default   : constant float    := 1.0e-6;
     Speaker_On_Default   : constant boolean  := true;
     subtype Stimulus_Type is float;
     subtype Weight_Type   is float;
     ----------------------------------------------------------------------
     type Neurons_Type is array ( positive range <> ) of Neuron_Type;
     type Stimuli_Type is array ( positive range <> ) of Stimulus_Type;
     type Weights_Type is array ( positive range <>, positive range <> )
       of Weight_Type;
     ----------------------------------------------------------------------
     procedure Demo;
     procedure Learn (
       Weights      : in out Weights_Type;
       Neurons      : in     Neurons_Type;
       Learn_Rate   : in     float := Learn_Rate_Default );
     procedure Simulate (
       Weights      : in out Weights_Type;
       Stimuli_Init : in     float        := Stimulus_Default;
       Learn_On     : in     boolean      := Learn_On_Default;
       Learn_Rate   : in     float        := Learn_Rate_Default;
       Speaker_On   : in     boolean      := Speaker_On_Default );
     procedure Stimulate (
       Stimuli      :    out Stimuli_Type;
       Neurons      : in     Neurons_Type;
       Weights      : in     Weights_Type );
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
     end Network;
