Goal:
  
  A : Type
  a : A
  l : list A
  IHl : ∀ n : nat, (∑ x : A, nth_error l n = Some x) <~> n < #|l|
  n : nat
  l0 : (∑ x : A, nth_error l n = Some x) → n < #|l|
  s : n < #|l| → ∑ x : A, nth_error l n = Some x
  ============================
   ((∑ x : A, nth_error l n = Some x) <~> S n < S #|l|)


DEBUG:Going to execute:
fun => <coq-core.plugins.ltac::split@0>

Goals:
  
  A : Type
  a : A
  l : list A
  IHl : ∀ n : nat, (∑ x : A, nth_error l n = Some x) <~> n < #|l|
  n : nat
  l0 : (∑ x : A, nth_error l n = Some x) → n < #|l|
  s : n < #|l| → ∑ x : A, nth_error l n = Some x
  ============================
   ((∑ x : A, nth_error l n = Some x) → S n < S #|l|)

  
  A : Type
  a : A
  l : list A
  IHl : ∀ n : nat, (∑ x : A, nth_error l n = Some x) <~> n < #|l|
  n : nat
  l0 : (∑ x : A, nth_error l n = Some x) → n < #|l|
  s : n < #|l| → ∑ x : A, nth_error l n = Some x
  ============================
   (S n < S #|l| → ∑ x : A, nth_error l n = Some x)


DEBUG:Going to execute:
intros

Goals:
  
  A : Type
  a : A
  l : list A
  IHl : ∀ n : nat, (∑ x : A, nth_error l n = Some x) <~> n < #|l|
  n : nat
  l0 : (∑ x : A, nth_error l n = Some x) → n < #|l|
  s : n < #|l| → ∑ x : A, nth_error l n = Some x
  X : ∑ x : A, nth_error l n = Some x
  ============================
   (S n < S #|l|)

  
  A : Type
  a : A
  l : list A
  IHl : ∀ n : nat, (∑ x : A, nth_error l n = Some x) <~> n < #|l|
  n : nat
  l0 : (∑ x : A, nth_error l n = Some x) → n < #|l|
  s : n < #|l| → ∑ x : A, nth_error l n = Some x
  H : S n < S #|l|
  ============================
   (∑ x : A, nth_error l n = Some x)


DEBUG:Going to execute:
auto with arith