proposition: Lemma after_last_char_such_that_0 (str : String) P : is_after_last_char_such_that str 0 P <-> forall_chars str (fun ch => ~P ch).
proof: Proof. unfold is_after_last_char_such_that. rewrite drop_0. split. { intros; destruct_head and. assumption. } { split; [ assumption | ]. apply for_last_char_nil. rewrite take_length; reflexivity. } Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Fiat.Parsers.StringLike.Core Fiat.Parsers.StringLike.Properties Fiat.Parsers.StringLike.ForallChars Fiat.Parsers.StringLike.LastChar Fiat.Common