proposition: Fact type_enum_t_vec X n : type_enum_t X -> type_enum_t (vec X n).
proof: Proof. intros HX. apply type_enum_opt_enum_t in HX. apply type_enum_opt_enum_t. generalize (opt_enum_t_vec n HX). apply opt_enum_t_image with (f := fun v => v). intros v; split; try tauto; exists v; auto. Qed.
imports: List Arith Bool Lia Eqdep_dec Undecidability.Synthetic.Definitions Undecidability.Synthetic.ReducibilityFacts Undecidability.Synthetic.InformativeDefinitions Undecidability.Synthetic.InformativeReducibilityFacts Undecidability.Shared.Libs.DLW.Utils(utils_tac utils_list utils_nat finite) Undecidability.Shared.Libs.DLW.Vec(pos vec) Undecidability.FOL.TRAKHTENBROT(notations utils fol_ops decidable)