fact: Definition to_gregex (l: list positive): forall n m, kat_expr n m -> gregex (length l) (src_ fs) (tgt_ fs) n m := syntax.eval (fun a => match a return gregex _ (src_ fs) (tgt_ fs) (s' a) (t' a) with | inl a => g_var a | inr (n,p) => g_prd _ _ (lsyntax.eval (fun x => match idx x l with | Some i => lsyntax.e_var i | None => lsyntax.e_top: lsyntax.expr_ BL end) p) end).
imports: lsyntax ordinal lset positives kat gregex syntax