let lle =
    let pred_range = Array.length light_cones.(0).(perturbation_range) |> pred in
  fun cell ->
    let result = ref 0. in
    let config = configurations.(0) in
    let light_cone = light_cones.(cell) in
    let perturbed_cells = light_cone.(perturbation_range) in
    let rec iter i =
      let perturbed_cell = perturbed_cells.(i) in
      Array.iter
        (fun state ->
           let original_state = config.(perturbed_cell) in
           config.(perturbed_cell) <- state;
           if i < pred_range
           then iter (succ i)
           else (
             for j = 1 to depth do
               perturbed_next_step j light_cone.(j + perturbation_range)
             done;
             result := !result +. treat_differences light_cone;
             restore_configurations light_cone);
           config.(perturbed_cell) <- original_state;)
        Auto.states; in
    iter 0;
    !result /. normalizer