Section mm_reco_dio_form.
Variable (HP : mm_recognisable_n).
(* There is a FRACTRAN program simulating R *)
Let FRACTRAN : { l | forall v, P v <-> l /F/ ps 1 * exp 1 v ↓ }.
Local Theorem mm_reco_dio_form : dio_rec_form_n.
End mm_reco_dio_form.
End Various_definitions_of_recursive_enum.
Local Hint Resolve dio_rec_form_elem  dio_rec_elem_single
dio_rec_single_µ_rec  µ_rec_mm_reco
mm_reco_dio_form : core.
Local Theorem mm_reco_fractran_1 : mm_recognisable -> fractran_recognisable.
Local Theorem fractran_dio_rec_single_1 : fractran_recognisable -> dio_rec_single.
Local Theorem dio_rec_single_mm_1 : dio_rec_single -> mu_recursive.
End Various_definitions_of_recursive_enum_1.
Local Hint Resolve µ_rec_mm_reco_1
mm_reco_fractran_1
fractran_dio_rec_single_1
dio_rec_single_mm_1 : core.

Theorem DPRM_1 (P : nat -> Prop) :
(mm_recognisable P       -> fractran_recognisable P)
* (fractran_recognisable P -> dio_rec_single P)
* (dio_rec_single P        -> mu_recursive P)
* (mu_recursive P           -> mm_recognisable P).