proposition: Lemma nth_error_drop {A} x y (ls : list A) : nth_error (drop y ls) x = nth_error ls (x + y).
proof: Proof. revert x y; induction ls; simpl; intros. { destruct x, y; reflexivity. } { destruct y; simpl. { destruct x; simpl; repeat (f_equal; []); try reflexivity; omega. } { rewrite IHls; destruct x; simpl; repeat (f_equal; []); try reflexivity. rewrite Nat.add_succ_r; reflexivity. } } Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Coq.Lists.List Coq.Lists.SetoidList Coq.Bool.Bool Fiat.Common Fiat.Common.List.Operations Fiat.Common.Equality Fiat.Common.List.FlattenList Fiat.Common.LogicFacts