proposition: Lemma forall_chars_take (str : String) P : forall_chars str P <-> (forall n, forall_chars (take (S n) str) P).
proof: Proof. split. { intros H n. revert H; rewrite forall_chars__split; intro H; destruct H; eassumption. } { intro H. specialize (H (length str)). rewrite take_long in H by omega; assumption. } Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Fiat.Parsers.StringLike.Core Fiat.Parsers.StringLike.Properties Fiat.Common