fact: Fixpoint Forall_parse_of {str pats} (p : parse_of G str pats) := match p with | ParseHead pat pats p' => Forall_parse_of_production p' | ParseTail _ _ p' => Forall_parse_of p' end with Forall_parse_of_production {str pat} (p : parse_of_production G str pat) := match p return Type with | ParseProductionNil pf => unit | ParseProductionCons pat strs pats p' p'' => (Forall_parse_of_item' (@Forall_parse_of) p' * Forall_parse_of_production p'')%type end.
imports: Coq.Lists.List Coq.Arith.PeanoNat Fiat.Common Fiat.Common.UIP Fiat.Parsers.ContextFreeGrammar.Core Fiat.Parsers.ContextFreeGrammar.Equality