proposition: Lemma enum_term : list_enumerator__T L_term term.
proof: Proof. Proof with try (eapply cum_ge'; eauto; lia). intros t. induction t using term_rect. - exists (S x); cbn. eauto. - apply vec_forall_cml in H as [m H]. 2: exact L_term_cml. destruct (el_T F) as [m' H']. exists (S (m + m')); cbn. in_app 3. eapply in_concat. eexists. split. 1: apply in_map_iff; exists F; split. 1: reflexivity. 1: idtac... rewrite <- vecs_from_correct in H. eapply in_map_iff. exists v; repeat split. rewrite <- vecs_from_correct. intros x H''. specialize (H x H'')... Qed.
imports: Undecidability.Synthetic(Definitions DecidabilityFacts EnumerabilityFacts ListEnumerabilityFacts ReducibilityFacts) Undecidability(Shared.ListAutomation Shared.Dec) Coq(Eqdep_dec) Coq.Vectors.Vector Undecidability.Shared.Libs.PSL.Vectors(Vectors) EqdepFacts