Require Import
Undecidability.L.L
Undecidability.TM.TM
Undecidability.StackMachines.BSM
Undecidability.MinskyMachines.MM
Undecidability.FRACTRAN.FRACTRAN
Undecidability.H10.H10
Undecidability.MuRec.MuRec
Undecidability.MinskyMachines.MMA.
From Undecidability Require Import
TM_computable_to_BSM_computable
BSM_computable_to_MM_computable
MM_computable_to_FRACTRAN_computable
FRACTRAN_computable_to_Diophantine
Diophantine
Diophantine_to_MuRec_computable
MuRec_computable_to_L_computable
L_computable_to_TM_computable
L_computable_to_MMA_computable
MMA_computable_to_TM_computable.
Theorem equivalence {k} (R : Vector.t nat k -> nat -> Prop) :
(TM_computable R -> BSM_computable R) /\
(BSM_computable R -> MM_computable R) /\
(MM_computable R -> FRACTRAN_computable R) /\
(FRACTRAN_computable R -> Diophantine' R /\ functional R) /\
(Diophantine' R /\ functional R -> MuRec_computable R) /\
(MuRec_computable R -> L_computable R) /\
(L_computable R -> MMA_computable R) /\
(MMA_computable R -> TM_computable R).
Proof.
repeat split.
- apply TM_computable_to_BSM_computable.
- apply BSM_computable_to_MM_computable.
- apply MM_computable_to_FRACTRAN_computable.
- eapply FRACTRAN_computable_to_Diophantine; assumption.
- intros ? ? ? ? ?. eapply FRACTRAN_computable.FRACTRAN_computable_functional; eauto.
- intros []. eapply Diophantine_to_MuRec_computable; eauto.
- apply MuRec_computable_to_L_computable.
- apply L_computable_to_MMA_computable.
- apply MMA_computable_to_TM_computable.
Qed.
Undecidability.L.L
Undecidability.TM.TM
Undecidability.StackMachines.BSM
Undecidability.MinskyMachines.MM
Undecidability.FRACTRAN.FRACTRAN
Undecidability.H10.H10
Undecidability.MuRec.MuRec
Undecidability.MinskyMachines.MMA.
From Undecidability Require Import
TM_computable_to_BSM_computable
BSM_computable_to_MM_computable
MM_computable_to_FRACTRAN_computable
FRACTRAN_computable_to_Diophantine
Diophantine
Diophantine_to_MuRec_computable
MuRec_computable_to_L_computable
L_computable_to_TM_computable
L_computable_to_MMA_computable
MMA_computable_to_TM_computable.
Theorem equivalence {k} (R : Vector.t nat k -> nat -> Prop) :
(TM_computable R -> BSM_computable R) /\
(BSM_computable R -> MM_computable R) /\
(MM_computable R -> FRACTRAN_computable R) /\
(FRACTRAN_computable R -> Diophantine' R /\ functional R) /\
(Diophantine' R /\ functional R -> MuRec_computable R) /\
(MuRec_computable R -> L_computable R) /\
(L_computable R -> MMA_computable R) /\
(MMA_computable R -> TM_computable R).
Proof.
repeat split.
- apply TM_computable_to_BSM_computable.
- apply BSM_computable_to_MM_computable.
- apply MM_computable_to_FRACTRAN_computable.
- eapply FRACTRAN_computable_to_Diophantine; assumption.
- intros ? ? ? ? ?. eapply FRACTRAN_computable.FRACTRAN_computable_functional; eauto.
- intros []. eapply Diophantine_to_MuRec_computable; eauto.
- apply MuRec_computable_to_L_computable.
- apply L_computable_to_MMA_computable.
- apply MMA_computable_to_TM_computable.
Qed.