fact: Definition interp_has_parse_term' {T} (interp_Term : forall {T}, Term interp_TypeCode T -> interp_TypeCode T) (is_valid_nonterminal : list nat -> nat -> bool) (strlen : nat) (char_at_matches_interp : nat -> Reflective.RCharExpr Ascii.ascii -> bool) (split_string_for_production : nat * (nat * nat) -> nat -> nat -> list nat) (t : has_parse_term interp_TypeCode T) : interp_TypeCode T := match t with | RFix2 G_length up_to_G_length f default valid_len valids nt_idx => Wf2.Fix2 (Wf.well_founded_prod_relation Wf_nat.lt_wf Wf_nat.lt_wf) (fun aa' : nat * nat => list nat -> nat -> forall a1 : nat, a1 <= fst aa' -> nat -> interp_TypeCode T) (fun (len0 valid_len0 : nat) (parse_nt : forall len0' valid_len : nat, Wf.prod_relation lt lt (len0', valid_len) (len0, valid_len0) -> list nat -> nat -> forall len : nat, len <= len0' -> nat -> interp_TypeCode T) (valids : list nat) (offset len : nat) (pf : len <= len0) (nt : nat) => option_rect (fun _ : option (interp_TypeCode (cnat --> cnat --> cnat --> T)) => interp_TypeCode T) (fun parse_nt => interp_Term f (fun n : interp_TypeCode cnat => char_at_matches_interp n ) (fun n : interp_TypeCode (cnat * (cnat * cnat)) => split_string_for_production n ) len0 valid_len parse_nt valids offset len nt) (interp_Term default) (@step_option_rec (interp_TypeCode T) is_valid_nonterminal len0 valid_len0 parse_nt G_length up_to_G_length valids offset len nt)) strlen valid_len valids 0 strlen (le_n _) nt_idx end.
imports: Fiat.Parsers.Reflective.Syntax Fiat.Parsers.Reflective.ParserSyntax Fiat.Parsers.Reflective.Semantics Fiat.Parsers.Splitters.RDPList Fiat.Parsers.GenericRecognizer Fiat.Common.Wf Fiat.Common.Wf2 Coq.Arith.PeanoNat