let next_step transition_rule configuration_in configuration_out =
(*   assert (Array.length neighbourhoods = Array.length configuration_in ); *)
  assert (Array.length configuration_in = Array.length configuration_out);
(*   Array.iteri *)
(*     (fun i neighb -> configuration_out.(i) <- transition_rule configuration_in neighb) *)
(*     neighbourhoods *)
  for i=0 to pred (Array.length configuration_in) do
    configuration_out.(i) <- transition_rule configuration_in i
  done