Require Undecidability.SemiUnification.Reductions.RU2SemiU_to_SemiU.
Require Undecidability.SemiUnification.Reductions.SSemiU_to_RU2SemiU.
Require Undecidability.SemiUnification.Reductions.CSSM_UB_to_SSemiU.
Require Undecidability.StackMachines.Reductions.SMNdl_UB_to_CSSM_UB.
Require Undecidability.StackMachines.Reductions.CM1_HALT_to_SMNdl_UB.
Require Undecidability.CounterMachines.Reductions.MM2_HALTING_to_CM1_HALT.
Require Undecidability.MinskyMachines.Reductions.BSM_HALTING_to_MM2_HALTING.
Require Undecidability.StackMachines.Reductions.iPCPb_to_BSM_HALTING.
Require Undecidability.PCP.Reductions.HaltTM_1_to_iPCPb.

(* Comprehensive chain of many-one reductions from Turing machine halting to semi-unification HaltTM 1 : Turing machine halting iPCPb : indexed, binary Post correspondence problem BSM_HALTING : binary stack machine halting MM2_HALTING : Minsky machine (with 2 registers) halting CM1_HALT : one-counter machine halting SMNdl_UB : uniform boundedness of deterministic, length-preserving stack machines CSSM_UB : uniform boundedness of confluent, simple stack machines SSemiU : simple semi-unification RU2SemiU : right-uniform, two-inequality semi-unification SemiU : semi-unification *)
Theorem HaltTM_1_chain_SemiU :
HaltTM 1 ⪯ iPCPb /\
iPCPb ⪯ BSM_HALTING /\
BSM_HALTING ⪯ MM2_HALTING /\
MM2_HALTING ⪯ CM1_HALT /\
CM1_HALT ⪯ SMNdl_UB /\
SMNdl_UB ⪯ CSSM_UB /\
CSSM_UB ⪯ SSemiU /\
SSemiU ⪯ RU2SemiU /\
RU2SemiU ⪯ SemiU.