proposition: Lemma forall_chars_get (str : String) P : forall_chars str P <-> (forall n ch, get n str = Some ch -> P ch).
proof: Proof. split. { intros H n ch Heq. rewrite get_drop in Heq. apply get_0 in Heq. apply forall_chars__split with (n := n) in H. destruct H as [_ H]. apply forall_chars__split with (n := 1) in H. destruct H as [H _]. rewrite forall_chars_singleton_length in H. { auto. } { apply length_singleton in Heq; assumption. } } { apply forall_chars_from_get. } Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Fiat.Parsers.StringLike.Core Fiat.Parsers.StringLike.Properties Fiat.Common