package Neuron is
---------------------------------------------------------------------------
---------------------------------------------------------------------------
subtype Axon_Output_Type is float;
type Synapse_Input_Type  is array ( natural range <> ) of float;
type Synapse_Weight_Type is array ( natural range <> ) of float;
type Neuron_Type ( Synapse_Count: natural := 1 ) is
       record
	 Synapse_Input: Synapse_Input_Type ( 1..Synapse_Count )
	   := ( others => 0.0 );
	 Synapse_Weight: Synapse_Weight_Type ( 1..Synapse_Count )
	   := ( others => 0.0);
	 Threshhold: float := 0.5;
	 Axon_Output: Axon_Output_Type := 0.0;
       end record;
---------------------------------------------------------------------------
---------------------------------------------------------------------------
procedure Initialize ( Neuron: in out Neuron_Type );
procedure Show_State ( Neuron: in Neuron_Type );
procedure Think      ( Neuron: in out Neuron_Type );
---------------------------------------------------------------------------
---------------------------------------------------------------------------
end Neuron;