Section enum_red.
Variables (X Y : Type) (p : X -> Prop) (q : Y -> Prop).
Variables (f : X -> Y) (Hf : forall x, p x <-> q (f x)).
Variables (Lq : _) (qe : enum q Lq).
Variables (x0 : X).
Variables (d : Dis Y).
Fixpoint L (LX : enumT X) n :=
match n with
| 0 => []
| S n => L LX n ++ [ x | x ∈ L_T X n, (f x ∈ Lq n) ]
end.
End enum_red.

Lemma enumerable_red X Y (p : X -> Prop) (q : Y -> Prop) :
p ⪯ q -> enumerable__T X -> Dis Y -> enumerable q -> enumerable p.