proposition: Lemma parse_complete_stabalize' {len0 valid str' it its} (n m : nat) (Hn : n >= length str') (Hm : m >= length str') : (minimal_parse_of_item (G := G) len0 valid (take n str') it * minimal_parse_of_production (G := G) len0 valid (drop n str') its) -> (minimal_parse_of_item (G := G) len0 valid (take m str') it * minimal_parse_of_production (G := G) len0 valid (drop m str') its).
proof: Proof. intros [pi pp]; split; [ eapply expand_minimal_parse_of_item; [ .. | eassumption ] | eapply expand_minimal_parse_of_production; [ .. | eassumption ] ]; try reflexivity; eauto. { clear -Hn Hm HSLP. abstract (rewrite !take_long by assumption; reflexivity). } { clear -Hn Hm HSLP. abstract (apply bool_eq_empty; rewrite drop_length; omega). } Defined.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.Lists.List Coq.Arith.EqNat Coq.Arith.Compare_dec Coq.Arith.Wf_nat Coq.ZArith.ZArith Fiat.Common.List.Operations Fiat.Parsers.ContextFreeGrammar.Core Fiat.Parsers.BaseTypes Fiat.Parsers.GenericBaseTypes Fiat.Parsers.GenericCorrectnessBaseTypes Fiat.Parsers.StringLike.Properties Fiat.Parsers.MinimalParse Fiat.Parsers.CorrectnessBaseTypes Fiat.Parsers.BaseTypesLemmas Fiat.Parsers.ContextFreeGrammar.Properties Fiat.Parsers.WellFoundedParse Fiat.Parsers.MinimalParseOfParse Fiat.Parsers.GenericRecognizer Fiat.Parsers.GenericRecognizerExt Fiat.Common.Wf Fiat.Common.Wf1 Fiat.Common.List.ListFacts Fiat.Common.NatFacts Fiat.Common.UIP Fiat.Common